R和Maple优化比较

时间:2014-03-04 17:42:31

标签: r mathematical-optimization maple

我想在Maple和R中最大化以下功能:

首先,让我们用枫来做:

f := (1.98487000395764*(1-1/(1+exp(-2.*t))))/(1+exp(-2.*t))-.309660918271578*t*(1-1/(1+exp(-2.*t)))/(1+exp(-2.*t))+2.72769846075997*t^2*(1-1/(1+exp(-2.*t)))/(1+exp(-2.*t))+(6.98540143163400*(1-1/(1+exp(-2.*t+2.))))/(1+exp(-2.*t+2.))-(.642949404838428*(t-1.))*(1-1/(1+exp(-2.*t+2.)))/(1+exp(-2.*t+2.))+12.4616594684298*(t-1.)^2*(1-1/(1+exp(-2.*t+2.)))/(1+exp(-2.*t+2.))-2:

plot(f, t = -5 .. 5)

plot by maple

NLPSolve(f, t = xL .. xU, method = branchandbound, maximize);

enter image description here

从图中可以看出,全局最大值大于0,但是maple作为全局最大值返回0。 现在,让我们通过复制确切的函数在R中尝试它:

f.maple <- function(t){
  out <- (1.98487000395764*(1-1/(1+exp(-2.*t))))/(1+exp(-2.*t))-.309660918271578*t*    (1-1/(1+exp(-2.*t)))/(1+exp(-2.*t))+2.72769846075997*t^2*(1-1/(1+exp(-2.*t)))/(1+exp(-2.*t))+(6.98540143163400*(1-1/(1+exp(-2.*t+2.))))/(1+exp(-2.*t+2.))-(.642949404838428*(t-1.))*(1-1/(1+exp(-2.*t+2.)))/(1+exp(-2.*t+2.))+12.4616594684298*(t-1.)^2*(1-1/(1+exp(-2.*t+2.)))/(1+exp(-2.*t+2.))-2
  return(-out)
}
t = seq(lx, ux, by = .1)
plot(t, -f.maple(t), type = "l")   

R plot

require(Rsolnp)  
res <- gosolnp(fun = f.maple, LB = lx, UB = ux, n.sim = 50, n.restarts = 1)

> res$par
[1] 0.1963055

> -res$values[3]
[1] 0.6511135

可以看出,R给出0.19631作为似乎是真的函数的最大值:

 -f.maple(0)
 [1] 0.6055397

 -f.maple(0.1963055)
  0.6511135

我对Maple优化过程有点困惑,因为0甚至不是被捕获的局部最大值,也不知道为什么maple优化过程返回0而不是0.1963055

任何暗示都将受到赞赏。 谢谢

0 个答案:

没有答案