目标函数有两个未知变量,怎么用matlab求最优解?
以上这个式子比较复杂,未知变量Q和p的约束条件都是大于零,求Z最大值时的最优解,有哪位大神可以提供matlab或者Lingo的求解程序给我,不胜感激!...
以上这个式子比较复杂,未知变量Q和p的约束条件都是大于零,求Z最大值时的最优解,有哪位大神可以提供matlab或者Lingo的求解程序给我,不胜感激!
展开
2个回答
展开全部
参考代码(里面有些系数请再仔细检查,我虽已尽量小心,但不敢保证录入无误):
z = @(x)(1.8-x(1))/400*x(2)^2 + (-1.8*x(1)^2+146.24*x(1)-1270)/50*x(2) ...
+(-3.24*x(1)^3+262.872*x(1)^2-3771*x(1)-82375)/100;
x = fmincon(@(x)-z(x),[0 0],[],[],[],[],[0 0])
得到的结果为:
x =
35.6887 195.5207
其中第一个值为p,第二个为Q。目标函数为:
>> z(x)
ans =
2.9446e+003
需要注意的是初值的选择需要慎重,选择不当很容易落在局部最优点(0,0)处。
优化结果绘制二维图如下:
h=ezmesh(@(p,Q)arrayfun(@(x1,x2)z([x1,x2]),p,Q),[0 50 0 300]);
set(h,'edgealpha',0.2)
hold on
plot3(x(1),x(2),z(x),'rp')
view(-20,6)
hold off
这里需要注意,ezmesh那句不能简单写成ezmesh(@(x1,x2)z([x1 x2])),因为匿名函数z不支持向量运算。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询