如何使用constrOptim设置具有线性不等式约束的非线性目标函数(spillman)?

时间:2016-06-17 09:37:05

标签: r optimization linear-algebra linear-programming

我正在尝试最大化形式的利润函数(a-bc ^ x1) Py - (Px X1) 其中a-bc ^ x1是溢出生产函数(y = a-bc ^ x1)。我通过将生产函数乘以表示为Py的商品的单价将生产函数转换为收益函数。 Px * x1是成本函数,输入x1乘以Px; Px是x1的单价。

上述约束5000的预算。所以Px * X1 <= 5000且X1> = 0, 单位价格Py和Px分别为100和200,我将约束重写为 0℃; = X1&LT; = 25。 我已经设置了我的目标函数,如下所示

    fn=function(x){
      x1=x[1]
      a=3474;b=1325;c=0.93575;Py=100;Px=200
      -(a-b*(c^x1))*(Py)-(a-b)-(x1*Px)

}

在编写ui,ci和theta的时候,我的挑战就出现了,我已尝试如下;

A=matrix(c(1,0,-1,0),ncol=2,byrow=TRUE)
B=c(0,-25)
xinit=c(1,1)
xans2=constrOptim(theta=xinit, f=fn, grad=NULL, ui=A, ci=B,method = "Nelder-Mead")
xans2$par

我得到了25.00000,-9.89082的答案,这很奇怪,因为我只期望x1的一个值。有人可以帮我确定我的设置中的问题吗?

1 个答案:

答案 0 :(得分:0)

来自?optim

对于optim,包含组件的列表:

par:找到的最佳参数集。

value:对应于par。

的fn值

您要求xans2$par根据您输入的功能为您提供最佳参数集。

xans2$value给出与这些参数对应的fn值。

如果您正在寻找单个值,我猜这就是您想要的。

xans2$value
[1] -329360