缺少值,其中TRUE / FALSE需要优化时出错

时间:2018-07-25 21:02:43

标签: r optimization

这是我的第一篇文章,希望我不要犯错。

我正在尝试使用NlcOptim解决具有R中的非线性等式约束的优化问题。

我定义了我的目标函数以及约束,但是当我运行它时,它给了我:

if(maxga> 0){:需要TRUE / FALSE时缺少值

我已经查看了NlcOptim的详细信息以弄清楚“ maxga”是什么,但是不幸的是,我还是一个新手,无法弄清楚这个问题。

这是我的代码:

    beta<-2
    alpha<-3
    theta__<-function(x){((beta+1)/2)*(x[3]+x[4])+(alpha/2)*((x[2]-x[1])/(x[4]-x[3]))}
    profit__A<-function(x) -x[1]*pnorm(theta__(x))
    con=function(x){
       f=NULL
       f=rbind(f,2*(x[4]-x[3])*(1- pnorm(theta__(x)))/(dnorm(theta__(x)*alpha))-x[2])
       f=rbind(f,2*(x[4]-x[3])*(pnorm(theta__(x)))/(dnorm(theta__(x)*alpha))-x[1])
return(list(ceq=f,c=NULL))}
      x0=c(3,2,1,0) 
      solnl(x0,objfun=profit__A,confun=con)

1 个答案:

答案 0 :(得分:0)

我知道回答这个问题已经很晚了。但是,昨晚我遇到了同样的问题。我在网上找不到这个问题的答案。

我设法通过将目标函数的返回值除以1000来解决了该错误(它也适用于100和10,但不适用于5)。我想目标函数的最大值对于计算过程很重要。

我希望它可以帮助将来遇到此问题的其他人!