多目标线性规划求解方法及matlab实现

您所在的位置:网站首页 用matlab导入数据再加权 多目标线性规划求解方法及matlab实现

多目标线性规划求解方法及matlab实现

2023-11-06 08:57| 来源: 网络整理| 查看: 265

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

一、多目标线性规划模型

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

我们记

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

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

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

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

1.理想解法:

解:先对单目标进行求解

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

f=[3;-2]; a=[2 3;2 1]; b=[18;10]; lb=[0;0]; ub=[]; [x,favl]=linprog(f,a,b,[],[],lb,ub);

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

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

f=[-4;-3]; a=[2 3;2 1]; b=[18;10]; lb=[0;0]; ub=[]; [x,favl]=linprog(f,a,b,[],[],lb,ub);

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

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

Matlab程序为:

x0=[1;1]; a=[2 3;2 1]; b=[18;10]; lb=[0;0]; ub=[]; x=fmincon('((-3*x(1)+2*x(2)-12)^2+(4*x(1)+3*x(2)-24)^2)^(1/2)',x0,a,b,[],[],lb,ub); f1=-3*x(1)+2*x(2); f2=4*x(1)+3*x(2);

2.线性加权法:

求解的matlab程序为:

f=[-0.5;-2.5]; a=[2 3;2 1]; b=[18;10]; lb=[0;0]; ub=[]; x=linprog(f,a,b,[],[],lb,ub);

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

3.最大最小法

首先编写M函数文件:

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

然后输入

>> x0=[0;0]; a=[2 3;2 1]; b=[18;10]; lb=[0;0]; [x,favl]=fminimax('mutiplesubjiect',x0,a,b,[],[],lb,[])

4.目标规划法

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

goal=[12,24]; weight=[12,24]; x0=[0;0]; a=[2 3;2 1]; b=[18;10]; 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程序为:

f=[0;0;-1]; a=[3 -2 27 -4 -3 24 2 3 0 2 1 0]; b=[15;0;18;10]; lb=[0;0;0]; ub=[]; [x,favl]=linprog(f,a,b,[],[],lb,ub); 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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3