【发布时间】:2020-11-24 20:46:43
【问题描述】:
我试图找到这个目标函数的最大值:
f(x1,x2,x3) = 1300x1 + 600x2 + 500x3
受以下限制
300x1 + 150x2 + 100x3
90x1 + 30x2 + 40x3
x1
x1、x2、x3 >= 0
下面是我正在使用的代码,它没有返回我正在寻找的值。变量的输出为 9.453022e-12 3.272252e-12 5.548419e-14,总值为 -1.428002e-08。
我是 R 新手。我做错了什么?谢谢。
f=function(x) -(1300*x[1]+600*x[2]+500*x[3]) # minimize -f(x,y,z)
inequalities=function(x){ #define the ineqaulities function
h=0
h[1]=-(300*x[1]+150*x[2]+100*x[3]-4000)
h[2]=-(90*x[1]+30*x[2]+40*x[3]-1000)
h[3]=-(1*x[1]+0*x[2]+0*x[3]-5)
return(h)}
g=function(x){ #x,y,z > 0
h=0
h[1]=x[1]
h[2]=x[2]
h[3]=x[3]
return(h)}
p0=c(0,0,0) #give the starting point
y=constrOptim.nl(p0,f,hin=inequalities,heq=g);
print(y$par)
print(y$value)
【问题讨论】:
标签: r optimization linear-algebra linear-programming