lingo求解多目标规划--例题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二:目标规划
一、实验目得
目标规划就是由线性规划发展演变而来得,线性规划考虑得就是只有一个目标函数得问题,而实际问题中往往需要考虑多个目标函数,这些目标不仅有主次关系,而且有得还相互矛盾。

这些问题用线性规划求解就比较困难,因而提出了目标规划。

熟悉目标规划模型得建立,求解过程及结果分析。

二、目标规划得一般模型
设)...2,1(n j x j =就是目标规划得决策变量,共有m 个约束就是国内刚性约束,可能就是等式约束,也可能就是不等式约束。

设有l 个柔性目标约束,其目标规划约束得偏差就是),...,2,1(,l i d d i i =-+。

设有q 个优先级别,分别为q p p p ,...,21。

在同一个优先级k p 中,有不同得权重,分别记为),...,2,1(,l j w w kj kj =-+。

因此目标规划模型得一般数学表达式为: min ∑∑=++--=+=l j j kj j kj q k k
d w d w p z 11);(
s 、t 、
,,...2,1,),(1
m i b x a n j i j ij =≥=≤∑= .
,...2,1,0,,
,...,2,1,,
,...2,1,1l i d d n x o x l i g d d x c
i i j i n j i i j ij =≥=≥==-++-=+-∑ 三、实验设备及分组
实验在计算机中心机房进行,使用微型电子计算机,每人一机(一组)。

四、实验内容及步骤
1、打开LINGO ,并利用系统菜单与向导在E 盘创建一个项目。

目录与项目名推荐使用学生自己得学号。

2、以此题为例,建立数学模型,并用说明语句进行说明,增强程序得可读性。

例2、1:
某工厂生产Ⅰ、Ⅱ两种产品,需要用到A ,B ,C 三种设备,已知有关数据见下表。

企业得经营目标不仅仅就是利润,还需要考虑多个方面:
(1) 力求使利润不低于1500元;
(2) 考虑到市场需求,Ⅰ、Ⅱ两种产品得产量比应尽量保持1:2;
(3) 设备A 为贵重设备,严格禁止超时使用;
(4) 设备C 可以适当加班,但要控制;设备B 即要求充分利用,又尽可能不加班。

在重要性上,设备C 就是设备B 得3倍。

此题中只有设备A 就是刚性约束,其余都就是柔性约束。

首先,最重要得指标就是企业得利润,将它得优先级列为第一级;其次就是Ⅰ、Ⅱ两种产品得产量保持1:2得比例,列为第二级;再次,设备B 、C 得工作时间要有所控制,列为第三级。

在第三级中,设备B 得重要性就是设备C 得3倍,因此它们得权重不一样,设备B 得系数就是设备C 得3倍。

该计划问题可用数学模型表示为:
目标函数 min )33()(433322211++-+--+++++=d d d p d d p d p z 满足约束条件 2122x x + 12≤
15003002001121=-+++-d d x x
022221=-+-+
-d d x x
14x 1633=-++-d d
155442=-++-d d x
3,2,1,0,,,21=≥+-i d d x x i i 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;
!在目标规划中,约束有两类。

一类就是对资源有严格限制得,同线性规划得处理相同,用严格得等式或者不等式约束来处理,称此约束为刚性约束(hard constraint)。

b表示得就是刚性约束得资源向量。

s_con_num/1、、4/:g,dplus,dminus;
!另一类约束就是可以不严格限制得,连同原线性规划得目标,构成柔性约束(soft constraint)。

g表示得就是柔性约束得资源向量,dplus,dminus就是偏差变量。

在目标规划中,用偏差变量(deviational variables)来表示实际值与目标值之间得差异,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=1500 0 16 15;
a=2 2;
c=200 300 2 -1 4 0 0 5;
!LINGO中得数据就是按列赋值得,而不就是按行赋值得。

wplus=0 0 0 0
0 1 0 0
0 0 3 1;
wminus=1 0 0 0
0 1 0 0
0 0 3 0;
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、1 LINGO得实时参数窗口
图2、2:LINGO运行状态窗口
计算结果如下:
Global optimal solution found、
Objective value: 0、000000
Total solver iterations: 1
Variable Value Reduced Cost P( 1) 1、000000 0、000000 P( 2) 0、000000 0、000000 P( 3) 0、000000 0、000000 Z( 1) 0、000000 0、000000 Z( 2) 5、000000 0、000000 Z( 3) 58、00000 0、000000 GOAL( 1) 100000、0 0、000000 GOAL( 2) 1000000、 0、000000 GOAL( 3) 0、000000 0、000000 X( 1) 0、000000 0、000000 X( 2) 5、000000 0、000000 B( 1) 12、00000 0、000000 G( 1) 1500、000 0、000000 G( 2) 0、000000 0、000000 G( 3) 16、00000 0、000000 G( 4) 15、00000 0、000000 DPLUS( 1) 0、000000 0、000000 DPLUS( 2) 0、000000 0、000000 DPLUS( 3) 0、000000 0、000000
DMINUS( 1) 0、000000 1、000000 DMINUS( 2) 5、000000 0、000000 DMINUS( 3) 16、00000 0、000000 DMINUS( 4) 0、000000 0、000000 A( 1, 1) 2、000000 0、000000 A( 1, 2) 2、000000 0、000000 C( 1, 1) 200、0000 0、000000 C( 1, 2) 300、0000 0、000000 C( 2, 1) 2、000000 0、000000 C( 2, 2) -1、000000 0、000000 C( 3, 1) 4、000000 0、000000 C( 3, 2) 0、000000 0、000000 C( 4, 1) 0、000000 0、000000 C( 4, 2) 5、000000 0、000000 WPLUS( 1, 1) 0、000000 0、000000 WPLUS( 1, 2) 0、000000 0、000000 WPLUS( 1, 3) 0、000000 0、000000 WPLUS( 1, 4) 0、000000 0、000000 WPLUS( 2, 1) 0、000000 0、000000 WPLUS( 2, 2) 1、000000 0、000000 WPLUS( 2, 3) 0、000000 0、000000 WPLUS( 2, 4) 0、000000 0、000000 WPLUS( 3, 1) 0、000000 0、000000 WPLUS( 3, 2) 0、000000 0、000000 WPLUS( 3, 3) 3、000000 0、000000 WPLUS( 3, 4) 1、000000 0、000000 WMINUS( 1, 1) 1、000000 0、000000 WMINUS( 1, 2) 0、000000 0、000000 WMINUS( 1, 3) 0、000000 0、000000 WMINUS( 1, 4) 0、000000 0、000000 WMINUS( 2, 1) 0、000000 0、000000 WMINUS( 2, 2) 1、000000 0、000000 WMINUS( 2, 3) 0、000000 0、000000 WMINUS( 2, 4) 0、000000 0、000000 WMINUS( 3, 1) 0、000000 0、000000 WMINUS( 3, 2) 0、000000 0、000000 WMINUS( 3, 3) 3、000000 0、000000 WMINUS( 3, 4) 0、000000 0、000000 Row Slack or Surplus Dual Price
1 0、000000 -1、000000
2 0、000000 -1、000000
3 0、000000 0、000000
4 0、000000 0、000000
6 0、000000 0、000000
7 0、000000 0、000000
8 0、000000 0、000000
9 0、000000 0、000000
第一级得最优偏差为0,进行第二级计算。

在第二级目标计算时,p(1),p(2),p (3)分别输入0,1,0。

由于第一级得偏差为0,因此goal(1)得输入值为0,goal(2)输入一个较大得值(例如100000)。

计算结果如下:
Global optimal solution found、
Objective value: 0、000000
Total solver iterations: 2
Variable Value Reduced Cost
P( 1) 0、000000 0、000000
P( 2) 1、000000 0、000000
P( 3) 0、000000 0、000000
Z( 1) 0、000000 0、000000
Z( 2) 0、000000 1、000000
Z( 3) 29、25000 0、000000
GOAL( 1) 0、000000 0、000000
GOAL( 2) 100000、0 0、000000
GOAL( 3) 0、000000 0、000000
X( 1) 1、875000 0、000000
X( 2) 3、750000 0、000000
B( 1) 12、00000 0、000000
G( 1) 1500、000 0、000000
G( 2) 0、000000 0、000000
G( 3) 16、00000 0、000000
G( 4) 15、00000 0、000000
DPLUS( 1) 0、000000 0、000000
DPLUS( 2) 0、000000 0、000000
DPLUS( 3) 0、000000 0、000000
DPLUS( 4) 3、750000 0、000000
DMINUS( 1) 0、000000 0、000000
DMINUS( 2) 0、000000 0、000000
DMINUS( 3) 8、500000 0、000000
DMINUS( 4) 0、000000 0、000000
A( 1, 1) 2、000000 0、000000
A( 1, 2) 2、000000 0、000000
C( 1, 1) 200、0000 0、000000
C( 1, 2) 300、0000 0、000000
C( 2, 1) 2、000000 0、000000
C( 2, 2) -1、000000 0、000000
C( 3, 1) 4、000000 0、000000
C( 3, 2) 0、000000 0、000000
C( 4, 2) 5、000000 0、000000
WPLUS( 1, 1) 0、000000 0、000000
WPLUS( 1, 2) 0、000000 0、000000
WPLUS( 1, 3) 0、000000 0、000000
WPLUS( 1, 4) 0、000000 0、000000
WPLUS( 2, 1) 0、000000 0、000000
WPLUS( 2, 2) 1、000000 0、000000
WPLUS( 2, 3) 0、000000 0、000000
WPLUS( 2, 4) 0、000000 0、000000
WPLUS( 3, 1) 0、000000 0、000000
WPLUS( 3, 2) 0、000000 0、000000
WPLUS( 3, 3) 3、000000 0、000000
WPLUS( 3, 4) 1、000000 0、000000
WMINUS( 1, 1) 1、000000 0、000000
WMINUS( 1, 2) 0、000000 0、000000
WMINUS( 1, 3) 0、000000 0、000000
WMINUS( 1, 4) 0、000000 0、000000
WMINUS( 2, 1) 0、000000 0、000000
WMINUS( 2, 2) 1、000000 0、000000
WMINUS( 2, 3) 0、000000 0、000000
WMINUS( 2, 4) 0、000000 0、000000
WMINUS( 3, 1) 0、000000 0、000000
WMINUS( 3, 2) 0、000000 0、000000
WMINUS( 3, 3) 3、000000 0、000000
WMINUS( 3, 4) 0、000000 0、000000
Row Slack or Surplus Dual Price
1 0、000000 -1、000000
2 0、000000 0、000000
3 0、000000 0、000000
4 0、000000 0、000000
5 0、7500000 0、000000
6 0、000000 0、000000
7 0、000000 0、000000
8 0、000000 0、000000
9 0、000000 0、000000
第二级得最优偏差为0,进行第三级计算。

在第三级目标计算时,p(1),p(2),p (3)分别输入0,0,1。

由于第一级、第二级得偏差均为0,因此goal(1)、goal(2)得输入值也均就是0。

计算结果如下:
GGlobal optimal solution found、
Objective value: 29、00000
Total solver iterations: 0
Variable Value Reduced Cost
P( 1) 0、000000 0、000000
P( 3) 1、000000 0、000000 Z( 1) 0、000000 0、000000 Z( 2) 0、000000 -5、666667 Z( 3) 29、00000 0、000000 GOAL( 1) 0、000000 0、000000 GOAL( 2) 0、000000 0、000000 GOAL( 3) 0、000000 0、000000 X( 1) 2、000000 0、000000 X( 2) 4、000000 0、000000 B( 1) 12、00000 0、000000 G( 1) 1500、000 0、000000 G( 2) 0、000000 0、000000 G( 3) 16、00000 0、000000 G( 4) 15、00000 0、000000 DPLUS( 1) 100、0000 0、000000 DPLUS( 2) 0、000000 0、000000 DPLUS( 3) 0、000000 6、000000 DPLUS( 4) 5、000000 0、000000 DMINUS( 1) 0、000000 0、000000 DMINUS( 2) 0、000000 11、33333 DMINUS( 3) 8、000000 0、000000 DMINUS( 4) 0、000000 1、000000 A( 1, 1) 2、000000 0、000000 A( 1, 2) 2、000000 0、000000 C( 1, 1) 200、0000 0、000000 C( 1, 2) 300、0000 0、000000 C( 2, 1) 2、000000 0、000000 C( 2, 2) -1、000000 0、000000 C( 3, 1) 4、000000 0、000000 C( 3, 2) 0、000000 0、000000 C( 4, 1) 0、000000 0、000000 C( 4, 2) 5、000000 0、000000 WPLUS( 1, 1) 0、000000 0、000000 WPLUS( 1, 2) 0、000000 0、000000 WPLUS( 1, 3) 0、000000 0、000000 WPLUS( 1, 4) 0、000000 0、000000 WPLUS( 2, 1) 0、000000 0、000000 WPLUS( 2, 2) 1、000000 0、000000 WPLUS( 2, 3) 0、000000 0、000000 WPLUS( 2, 4) 0、000000 0、000000 WPLUS( 3, 1) 0、000000 0、000000 WPLUS( 3, 2) 0、000000 0、000000 WPLUS( 3, 3) 3、000000 0、000000
WMINUS( 1, 1) 1、000000 0、000000 WMINUS( 1, 2) 0、000000 0、000000 WMINUS( 1, 3) 0、000000 0、000000 WMINUS( 1, 4) 0、000000 0、000000 WMINUS( 2, 1) 0、000000 0、000000 WMINUS( 2, 2) 1、000000 0、000000 WMINUS( 2, 3) 0、000000 0、000000 WMINUS( 2, 4) 0、000000 0、000000 WMINUS( 3, 1) 0、000000 0、000000 WMINUS( 3, 2) 0、000000 0、000000 WMINUS( 3, 3) 3、000000 0、000000 WMINUS( 3, 4) 0、000000 0、000000 Row Slack or Surplus Dual Price 1 29、00000 -1、000000 2 0、000000 0、000000 3 0、000000 -5、666667 4 0、000000 -1、000000 5 0、000000 0、3333333 6 0、000000 0、000000 7 0、000000 5、666667 8 0、000000 -3、000000 9 0、000000 1、000000
第三级得最优偏差为29,所以最终结果就是:4,221==x x ,利润为1600。

相关文档
最新文档