Matlab学习系列27多目标规划Word文档格式.docx
- 文档编号:17309962
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:11
- 大小:90.31KB
Matlab学习系列27多目标规划Word文档格式.docx
《Matlab学习系列27多目标规划Word文档格式.docx》由会员分享,可在线阅读,更多相关《Matlab学习系列27多目标规划Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
2.统一处理目标与约束
目标规划中,约束有两类,一类是对资源有严格限制的,用严格的等式或不等式约束来处理(同线性规划),例如,例1中设备A禁止超时使用,则有刚性约束:
另一类约束是可以不严格限制的,连同原线性规划的目标,构成柔性约束,例如,例1中希望利润不低于1500元,则目标可表示为
甲乙两种产品产量尽量保持1:
2的比例,则目标可表示为
设备C可以适当加班,但要控制,则目标可表示为
设备B要求充分利用,又尽可能不加班,则目标可表示为
结论:
若希望不等式保持大于等于,则极小化负偏差;
若希望不等式保持小于等于,则极小化正偏差;
若希望保持等式,则同时极小化正负偏差。
3.目标的优先级与权系数
目标规划中,目标的优先分为两个层面,第一个层面是目标分成不同的优先级,在求解目标规划时,必须先优化优先级高的目标,再优化优先级低的目标;
通常用P1,P2,…表示不同的因子,并规定Pk>
>
Pk+1.
第二个层面是目标处于同一优先级,但两个目标的权重不同,此时应两目标同时优化,但用权重系数的大小来表示目标重要性的差别。
目标规划建模中,除刚性约束必须严格满足外,对所有目标约束均允许有偏差。
其求解过程要从高到低逐层优化,中不增加高层次目标的偏差值的情况下,逐次使低层次的偏差达到极小。
例1按目标规划的方法可建立如下目标规划模型:
设备A是刚性约束,其余是柔性约束;
首先,最重要的指标是企业的利润,故将其优先级列为第一级;
其次,甲乙两种产品的产量保持1:
2的比例,列为第二级;
再次,设备C,B的工作时间要有所控制,列为第三级。
中第三级中,设备B的重要性是设备C的3倍,因此其权重不一样,设备B前的系数是C前系数的3倍,于是得到:
三、目标规划模型的一般形式:
设
是目标规划的决策变量,共有m个刚性约束(等式或不等式约束),有l个柔性目标约束,其目标规划约束的偏差为
,有个q优先级别,分别为
,在同一个优先级
中有不同的权重,分别记为
,则目标规划模型的一般形式为:
建立目标规划模型时,需要确定目标值、优先等级、权系数等,这些具有一定的主观性和模糊性,可以用专家评定法予以量化。
序贯式算法是求解目标规划的一种早期算法,其核心是根据优先级的先后次序,将目标规划问题分解成一系列的单目标规划问题,然后再依次求解。
例1模型的求解:
Lingo代码:
附录:
Lingo语法
(二)
以料场选址问题为例:
建筑工地的位置用平面坐标a,b表示(距离单位km);
水泥日用量(单位t)由下表给出:
表工地的位置(a,b)及水泥日用量
1
3
6
a
1.25
8.75
0.5
5.75
7.25
b
0.75
4.75
6.5
7.75
d
7
11
目前想设置两个临时料场,日储量各有20t,问两个料场选址在何处,分别向各工地运送多少吨水泥,能使总的吨公里数最小?
求解:
记工地的位置为(ai,bi),水泥的日用量为di,i=1,…,6;
料场位置为(xi,yi),日储量为ej,j=1,2;
从料场j向工地i的运送量为cij,则该问题的数学规划模型为:
Lingo代码:
MODEL:
TitleLocationProblem;
sets:
demand/1..6/:
a,b,d;
supply/1,2/:
x,y,e;
link(demand,supply):
c;
endsets
data:
!
locationsforthedemand(需求点的位置);
a=1.25,8.75,0.5,5.75,3,7.25;
b=1.25,0.75,4.75,5,6.5,7.75;
quantitiesofthedemandandsupply(供需量);
d=3,5,4,7,6,11;
e=20,20;
enddata
init:
initiallocationsforthesupply(初始点);
x,y=5,1,2,7;
endinit
Objectivefunction(目标);
[OBJ]min=@sum(link(i,j):
c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2));
demandconstrains(需求约束);
@for(demand(i):
[DEMAND_CON]@sum(supply(j):
c(i,j))=d(i);
);
supplyconstrains(供应约束);
@for(supply(j):
[SUPPLY_CON]@sum(demand(i):
c(i,j))<
=e(j);
@for(supply:
@free(x);
@free(y);
END
Lingo程序的一般结构:
程序是以MODEL:
开始,以END结束。
主体通常分为5个部分:
(1)集合段;
(2)数据段;
(3)初始段;
(4)计算段;
(5)目标与约束段。
一、集合段
以“SET:
”开始,以“ENDSET”结束;
用来定义必要的集合变量及元素、属性,相当于数组。
表示集合1名称为demand,元素为1…6,即demand={1,2,3,4,5,6},该集合的属性有a,b,d
“集合的属性相当于以集合的元素为下标的数组”
即相当于demand定义了如下数组的:
a
(1),a
(2),a(3),a(4),a(5),a(6)
b
(1),b
(2),b(3),b(4),b(5),b(6)
d
(1),d
(2),d(3),d(4),d(5),d(6)
类似地,supply定义了如下数组
x
(1),x
(2),y
(1),y
(2),e
(1),e
(2)
注1:
1,2,3,4可简写为1..4;
注2:
若无属性列表,则该集合往往是作为循环变量来使用,或用来构造派生集合;
注3:
若无元素列表,则必须在程序的数据段以赋值语句方式给出元素列表。
派生集合:
为了处理有两个下标的数组,引入派生集合:
表示link={(s,t):
s∈demand,t∈supply},即笛卡尔积;
其属性c则为6×
2矩阵(二维数组):
c(1,1),c(1,2)
c(2,1),c(2,2)
c(3,1),c(3,2)
c(4,1),c(4,2)
c(5,1),c(5,2)
c(6,1),c(6,2)
注:
demand和supply称为link的父集合。
二、数据段
以“DATA:
”开始,以“ENDDATA”结束;
用来对集合的属性(数组)输入必要的常数数据。
对集合的属性输入必要的常数数据,赋值结果为:
a
(1)=1.25,a
(2)=8.75,……,a(6)=7.25
b
(1)=1.25,b
(2)=0.75,……,b(6)=7.75
d
(1)=3,d
(2)=5,……,d(6)=11
e
(1)=20,e
(2)=20
若需要在运行时才对单变量(不能是属性变量,数组)参数赋值,可以在数据段使用输入语句:
例如
A=?
;
在求解时,Lingo将给出提示界面,等待用户输入变量A的数值。
三、初始段
以“INIT:
”开始,以“ENDINIT”结束;
用来对集合的属性(数组)定义初始值,一般作为迭代用。
这里与数据段的赋值一样。
注意:
变量x,y一起赋值时的赋值顺序,相当于
x
(1)=5,y
(1)=1,x
(2)=2,y
(2)=7
同“x=5,2;
y=1,7;
”
四、计算段
以“CALC:
”开始,以“ENDCALC”结束;
用来对原始数据进行计算处理。
例如,
CALC:
T_d=@SUM(demand:
d);
!
总日用量;
A_d=T_d/@size(demand);
平均日用量;
ENDCALC
其中,函数@size(demand)返回demand的元素个数。
五、目标和约束段
除上述四段之外的部分,无开始、结束标志;
是模型的主体,用来定义目标函数和约束条件。
1.目标函数:
[OBJ]min=sum(link(i,j):
@sum函数,派生集合(二维数组)link关于索引i,j对表达式求和;
2.约束条件1:
@for函数,对集合demand的每个索引i,应用求和表达式,集合supply关于索引j对表达式求和;
约束条件2:
c(i,j))<
=e(j);
@for函数,对集合supply的每个索引i,应用求和表达式,集合supply关于索引j对表达式求和;
@free(X);
@free(Y);
@for函数对集合supply所有元素,@free函数取消x,y的非负限制。
运行结果:
Localoptimalsolutionfound.
Objectivevalue:
85.26604
Infeasibilities:
0.000000
Totalsolveriterations:
68
ModelTitle:
LocationProblem
VariableValueReducedCost
A
(1)1.2500000.000000
A
(2)8.7500000.000000
A(3)0.50000000.000000
A(4)5.7500000.000000
A(5)3.0000000.000000
A(6)7.2500000.000000
B
(1)1.2500000.000000
B
(2)0.75000000.000000
B(3)4.7500000.000000
B(4)5.0000000.000000
B(5)6.5000000.000000
B(6)7.7500000.000000
D
(1)3.0000000.000000
D
(2)5.0000000.000000
D(3)4.0000000.000000
D(4)7.0000000.000000
D(5)6.0000000.000000
D(6)11.000000.000000
X
(1)3.2548830.000000
X
(2)7.250000-0.1853513E-05
Y
(1)5.6523320.000000
Y
(2)7.750000-0.1114154E-05
E
(1)20.000000.000000
E
(2)20.000000.000000
C(1,1)3.0000000.000000
C(1,2)0.0000004.008540
C(2,1)0.0000000.2051358
C(2,2)5.0000000.000000
C(3,1)4.0000000.000000
C(3,2)0.0000004.487750
C(4,1)7.0000000.000000
C(4,2)0.0000000.5535090
C(5,1)6.0000000.000000
C(5,2)0.0000003.544853
C(6,1)0.0000004.512336
C(6,2)11.000000.000000
RowSlackorSurplusDualPrice
OBJ85.26604-1.000000
DEMAND_CON
(1)0.000000-4.837363
DEMAND_CON
(2)0.000000-7.158911
DEMAND_CON(3)0.000000-2.898893
DEMAND_CON(4)0.000000-2.578982
DEMAND_CON(5)0.000000-0.8851584
DEMAND_CON(6)0.0000000.000000
SUPPLY_CON
(1)0.0000000.000000
SUPPLY_CON
(2)4.0000000.000000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 学习 系列 27 多目标 规划
![提示](https://static.bdocx.com/images/bang_tan.gif)