求解多目标线性规划的基本思想是将多目标转化为单目标,常见的方法有理想点法线性加权法最大最小法目标规划法模糊数学解法等。这里就这几种方法进行举例说明,并用matlab实现。

一、多目标线性规划模型

多目标线性规划模型是有两个或两个以上的目标函数,且所有的目标函数和约束条件都是线性的,数学模型表示为:

我们记

则上述目标规划可简化为:

二、MATLAB优化工具箱常用函数

常用的求解最优化问题的函数,有线性规划问题的linprog,非线性规划问题的fmincon,最大最小问题的fminimax,求解多目标的fgoalattain等。调用形式分别为:

三、多目标线性规划的求解方法及MATLAB实现

1.理想解法:

解:先对单目标进行求解

对第一个目标求解的matlab程序为:

1 f=[3;-2];

2 a=[2 3;2 1];

3 b=[18;10];

4 lb=[0;0];

5 ub=[];

[x,favl]=linprog(f,a,b,[],[],lb,ub);

输出结果为:x=0.0000 6.0000,favl=-12.0000,所以最大值为12.0000

对第二个目标求解的matlab程序为:

1 f=[-4;-3];

2 a=[2 3;2 1];

3 b=[18;10];

4 lb=[0;0];

5 ub=[];

[x,favl]=linprog(f,a,b,[],[],lb,ub);

输出结果为:x=3.0000 4.0000,favl=-24.0000,所以最大值为24.0000

于是得到理想点:(12,24)

Matlab程序为:

1 x0=[1;1];

2 a=[2 3;2 1];

3 b=[18;10];

4 lb=[0;0];

5 ub=[];

6 x=fmincon('((-3*x(1)+2*x(2)-12)^2+7 (4*x(1)+3*x(2)-24)^2)^(1/2)',x0,a,b,[],[],lb,ub);

7 f1=-3*x(1)+2*x(2);

f2=4*x(1)+3*x(2);

2.线性加权法:

求解的matlab程序为:

1 f=[-0.5;-2.5];

2 a=[2 3;2 1];

3 b=[18;10];

4 lb=[0;0];

5 ub=[];

x=linprog(f,a,b,[],[],lb,ub);

输出结果为:x1=0.0000,x2=6.0000,对应的目标值为f1=12.0000,f2=18.0000

3.最大最小法

首先编写M函数文件:

1 function f=mutiplesubjiect(x)

2 f(1)=3*x(1)-2*x(2);

f(2)=-4*x(1)-3*x(2);

然后输入

1 >> x0=[0;0];

2 a=[2 3;2 1];

3 b=[18;10];

4 lb=[0;0];

[x,favl]=fminimax('mutiplesubjiect',x0,a,b,[], [],lb,[])

4.目标规划法

首先编写M函数文件,和上述M函数相同。然后输入:

1 goal=[12,24];

2 weight=[12,24];

3 x0=[0;0];

4 a=[2 3;2 1];

5 b=[18;10];

6 lb=[0;0];[x,fval]=fgoalattain('mutiplesubjiect',goal,weight,x0,a,b,[],[],lb,[])

输出结果为:x1=0.0000,x2=6.0000,对应的目标值为f1=12.0000,f2=18.0000

5.模糊数学解法

求解的matlab程序为:

1 f=[0;0;-1];

2 a=[3 -2 27

3 -4 -3 24

4 2 3 0

5 2 1 0];

6 b=[15;0;18;10];

7 lb=[0;0;0];

8 ub=[];

9 [x,favl]=linprog(f,a,b,[],[],lb,ub);

10 f1=-3*x(1)+2*x(2);

f2=4*x(1)+3*x(2);

输出结果为:x1=1.0253,x2=5.3165,x3=0.8354,对应的目标值为f1=7.5570,f2=20.0506

(文章来源:CSDN-a useful man)

2023年第八届“数维杯”全国大学生数学建模挑战赛开赛在即,报名工作也在紧张有序的开展中...感兴趣的同学抓紧时间报名了!

扫描下方二维码即可报名数维杯↓

或复制下方链接进行报名:

报名官网:http://www.nmmcm.org.cn/match_detail/26

竞赛交流群↓

(进群领取历年赛前真题及优秀论文、招募队友、赛前资讯)进群备注:学校+姓名,不可重复加群。

美赛结束后,还需要做这件事!!