当前位置:   article > 正文

数学建模-多目标规划

数学建模-多目标规划

例:求下列函数最大值

Matlab 程序:

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

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

  1. c=[3 -2];
  2. A=[2,3;2,1];b=[18;10];
  3. Aeq=[];beq=[];
  4. vlb=[0;0];vub=[];
  5. [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)

回车得:

x =

    0.0000

    6.0000

fval =

  -12.0000

从而最大值为12

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

  1. c=[-4 -3];
  2. A=[2,3;2,1];b=[18;10];
  3. Aeq=[];beq=[];
  4. vlb=[0;0];vub=[];
  5. [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)

回车得:

x =

    3.0000

    4.0000

fval =

  -24.0000

从而最大值为24

合在一起求两个函数的最大值。

先建立fun.m函数

  1. function  f=fun(x);
  2.      f(1)=3*x(1)-2*x(2);
  3. f(2)=-4*x(1)-3*x(2);
  4. 然后建立主程序:
  5. x0=[1 ,1];%或用rand(2,1)
  6. c1=[3,-2];
  7. c2=[-4,-3];
  8. A=[2,3;2,1];b=[18;10];
  9. Aeq=[];beq=[];
  10. vlb=[0;0];vub=[];
  11. [x1,g1]=linprog(c1,A,b,Aeq,beq,vlb,vub);%求第一个目标函数的目标值
  12. [x2,g2]=linprog(c2,A,b,Aeq,beq,vlb,vub);%求第二个目标函数的目标值
  13. g3=[g1;g2];%目标goal的值
  14. weight=abs(g3);% 这里的权重其实是goal中值的绝对值
  15. [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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/55571
推荐阅读
相关标签
  

闽ICP备14008679号