文档介绍:实验目的和任务
. 进一步掌握Lingo编程操作;
,提高学生分析问题和解决问题能力。
实验仪器、设备及材料
计算机、Lingo
实验内容
指派问题
问题P274
设有n个人,计划做n项工作,其中表示第i个人做第j项工作的收益,现求一种指派方式,使得每个人完成一项工作,并使总收益最大。
6个人做6项工作的收益情况
人
工作1
工作2
工作3
工作4
工作5
工作6
1
20
15
16
5
4
7
2
17
15
33
12
8
6
3
9
12
18
16
30
13
4
12
8
11
27
19
14
5
-
7
10
21
10
32
6
-
-
-
6
11
13
说明:其中“-”表示某人无法做某项工作。
建模
决策变量:设变量为,当第i个人做第j项工作时,,否则,
目标函数:
,
约束条件:每个人做一项工作,即
每项工作有一个人去做,即
从问题的形式来看,指派问题是运输问题的特例,也可以看成是0-1规划问题。
求解过程
编写模型程序:
model:
!Assignment Problem Model;
sets:
Flight/1..6/;
Assign(Flight,Flight):c,x;
endsets
!Here is e matrix;
data:
c=20 15 16 5 4 7
17 15 33 12 8 6
9 12 18 16 30 13
12 8 11 27 19 14
-99 7 10 21 10 32
-99 -99 -99 6 11 13;
enddata
!Maximize value of assignments;
max=***@sum(Assign:c*x);
***@for(Flight(i):
!Each i must be assigned to some j;
***@sum(Flight(j):x(i,j))=1;
!Each i must receive an assignment;
***@sum(Flight(j):x(j,i))=1;
);
end
计算结果:
Global optimal solution found.
Objective value:
Total solver iterations: 0
Variable Value Reduced Cost
C( 1, 1)
C( 1, 2)
C( 1, 3)
C( 1, 4)
C( 1, 5)
C( 1, 6)
C( 2, 1)
C( 2, 2)
C( 2, 3)
C( 2, 4)