数学建模-多目标规划

例:求下列函数最大值

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

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-02 19:36:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-02 19:36:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-02 19:36:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-02 19:36:02       20 阅读

热门阅读

  1. 轻松使用python将PDF转换为图片(成功)

    2024-02-02 19:36:02       34 阅读
  2. 考研英语单词20

    2024-02-02 19:36:02       27 阅读
  3. 响应标头Allow-Headers和Expose-Headers的区别和用法

    2024-02-02 19:36:02       29 阅读
  4. vscode git stash apply stash@{1}不生效

    2024-02-02 19:36:02       23 阅读
  5. 代码随想录算法训练营29期Day37|LeetCode 738,968

    2024-02-02 19:36:02       37 阅读
  6. android 11 自定义Android device owner 接口

    2024-02-02 19:36:02       31 阅读