【发布时间】:2014-02-12 22:49:31
【问题描述】:
我尝试最小化以下功能:
func <- function(qq){
x <- qq[1]
y <- qq[2]
output <- 1 - 2 * x + x^2 - 2 * y + 2 * x * y + y^2
return(output)
}
当 x+y=1 且 0
cons <- function(qq)
sum(qq)
然后我应用了 gosolnp 函数:
install.packages("Rsolnp")
require(Rsolnp)
gosolnp(fun = func, LB = c(0, 0), UB = c(1, 1), eqfun = cons, eqB = 1)
res$pars
[1] 0.8028775 0.1971225
res$value
[1] 2.606528e-09 -5.551115e-17
答案应该是 x = 0 和 y = 1,但是你可以在每次运行 gosolnp 时尝试,你会得到新的点,在那个点上 func 大约为 0(并不完全是)。 Mathematica 和 Maple 非常快地对此函数进行了优化,并给出了正确的答案,即 x = 0 和 y = 1,但是 R 中的每次运行都会给出一个不正确的新解决方案。
我还在阿拉巴马州或DEoptim中尝试了另一个优化函数spg(),但问题仍未解决。
所以我的问题是:
1- 有什么解决方案可以最小化 R 中的 func 吗?
2- R 和 Mathematica 的精度之间有什么区别,为什么 Mathematica 可以给我准确的答案,而 R 不能?
提前谢谢你
【问题讨论】:
标签: r wolfram-mathematica precision nonlinear-optimization