lingo实验报告材料
- 格式:doc
- 大小:78.15 KB
- 文档页数:6
一、实验名称:推销员指派问题 二、实验目的及任务:
1、掌握Lingo 软件的使用方法
2、编写简单的Lingo 程序
3、解决Lingo 中的最优指派问题
三、实验容
1、问题描述
一个公司要分派5个推销员去5个地区推销某种产品,5个推销员在各个地区推销这种产品的预期利润如下表所示。若每个推销员只能去一个地区。应如何分派这5个推销员才能使公司的利润为最大?
2、模型建立
决策变量:设⎩⎨⎧=个地区个人去第不指派第个地区个人去第指派第j i 0j i 1ij x (i,j=1,2,3,4,5)
目标函数:设总利润为z ,第i 个人去第j 个地区的利润为A ij (i,j=1,2,3,4,5)
,假设A ij 为指派矩阵,则
Max ∑∑===5
15
1i j ij ij x A z
约束条件:
1.第j 个地区只有一个人去:
15
1
=∑=i ij
x
(j=1,2,3,4,5)
2.第i 个人只去一个地区:
15
1
=∑=j ij
x
(i=1,2,3,4,5)
由此得基本模型:
Max ∑∑===515
1
i j ij ij x A z
S,t, 15
1
=∑=i ij x (j=1,2,3,4,5)
15
1
=∑=j ij
x
(i=1,2,3,4,5)
10或=ij x (i,j=1,2,3,4,5)
3、Lingo 程序 (一)常规程序 Lingo 输入:
model :
max =1*x11+8*x12+9*x13+2*x14+1*x15+5*x21+6*x22+3*x23+10*x24+7*x25+3*x31+10*x32+4*x33+11*x34+3*x35+7*x41+7*x42+5*x43+4*x44+8*x45+4*x51+2*x52+6*x53+3*x54+9*x 55;
x11+x12+x13+x14+x15=1; x21+x22+x23+x24+x25=1; x31+x32+x33+x34+x35=1; x41+x42+x43+x44+x45=1; x51+x52+x53+x54+x55=1; x11+x21+x31+x41+x51=1; x12+x22+x32+x42+x52=1; x13+x23+x33+x43+x53=1; x14+x24+x34+x44+x54=1; x15+x25+x35+x45+x55=1; end
Lingo 输出:
Global optimal solution found.
Objective value: 45.00000 Infeasibilities: 0.000000 Total solver iterations: 8
Variable Value Reduced Cost
X11 0.000000 7.000000
X12 0.000000 0.000000
X13 1.000000 0.000000
X14 0.000000 7.000000
X15 0.000000 8.000000
X21 0.000000 4.000000
X22 0.000000 3.000000
X23 0.000000 7.000000
X24 1.000000 0.000000
X25 0.000000 3.000000
X31 0.000000 7.000000
X32 1.000000 0.000000
X33 0.000000 7.000000
X34 0.000000 0.000000
X35 0.000000 8.000000
X41 1.000000 0.000000
X42 0.000000 0.000000
X43 0.000000 3.000000
X44 0.000000 4.000000
X45 0.000000 0.000000
X51 0.000000 4.000000
X52 0.000000 6.000000
X53 0.000000 3.000000
X54 0.000000 6.000000
X55 1.000000 0.000000
Row Slack or Surplus Dual Price
1 45.00000 1.000000
2 0.000000 9.000000
3 0.000000 10.00000
4 0.000000 11.00000
5 0.000000 8.000000
6 0.000000 9.000000
7 0.000000 -1.000000
8 0.000000 -1.000000
9 0.000000 0.000000
10 0.000000 0.000000
11 0.000000 0.000000
(二)集合函数程序
Lingo输入:
model:
sets:
person/1..5/;
area/1..5/;
assign(person,area):A,x;
endsets
data:
A=1,8,9,2,1
5,6,3,10,7
3,10,4,11,3
7,7,5,4,8
4,2,6,3,9;
enddata
max=sum(assign:A*x);
for(person(i):sum(area(j):x(i,j))=1);
for(area(j):sum(person(i):x(i,j))=1);
for(assign(i,j):bin(x(i,j)));
end
Lingo输出:
Global optimal solution found.
Objective value: 45.00000 Objective bound: 45.00000 Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 0
Variable Value Reduced Cost
A( 1, 1) 1.000000 0.000000
A( 1, 2) 8.000000 0.000000
A( 1, 3) 9.000000 0.000000
A( 1, 4) 2.000000 0.000000
A( 1, 5) 1.000000 0.000000
A( 2, 1) 5.000000 0.000000
A( 2, 2) 6.000000 0.000000
A( 2, 3) 3.000000 0.000000
A( 2, 4) 10.00000 0.000000
A( 2, 5) 7.000000 0.000000
A( 3, 1) 3.000000 0.000000
A( 3, 2) 10.00000 0.000000
A( 3, 3) 4.000000 0.000000
A( 3, 4) 11.00000 0.000000
A( 3, 5) 3.000000 0.000000
A( 4, 1) 7.000000 0.000000
A( 4, 2) 7.000000 0.000000
A( 4, 3) 5.000000 0.000000
A( 4, 4) 4.000000 0.000000