lingo求解多目标规划例题.docx
- 文档编号:900581
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:6
- 大小:60.07KB
lingo求解多目标规划例题.docx
《lingo求解多目标规划例题.docx》由会员分享,可在线阅读,更多相关《lingo求解多目标规划例题.docx(6页珍藏版)》请在冰豆网上搜索。
lingo求解多目标规划例题
实验二:
目标规划
一、实验目的
目标规划是由线性规划开展演变而来的,线性规划考虑的是只有一个目标函数的问题,而实际问题中往往需要考虑多个目标函数,这些目标不仅有主次关系,而且有的还相互矛盾。
这些问题用线性规划求解就比拟困难,因而提出了目标规划。
熟悉目标规划模型的建立,求解过程与结果分析。
二、目标规划的一般模型
设是目标规划的决策变量,共有个约束是国刚性约束,可能是等式约束,也可能是不等式约束。
设有个柔性目标约束,其目标规划约束的偏差是。
设有个优先级别,分别为。
在同一个优先级中,有不同的权重,分别记为。
因此目标规划模型的一般数学表达式为:
min
s.t.
三、实验设备与分组
实验在计算机中心机房进展,使用微型电子计算机,每人一机〔一组〕。
四、实验容与步骤
1、打开LINGO,并利用系统菜单和向导在E盘创建一个项目。
目录和项目名推荐使用学生自己的学号。
2、以此题为例,建立数学模型,并用说明语句进展说明,增强程序的可读性。
例2.1:
某工厂生产Ⅰ、Ⅱ两种产品,需要用到A,B,C三种设备,有关数据见下表。
企业的经营目标不仅仅是利润,还需要考虑多个方面:
(1)力求使利润不低于1500元;
(2)考虑到市场需求,Ⅰ、Ⅱ两种产品的产量比应尽量保持1:
2;
(3)设备A为贵重设备,严格禁止超时使用;
(4)设备C可以适当加班,但要控制;设备B即要求充分利用,又尽可能不加班。
在重要性上,设备C是设备B的3倍。
Ⅰ
Ⅱ
设备的生产能力/h
A〔h/件〕
2
2
12
B〔h/件〕
4
0
16
C〔h/件〕
0
5
15
利润元/件
200
300
解:
此题中只有设备A是刚性约束,其余都是柔性约束。
首先,最重要的指标是企业的利润,将它的优先级列为第一级;其次是Ⅰ、Ⅱ两种产品的产量保持1:
2的比例,列为第二级;再次,设备B、C的工作时间要有所控制,列为第三级。
在第三级中,设备B的重要性是设备C的3倍,因此它们的权重不一样,设备B的系数是设备C的3倍。
该计划问题可用数学模型表示为:
目标函数min
满足约束条件
LINGO程序为:
model:
sets:
!
集合定义局部〔从“sets:
〞开始,到“endsets〞完毕〕:
定义集合变量与其元素〔含义类似数组的下标〕和属性〔含义类似于数组〕。
level/1..3/:
p,z,goal;
!
level说明的是目标规划的优先级,有三个变量p,z,和goal。
其中p表示优先级,goal表示相应优先级时的最优目标值。
!
“1..3〞的意思是从1到3的所有整数。
!
根本集合的定义格式为:
setname[/member_list/][:
attribute_list];其中setname为定义的集合名,member_list为元素列表,attribute_list为属性列表。
在“[]〞中的容,表示是可选的项,即该项可以有也可以没有。
variable/1..2/:
x;
!
x为决策变量向量。
h_con_num/1..1/:
b;
!
在目标规划中,约束有两类。
一类是对资源有严格限制的,同线性规划的处理一样,用严格的等式或者不等式约束来处理,称此约束为刚性约束〔hardconstraint〕。
b表示的是刚性约束的资源向量。
s_con_num/1..4/:
g,dplus,dminus;
!
另一类约束是可以不严格限制的,连同原线性规划的目标,构成柔性约束〔softconstraint〕。
g表示的是柔性约束的资源向量,dplus,dminus是偏差变量。
在目标规划中,用偏差变量〔deviationalvariables〕来表示实际值与目标值之间的差异,dplus为超出目标的差值,称为正偏差变量,dminus为未达到目标的差值,称为负偏差变量。
h_cons(h_con_num,variable):
A;
!
刚性约束的价值向量。
s_cons(s_con_num,variable):
c;
!
柔性约束的价值向量。
obj(level,s_con_num):
wplus,wminus;
!
柔性约束在不同优先级下的权重。
endsets
data:
!
数据输入局部〔从“data:
〞开始,到“enddata〞完毕〕:
作用在于对集合的属性〔数组〕输入必要的常数数据。
p=?
?
?
;
!
常数列表中的数据之间可以用“,〞或者“空格〞或者“回车〞分开。
如果想在运行时才对参数赋值,可以在数据段使用输入语句,但这仅用于对单个变量赋值,而不能用于属性变量〔数值〕。
输入语句格式为“变量名=?
;〞。
goal=?
?
0;
b=12;
g=150001615;
a=22;
c=2003002-14005;
!
LINGO中的数据是按列赋值的,而不是按行赋值的。
wplus=0000
0100
0031;
wminus=1000
0100
0030;
enddata
min=sum(level:
p*z);
!
目标函数〔“min=〞后面所接的表达式〕是用求和函数“sum(集合下标:
关于集合属性的表达式)〞的方式定义的。
这个函数的功能是对语句中冒号“:
〞后面的表达式,按照“:
〞前面的集合指定的下标〔元素〕进展求和。
这里“sum〞相当于求和符号“∑〞。
for(level(i):
z(i)=sum(s_con_num(j):
wplus(i,j)*dplus(j))
+sum(s_con_num(j):
wminus(i,j)*dminus(j)));
!
约束是用循环函数“for(集合〔下标〕:
关于集合的属性的约束关系〕〞的方式定义的。
意思是对冒号“:
〞前面的集合的每个元素〔下标〕,冒号“:
〞后面的约束关系式都要成立。
for(h_con_num(i):
sum(variable(j):
a(i,j)*x(j))<=b(i));
for(s_con_num(i):
sum(variable(j):
c(i,j)*x(j))
+dminus(i)-dplus(i)=g(i);
);
for(level(i)|i#lt#size(level):
bnd(0,z(i),goal(i));
!
限制0〈=z〔i〕〈=goal〔i〕
);
!
这个限制条件与集合之间有一个“|〞分开,称为过滤条件。
限制条件“i#lt#size〔level〕〞是一个逻辑表达式,意思是i〈size〔level〕。
#lt#是逻辑运算符号,意思是“小于〞;size〔level〕表示集合level元素的个数。
End
3、下面开始用LINGO中的图标或者Solve命令编译模型,当程序运行时,会出现一个对话框,如图2.1。
在作第一级目标计算时,p〔1〕,p〔2〕,p〔3〕分别输入1,0,0,goal〔1〕和goal〔2〕输入两个较大的值〔例如100000〕,明确这两项约束不起作用。
运行状态窗口如图2.2,相应信息含义见实验一表1.1。
图2.1LINGO的实时参数窗口
图2.2:
LINGO运行状态窗口
计算结果如下:
Globaloptimalsolutionfound.
Totalsolveriterations:
1
VariableValueReducedCost
RowSlackorSurplusDualPrice
第一级的最优偏差为0,进展第二级计算。
在第二级目标计算时,p〔1〕,p〔2〕,p〔3〕分别输入0,1,0。
由于第一级的偏差为0,因此goal〔1〕的输入值为0,goal〔2〕输入一个较大的值〔例如100000〕。
计算结果如下:
Globaloptimalsolutionfound.
Totalsolveriterations:
2
VariableValueReducedCost
RowSlackorSurplusDualPrice
第二级的最优偏差为0,进展第三级计算。
在第三级目标计算时,p〔1〕,p〔2〕,p〔3〕分别输入0,0,1。
由于第一级、第二级的偏差均为0,因此goal〔1〕、goal〔2〕的输入值也均是0。
计算结果如下:
GGlobaloptimalsolutionfound.
Totalsolveriterations:
0
VariableValueReducedCost
RowSlackorSurplusDualPrice
第三级的最优偏差为29,所以最终结果是:
,利润为1600。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- lingo 求解 多目标 规划 例题
![提示](https://static.bdocx.com/images/bang_tan.gif)