【发布时间】:2019-09-23 14:09:21
【问题描述】:
例如,如果我在APMonitor Modeling Language上使用下面的代码
Variables
x2 >=0, <=100
x3 >=0, <=100
End Variables
Equations
x2>=0
x3>=0
! best known objective =
minimize ((0.5-x2)/(0.5-x2+x3))/0.3
End Equations
End Model
我明白了:
Successful Solution
Objective Value = 3.33333333
Name Lower Value Upper
ss.x2 0.0000E+00 1.4333E+01 1.0000E+02
ss.x3 0.0000E+00 0.0000E+00 1.0000E+02
ss.slk_1 0.0000E+00 0.0000E+00 ---
但是当我尝试在 R 中使用 DEoptim 进行相同的优化时
f<- function(x){
x2 <- x[2] #should be x[1]
x3 <- x[3] #should be x[2]
(((0.5-x2)/(0.5-x2+x3))/0.2) #note the minor but inconsequential difference
}
set.seed(1234)
DEoptim(f, lower = c(0,0), upper = c(100,100), DEoptim.control(NP = 100))
outDEoptim <- DEoptim(f, lower = c(0,0), upper = c(100,100),DEoptim.control(trace = TRUE, NP = 80,
itermax = 1000, F = 1.2, CR = 0.7))
plot(outDEoptim)
outDEoptim
我得到了非常不同和奇怪的结果:
$`optim`
$`optim`$`bestmem`
par1 par2
46.57015 46.07015
$`optim`$bestval
[1] -Inf
$`optim`$nfeval
[1] 330
$`optim`$iter
[1] 164
显然,我缺少一些东西。提前感谢您的帮助。
【问题讨论】:
-
APmodeling 结果显然是错误的(或者可能解决了不同的问题?)目标显然没有在该组值处最小化,而 DEoptim 确实找到了一个无限可能的最小值。
-
有一个关于优化的 CRAN 任务视图。
-
非常有帮助。谢谢!
标签: r function optimization mathematical-optimization nonlinear-optimization