数学建模-多目标规划

例:求下列函数最大值

数学建模-多目标规划_第1张图片

Matlab 程序:

  1. 若分开求解,即分别求出第一个函数和第二个函数的最大值,我们试一下。

第一个函数最大值(我们先求最小值)

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

你可能感兴趣的:(数学建模,算法,j建模)