当前位置:文档之家› lingo练习

lingo练习

数学规划模型及lingo 求解练习: 1.考虑下述不平衡指派问题。

现有7个人指派给他们5项任务,效率矩阵如下表。

约定:①一个任务只能被一个人完成;②一个人在某时刻只能做一项任务;③所
(1) lingo 代码求解,
给出最优指派以及最优值; 1. 模型的建立:
设:题干中有i 个人共要完成j 件事情,可建立以下模型:
i=1,2,3…..m j=1,2,3…..n
=0或1
xij=1:指派第i 人做第j 事 xij=0: 不指派第i 人做第j 事 ( cij )称为系数矩阵。

2. 详细代码: Model: SETS:
Chandi/1..7/:cl; Xiaodi/1..5/:xl;
ChanXiao(Chandi,Xiaodi):c,x; ENDSETS DATA:
c=2 15 13 1 8 10 4 14 15 7 9 14 16 13 8 7 8 11 9 4 8 4 15 8 6 12 4 6 8 13 5 16 8 5 10;
m n
ij ij
i=1j=1
min =c x Z •∑∑1
1
n
ij
j x
==∑1
1
m
ij
i x
==∑ij
x
[obj] min=@sum(ChanXiao:c*x);
@for(Chandi(i):@sum(Xiaodi(j):x(i,j))<1); @for(Xiaodi(j):@sum(Chandi(i):x(i,j))=1);
@for(Chandi(i):@sum(Xiaodi(j):c(i,j)*x(i,j))<Cmax); @for(ChanXiao(i,j):@bin(x(i,j))); End
(2) 目标是任务尽早完工。

建立数学规划模型,并编写lingo 代码求解,给出
最优指派以及最优值; 1.模拟建立:
设:题干中有i 个人共要完成j 件事情,可建立以下模型: min max Z C =•
j=1,2,3,….n
i=1,2,3,….m
i=1,2,3…..m 0或1
xij=1:指派第i 人做第j 事 xij=0: 不指派第i 人做第j 事 ( cij )称为系数矩阵。

2.详细代码: Model: SETS:
Chandi/1..7/:cl; Xiaodi/1..5/:xl;
ChanXiao(Chandi,Xiaodi):c,x; ENDSETS
11n
ij j x ==∑
11m
ij i x ==∑
max
1
n
ij ij j c x C =•≤∑
ij x =
c=2 15 13 1 8
10 4 14 15 7
9 14 16 13 8
7 8 11 9 4
8 4 15 8 6
12 4 6 8 13
5 1
6 8 5 10;
ENDDATA
[obj]min=Cmax;
@for(Chandi(i):@sum(Xiaodi(j):x(i,j))<1);
@for(Xiaodi(j):@sum(Chandi(i):x(i,j))=1);
@for(Chandi(i):@sum(Xiaodi(j):c(i,j)*x(i,j))<Cmax);
@for(ChanXiao(i,j):@bin(x(i,j)));
End
(3)如果第3个人内定会有一项任务。

上述两个目标函数的最优指派以及最优值有无变化?
1.模型的建立:只需要在第二问的模型基础上添加一个对三个人的限制条
件即可,即@sum(Xiaodi(j):x(3,j))=1;
2.详细代码:
Model:
SETS:
Chandi/1..7/:cl;
Xiaodi/1..5/:xl;
ChanXiao(Chandi,Xiaodi):c,x;
ENDSETS
DATA:
c=2 15 13 1 8
10 4 14 15 7
9 14 16 13 8
7 8 11 9 4
8 4 15 8 6
12 4 6 8 13
5 1
6 8 5 10;
ENDDATA
[obj]min=Cmax;
@for(Chandi(i):@sum(Xiaodi(j):x(i,j))<1);
@for(Xiaodi(j):@sum(Chandi(i):x(i,j))=1);
@for(Chandi(i):@sum(Xiaodi(j):c(i,j)*x(i,j))<Cmax);
@sum(Xiaodi(j):x(3,j))=1;
@for(ChanXiao(i,j):@bin(x(i,j)));
End
(4)如果第5个人内定会有一项任务。

上述两个目标函数的最优指派以及最优值有无变化?
1.模型的建立:只需要在第二问的模型基础上添加一个对三个人的限制
条件即可,即@sum(Xiaodi(j):x(5,j))=1;
2.详细代码:
Model:
SETS:
Chandi/1..7/:cl;
Xiaodi/1..5/:xl;
ChanXiao(Chandi,Xiaodi):c,x;
ENDSETS
DATA:
c=2 15 13 1 8
10 4 14 15 7
9 14 16 13 8
7 8 11 9 4
8 4 15 8 6
12 4 6 8 13
5 1
6 8 5 10;
ENDDATA
[obj]min=Cmax;
@for(Chandi(i):@sum(Xiaodi(j):x(i,j))<1);
@for(Xiaodi(j):@sum(Chandi(i):x(i,j))=1);
@for(Chandi(i):@sum(Xiaodi(j):c(i,j)*x(i,j))<Cmax);
@sum(Xiaodi(j):x(5,j))=1;
@for(ChanXiao(i,j):@bin(x(i,j))); End
2.(1)建立m 台平行机,n 个工件,最小化时间表长问题max m P C 的数学规划模型;
此m max
P |C 问题可以看成将n 个工件交给m 台平行机器完成的指派问题,并求此
指派工程的最小总完成时间。

模型的建立为:
i=1…m
j=1…n S.t
=0或1
Lingo 代码如下:
m n ij ij i=1j=1
min =c x Z •∑∑1
1
m
ij
i x
==∑1
1
n
ij
j x
==∑ij
x
Model:
SETS:
Chandi/1..3/:cl;
Xiaodi/1..7/:xl;
ChanXiao(Chandi,Xiaodi):c,x;
ENDSETS
DATA:
c=5 5 4 4 3 3 3
5 5 4 4 3 3 3
5 5 4 4 3 3 3;
ENDDATA
[obj]min=Cmax;
@for(Chandi(i):@sum(Xiaodi(j):x(i,j))<1);
@for(Xiaodi(j):@sum(Chandi(i):x(i,j))=1);
@for(Chandi(i):@sum(Xiaodi(j):c(i,j)*x(i,j))<Cmax);
@for(ChanXiao(i,j):@bin(x(i,j)));
End
(3)考虑上述实例的LPT(Longest Processing Time First)算法的排序及目标值,与最优排序进行比较。

相关主题