全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4639 2
2014-09-15
悬赏 10 个论坛币 已解决
刚接触R语言菜鸟,问题小白不要见怪。

题目:

A car takes 40 hours of labor and 1 ton of steel

A truck takes 60 hours and 3 hours of steel

Resources: 1600 hours of labor and 70 tons of steel eachweek.



建立一个R代码,使过高计划产量(例如30辆轿车与20辆卡车),或者过低的计划产量逐步调整到最优化水平(最大量生产+资源剩余也不多).


起始代码:

factory <- matrix(c(40,1,60,3),nrow=2,
   dimnames=list(c("labor","steel"),c("cars","trucks")))
available <- c(1600,70); names(available) <- rownames(factory)
slack <- c(8,1); names(slack) <- rownames(factory)
output <-c(30,20); names(output) <- colnames(factory)

passes <- 0 # How many times have we  been around the loop?
repeat {   
     passes <- passes + 1   
     needed <- factory %*% output # What do we need for that output level?   # If we're not using too much, and are within the slack, we're done   
if (all(needed <= available) &&       all((available - needed) <= slack)) {     
break()   
}   
# If we're using too much of everything, cut back by 10%   if (all(needed > available)) { output <- output * 0.9     next()   
}   

# If we're using too little of everything, increase by 10%   if (all(needed < available)) {  output <- output * 1.1     next()   
}   

# If we're using too much of some resources but not others, randomly   # tweak the plan by up to 10%   
output <- output * (1+runif(length(output),min=-0.1,max=0.1))
}



要求:以for loop 代替上面代码里的repeat loop.


问题来了:在建立 for loop() 时候,()里面循环的次数passes不是预先知道的,所以无法设定。那如何让R在函数达到最优化的时候,自动放弃执行for loop 命令里面剩余的循环次数。(例如假设最大的循环次数设定为2000,达到最优化的时候,循环次数是1200,如何让R放弃执行剩余的800次?)





最佳答案

lww1993 查看完整内容

你直接用for(i in 1:1e3)代替repeat就可以了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-9-15 15:46:59
你直接用for(i in 1:1e3)代替repeat就可以了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-9-15 16:31:51
这里的break函数会直接跳出循环。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群