赞
踩
例:求下列函数最大值

Matlab 程序:
第一个函数最大值(我们先求最小值)
- c=[3 -2];
-
- A=[2,3;2,1];b=[18;10];
-
- Aeq=[];beq=[];
-
- vlb=[0;0];vub=[];
-
- [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)
回车得:
x =
0.0000
6.0000
fval =
-12.0000
从而最大值为12
第二个函数最大值(我们先求最小值)
- c=[-4 -3];
-
- A=[2,3;2,1];b=[18;10];
-
- Aeq=[];beq=[];
-
- vlb=[0;0];vub=[];
-
- [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)
回车得:
x =
3.0000
4.0000
fval =
-24.0000
从而最大值为24
合在一起求两个函数的最大值。
先建立fun.m函数
- function f=fun(x);
-
- f(1)=3*x(1)-2*x(2);
-
- f(2)=-4*x(1)-3*x(2);
-
- 然后建立主程序:
-
- x0=[1 ,1];%或用rand(2,1)
-
- c1=[3,-2];
-
- c2=[-4,-3];
-
- A=[2,3;2,1];b=[18;10];
-
- Aeq=[];beq=[];
-
- vlb=[0;0];vub=[];
-
- [x1,g1]=linprog(c1,A,b,Aeq,beq,vlb,vub);%求第一个目标函数的目标值
-
- [x2,g2]=linprog(c2,A,b,Aeq,beq,vlb,vub);%求第二个目标函数的目标值
-
- g3=[g1;g2];%目标goal的值
-
- weight=abs(g3);% 这里的权重其实是goal中值的绝对值
-
- [x,fval]=fgoalattain('fun',x0,g3,weight,A,b,Aeq,beq,vlb,vub)

回车得:
x =
0.5625 5.6250
fval =
-9.5625 -19.1250
当想x(1)=0.5625,x(2)=5.625时,两目标函数最大值分别为f(1)=9.5625, f(2)=19.125
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。