function z= lirun( x )
x11=x(1);x12=x(2);x13=x(3);x14=x(4);x21=x(5);x22=x(6);x23=x(7);x24=x(8);x31=x(9);x32=x(10);x33=x(11);x34=x(12);
y=240x11+270x12+180x13+230x14+260x21+270x22+210x23+240x24+210x31+200x32+220x33+20x34;
z=-y;
end % 首先定义函数,编辑在m文件里面,然后保存。
>> A=[1 1 1 1 0 0 0 0 0 0 0 0;0 0 0 0 1 1 1 1 0 0 0 0;0 0 0 0 0 0 0 0 1 1 1 1 ;1 0 0 0 1 0 0 0 1 0 0 0;-1 0 0 0 -1 0 0 0 -1 0 0 0;0 1 0 0 0 1 0 0 0 1 0 0;0 -1 0 0 0 -1 0 0 0 -1 0 0;0 0 1 0 0 0 1 0 0 0 1 0;0 0 -1 0 0 0 -1 0 0 0 -1 0;0 0 0 1 0 0 0 1 0 0 0 1;0 0 0 -1 0 0 0 -1 0 0 0 -1];
b=[50; 60; 50;80;-30;130;-60;50;-20;30;-20]; %然后用矩阵来描述约束条件。。
>> x0=20ones(1,12);lb=zeros(1,12);
>> [x,f]=fmincon('lirun',x0,A,b,[],[],lb,[],[]);
>> -lirun(x) %输出最大利润
>> x %输出此时的x的值
结果如下
ans =
39800
x =
-00000 500000 -00000 0 124689 275311 -00000 200000 175311
00000 324689 -00000
在第二个条件下的结果如下
ans =
73100
x =
-00000 1000000 00000 0 600000 300000 0 300000 200000
-00000 500000 -00000
若!记得我们的承诺,哈哈 ^^用lingo求解的,程序如下:
model:
max=(2-09x1)(200-10x2)04(1-(3-x1)/09(x2-x1))-09x1(200-10x2)004(1-(3-x1)/09(x2-x1)^2);
(200-20x2+10x1)004(09(x2-x1)-3+x1)+008(3-x1)=0;
20/9>x1;
x2<20;
3<x2;
x1+9x2>30;
end
结果为y的最大值为:5130279
此时x1为:1981881
x2为:1100527
希望回答对你有帮助····
用极小值函数fminsearch(),可求得其最大值。即与极小值函数相反-f(C)
当C=3360633499s时,f(C)有最大值 64723。
求解过程如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)