matlab 线性规划 目标函数求最小值
如何用matlab求图一δ的最小值,并且求出w1到w7的最优值?该问题可以使用fmincon函数解决,其解决方法如下:
1、创建自定义目标函数,myfun(k),即
f = delta;
2、创建自定义约束条件函数,mycon(k),即
c1=abs(w7/w1)-9-delta;
c2=abs(w7/w2)-8-delta;
c3=abs(w7/w3)-7-delta;
c4=abs(w7/w4)-7-delta;
c5=abs(w7/w5)-7-delta;
c6=abs(w7/w6)-7-delta;
c7=abs(w1/w4)-8-delta;
c8=abs(w2/w4)-7-delta;
c9=abs(w3/w4)-8-delta;
c10=abs(w5/w4)-1-delta;
c11=abs(w6/w4)-3-delta;
c12=abs(w7/w4)-9-delta;
ceq=1-(w1+w2+w3+w4+w5+w6+w7);
3、确定初值δ0,ω10,ω20,ω30,ω40,ω50,ω60,ω70
4、确定δ,ω1,ω2,ω3,ω4,ω5,ω6,ω7的上下限值,即
lb=zeros(1,9);
ub=ones(1,9);
5、使用fmincon()函数求ω1,ω2,ω3,ω4,ω5,ω6,ω7的最优解,δ的最小值,即
[k,fval,exitflag] = fmincon(@(k) myfun(k),k0,[],[],[],[],lb,ub,@(k) mycon(k));
这里的k对应于δ,ω1,ω2,ω3,ω4,ω5,ω6,ω7
6、验证计算结果,如下所示。
由上图条件可写程序:
Aeq=[];beq=[];
A=-[1 4 2;3 2 0 ];b=-[8;6];
vlb=zeros(1,3);vub=[];
f=[2 3 1];
[x,fval,exitflag,output]=linprog(f,A,b,[],[],vlb,[])
运行结果:
Optimal solution found.
x = 2.0000
0
3.0000
fval = 7
exitflag = 1
output =
包含以下字段的 struct:
iterations: 2
constrviolation: 0
message: 'Optimal solution found.'
algorithm: 'dual-simplex'
firstorderopt: 8.8818e-16
也就是说,最优值是7
额~是不是没写清楚,就是我知道图二怎么写,但是现在是不知道怎么写图一的。。
从你的图中看不出,w1,w2,w3与x1,x2,x3是啥关系。
2021-11-01
function [c,ceq]=xiandaicon(x) %构造约束函数 c=[]; ceq=100-x(1)^3*x(2)*(12-exp(-x(1)/x(2))); function y=xiandaiobj(x) %构造目标函数,命名为xiandaiobj.m y=x(1)*x(2)^3 lb=[0 0]; ub=[]; x0=[1 1]; [x,fval]=fmincon(@xiandaiobj,x0,[]...
ceq=100-x(1)^3*x(2)*(12-exp(-x(1)/x(2))) 请问这个是什么意思额