lingo求解多目标规划例题样本.docx
《lingo求解多目标规划例题样本.docx》由会员分享,可在线阅读,更多相关《lingo求解多目标规划例题样本.docx(14页珍藏版)》请在冰点文库上搜索。
lingo求解多目标规划例题样本
实验二:
目的规划
一、实验目
目的规划是由线性规划发展演变而来,线性规划考虑是只有一种目的函数问题,而实际问题中往往需要考虑各种目的函数,这些目的不但有主次关系,并且有还互相矛盾。
这些问题用线性规划求解就比较困难,因而提出了目的规划。
熟悉目的规划模型建立,求解过程及成果分析。
二、目的规划普通模型
设
是目的规划决策变量,共有
个约束是国刚性约束,也许是等式约束,也也许是不等式约束。
设有
个柔性目的约束,其目的规划约束偏差是
。
设有
个优先级别,分别为
。
在同一种优先级
中,有不同权重,分别记为
。
因而目的规划模型普通数学表达式为:
min
s.t.
三、实验设备及分组
实验在计算机中心机房进行,使用微型电子计算机,每人一机(一组)。
四、实验容及环节
1、打开LINGO,并运用系统菜单和向导在E盘创立一种项目。
目录和项目名推荐使用学生自己学号。
2、以此题为例,建立数学模型,并用阐明语句进行阐明,增强程序可读性。
例2.1:
某工厂生产Ⅰ、Ⅱ两种产品,需要用到A,B,C三种设备,已知关于数据见下表。
公司经营目的不但仅是利润,还需要考虑各种方面:
(1)力求使利润不低于1500元;
(2)考虑到市场需求,Ⅰ、Ⅱ两种产品产量比应尽量保持1:
2;
(3)设备A为贵重设备,严格禁止超时使用;
(4)设备C可以恰当加班,但要控制;设备B即规定充分运用,又尽量不加班。
在重要性上,设备C是设备B3倍。
Ⅰ
Ⅱ
设备生产能力/h
A(h/件)
2
2
12
B(h/件)
4
0
16
C(h/件)
0
5
15
利润元/件
200
300
解:
此题中只有设备A是刚性约束,别的都是柔性约束。
一方面,最重要指标是公司利润,将它优先级列为第一级;另一方面是Ⅰ、Ⅱ两种产品产量保持1:
2比例,列为第二级;再次,设备B、C工作时间要有所控制,列为第三级。
在第三级中,设备B重要性是设备C3倍,因而它们权重不同样,设备B系数是设备C3倍。
该筹划问题可用数学模型表达为:
目的函数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.
Objectivevalue:
0.000000
Totalsolveriterations:
1
VariableValueReducedCost
P
(1)1.0000000.000000
P
(2)0.0000000.000000
P(3)0.0000000.000000
Z
(1)0.0000000.000000
Z
(2)5.0000000.000000
Z(3)58.000000.000000
GOAL
(1)100000.00.000000
GOAL
(2)1000000.0.000000
GOAL(3)0.0000000.000000
X
(1)0.0000000.000000
X
(2)5.0000000.000000
B
(1)12.000000.000000
G
(1)1500.0000.000000
G
(2)0.0000000.000000
G(3)16.000000.000000
G(4)15.000000.000000
DPLUS
(1)0.0000000.000000
DPLUS
(2)0.0000000.000000
DPLUS(3)0.0000000.000000
DPLUS(4)10.000000.000000
DMINUS
(1)0.0000001.000000
DMINUS
(2)5.0000000.000000
DMINUS(3)16.000000.000000
DMINUS(4)0.0000000.000000
A(1,1)2.0000000.000000
A(1,2)2.0000000.000000
C(1,1)200.00000.000000
C(1,2)300.00000.000000
C(2,1)2.0000000.000000
C(2,2)-1.0000000.000000
C(3,1)4.0000000.000000
C(3,2)0.0000000.000000
C(4,1)0.0000000.000000
C(4,2)5.0000000.000000
WPLUS(1,1)0.0000000.000000
WPLUS(1,2)0.0000000.000000
WPLUS(1,3)0.0000000.000000
WPLUS(1,4)0.0000000.000000
WPLUS(2,1)0.0000000.000000
WPLUS(2,2)1.0000000.000000
WPLUS(2,3)0.0000000.000000
WPLUS(2,4)0.0000000.000000
WPLUS(3,1)0.0000000.000000
WPLUS(3,2)0.0000000.000000
WPLUS(3,3)3.0000000.000000
WPLUS(3,4)1.0000000.000000
WMINUS(1,1)1.0000000.000000
WMINUS(1,2)0.0000000.000000
WMINUS(1,3)0.0000000.000000
WMINUS(1,4)0.0000000.000000
WMINUS(2,1)0.0000000.000000
WMINUS(2,2)1.0000000.000000
WMINUS(2,3)0.0000000.000000
WMINUS(2,4)0.0000000.000000
WMINUS(3,1)0.0000000.000000
WMINUS(3,2)0.0000000.000000
WMINUS(3,3)3.0000000.000000
WMINUS(3,4)0.0000000.000000
RowSlackorSurplusDualPrice
10.000000-1.000000
20.000000-1.000000
30.0000000.000000
40.0000000.000000
52.0000000.000000
60.0000000.000000
70.0000000.000000
80.0000000.000000
90.0000000.000000
第一级最优偏差为0,进行第二级计算。
在第二级目的计算时,p
(1),p
(2),p(3)分别输入0,1,0。
由于第一级偏差为0,因而goal
(1)输入值为0,goal
(2)输入一种较大值(例如100000)。
计算成果如下:
Globaloptimalsolutionfound.
Objectivevalue:
0.000000
Totalsolveriterations:
2
VariableValueReducedCost
P
(1)0.0000000.000000
P
(2)1.0000000.000000
P(3)0.0000000.000000
Z
(1)0.0000000.000000
Z
(2)0.0000001.000000
Z(3)29.250000.000000
GOAL
(1)0.0000000.000000
GOAL
(2)100000.00.000000
GOAL(3)0.0000000.000000
X
(1)1.8750000.000000
X
(2)3.7500000.000000
B
(1)12.000000.000000
G
(1)1500.0000.000000
G
(2)0.0000000.000000
G(3)16.000000.000000
G(4)15.000000.000000
DPLUS
(1)0.0000000.000000
DPLUS
(2)0.0000000.000000
DPLUS(3)0.0000000.000000
DPLUS(4)3.7500000.000000
DMINUS
(1)0.0000000.000000
DMINUS
(2)0.0000000.000000
DMINUS(3)8.5000000.000000
DMINUS(4)0.0000000.000000
A(1,1)2.0000000.000000
A(1,2)2.0000000.000000
C(1,1)200.00000.000000
C(1,2)300.00000.000000
C(2,1)2.0000000.000000
C(2,2)-1.0000000.000000
C(3,1)4.0000000.000000
C(3,2)0.0000000.000000
C(4,1)0.0000000.000000
C(4,2)5.0000000.000000
WPLUS(1,1)0.0000000.000000
WPLUS(1,2)0.0000000.000000
WPLUS(1,3)0.0000000.000000
WPLUS(1,4)0.0000000.000000
WPLUS(2,1)0.0000000.000000
WPLUS(2,2)1.0000000.000000
WPLUS(2,3)0.0000000.000000
WPLUS(2,4)0.0000000.000000
WPLUS(3,1)0.0000000.000000
WPLUS(3,2)0.0000000.000000
WPLUS(3,3)3.0000000.000000
WPLUS(3,4)1.0000000.000000
WMINUS(1,1)1.0000000.000000
WMINUS(1,2)0.0000000.000000
WMINUS(1,3)0.0000000.000000
WMINUS(1,4)0.0000000.000000
WMINUS(2,1)0.0000000.000000
WMINUS(2,2)1.0000000.000000
WMINUS(2,3)0.0000000.000000
WMINUS(2,4)0.0000000.000000
WMINUS(3,1)0.0000000.000000
WMINUS(3,2)0.0000000.000000
WMINUS(3,3)3.0000000.000000
WMINUS(3,4)0.0000000.000000
RowSlackorSurplusDualPrice
10.000000-1.000000
20.0000000.000000
30.0000000.000000
40.0000000.000000
50.75000000.000000
60.0000000.000000
70.0000000.000000
80.0000000.000000
90.0000000.000000
第二级最优偏差为0,进行第三级计算。
在第三级目的计算时,p
(1),p
(2),p(3)分别输入0,0,1。
由于第一级、第二级偏差均为0,因而goal
(1)、goal
(2)输入值也均是0。
计算成果如下:
GGlobaloptimalsolutionfound.
Objectivevalue:
29.00000
Totalsolveriterations:
0
VariableValueReducedCost
P
(1)0.0000000.000000
P
(2)0.0000000.000000
P(3)1.0000000.000000
Z
(1)0.0000000.000000
Z
(2)0.000000-5.666667
Z(3)29.000000.000000
GOAL
(1)0.0000000.000000
GOAL
(2)0.0000000.000000
GOAL(3)0.0000000.000000
X
(1)2.0000000.000000
X
(2)4.0000000.000000
B
(1)12.000000.000000
G
(1)1500.0000.000000
G
(2)0.0000000.000000
G(3)16.000000.000000
G(4)15.000000.000000
DPLUS
(1)100.00000.000000
DPLUS
(2)0.0000000.000000
DPLUS(3)0.0000006.000000
DPLUS(4)5.0000000.000000
DMINUS
(1)0.0000000.000000
DMINUS
(2)0.00000011.33333
DMINUS(3)8.0000000.000000
DMINUS(4)0.0000001.000000
A(1,1)2.0000000.000000
A(1,2)2.0000000.000000
C(1,1)200.00000.000000
C(1,2)300.00000.000000
C(2,1)2.0000000.000000
C(2,2)-1.0000000.000000
C(3,1)4.0000000.000000
C(3,2)0.0000000.000000
C(4,1)0.0000000.000000
C(4,2)5.0000000.000000
WPLUS(1,1)0.0000000.000000
WPLUS(1,2)0.0000000.000000
WPLUS(1,3)0.0000000.000000
WPLUS(1,4)0.0000000.000000
WPLUS(2,1)0.0000000.000000
WPLUS(2,2)1.0000000.000000
WPLUS(2,3)0.0000000.000000
WPLUS(2,4)0.0000000.000000
WPLUS(3,1)0.0000000.000000
WPLUS(3,2)0.0000000.000000
WPLUS(3,3)3.0000000.000000
WPLUS(3,4)1.0000000.000000
WMINUS(1,1)1.0000000.000000
WMINUS(1,2)0.0000000.000000
WMINUS(1,3)0.0000000.000000
WMINUS(1,4)0.0000000.000000
WMINUS(2,1)0.0000000.000000
WMINUS(2,2)1.0000000.000000
WMINUS(2,3)0.0000000.000000
WMINUS(2,4)0.0000000.000000
WMINUS(3,1)0.0000000.000000
WMINUS(3,2)0.0000000.000000
WMINUS(3,3)3.0000000.000000
WMINUS(3,4)0.0000000.000000
RowSlackorSurplusDualPrice
129.00000-1.000000
20.0000000.000000
30.000000-5.666667
40.000000-1.000000
50.0000000.3333333
60.0000000.000000
70.0000005.666667
80.000000-3.000000
90.0000001.000000
第三级最优偏差为29,因此最后成果是:
,利润为1600。