数学模型实验报告-lingo软件的使用-习题代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
运筹学
实验报告
姓名:
学号:
班级:
相关问题说明:
一、实验性质和教学目的
本实验是运筹学课内安排的上机操作实验。
目的在于了解、熟悉计算机Lingo软件在运筹学模型求解中的作用,激发学习兴趣,提高学习效果,增强自身的动手能力,提高实际应用能力。
二、实验基本要求
要求学生:
1. 实验前认真做好理论准备,仔细阅读实验指导书;
2. 遵从教师指导,认真完成实验任务,按时按质提交实验报告。
三、主要参考资料
1.LINGO软件
2. LINGO8.0及其在环境系统优化中的应用,天津大学出版社,2005
3. 优化建模与LINDO/LINGO软件,清华大学出版社,2005
4.运筹学编写组主编,运筹学(修订版),清华大学出版社,1990
5.蓝伯雄主编,管理数学(下)—运筹学,清华大学出版社,1997
6.胡运权主编,运筹学习题集(修订版),清华大学出版社,1995
7.胡运权主编,运筹学教程(第二版),清华大学出版社,2003
实验内容
1、线性规划问题:
⎪⎪⎩⎪⎪
⎨
⎧≥≤+≤+≤++=0
,13119241171289..68max 2121212121x x x x x x x x t s x x z (1) 给出原始代码;(2) 计算结果(包括灵敏度分析,求解结果粘贴);
(3) 回答下列问题(手写):
a ) 最优解及最优目标函数值是多少;
b ) 资源的对偶价格各为多少,并说明对偶价格的含义;
c ) 为了使目标函数值增加最多,让你选择一个约束条件,将它的常数项增加一个单位,你将选择哪一个约束条件?这时目标函数值将是多少?
d ) 对x 2的目标函数系数进行灵敏度分析;
e ) 对第2个约束的约束右端项进行灵敏度分析;
f ) 结合本题的结果解释“Reduced Cost ”的含义。
对偶价格就是说 约束方程右端变量增加1对目标函数值的影响 答案: (1)代码
max =8*x1+6*x2; 9*x1+8*x2<=12; 7*x1+11*x2<=24; 9*x1+11*x2<=13; x1>=0; x2>=0;
(2)计算结果
Global optimal solution found.
Objective value: 10.66667 Total solver iterations: 2
Variable Value Reduced Cost X1 1.333333 0.000000 X2 0.000000 1.111111
Row Slack or Surplus Dual Price 1 10.66667 1.000000 2 0.000000 0.8888889 3 14.66667 0.000000 4 1.000000 0.000000 5 1.333333 0.000000
Ranges in which the basis is unchanged:
Objective Coefficient Ranges
Current Allowable Allowable Variable Coefficient Increase Decrease X1 8.000000 INFINITY 1.250000 X2 6.000000 1.111111 INFINITY
Righthand Side Ranges
Row Current Allowable Allowable RHS Increase Decrease 2 12.00000 1.000000 12.00000 3 24.00000 INFINITY 14.66667 4 13.00000 INFINITY 1.000000 5 0.0 1.333333 INFINITY 6 0.0 0.0 INFINITY
(3)a) b) c) d) e) f)
2、运输问题:
(1) 给出原始代码;(2) 计算结果(决策变量求解结果粘贴)
Min Z = Cij Xij
∑
=6
1i Xij <=bj (j=1...8) 销量约束
∑
=8
1
j Xij = ai (i=1...6) 产量约束
∑∑
==618
1
i j
Xij ≥ 0(i=1...6;j=1...8)
代码:
model:
!6发点8 model:
!6发点8收点运输问题;
sets:
warehouses/wh1..wh6/: capacity;
vendors/v1..v8/: demand;
links(warehouses,vendors): cost, volume;
endsets
min=@sum(links: cost*volume); !目标函数;
@for(vendors(J):
@sum(warehouses(I): volume(I,J))<=demand(J)); !需求约束;
@for(warehouses(I):
@sum(vendors(J): volume(I,J))=capacity(I)); !产量约束; !这里是数据;
data:
capacity=55 47 42 52 41 32;
demand=60 55 51 43 41 52 43 38;
cost=6 2 9 7 4 2 5 9
4 5 5 3 8 5 3 2
5 2 1 3 7 4 8 3
7 6 7 9 9 2 7 1
2 3 6 5 7 2 6 5
5 9 2 2 8 1 4 3;
enddata
end
答案
Global optimal solution found.
Objective value: 473.0000 Infeasibilities: 0.000000 Total solver iterations: 9
Model Class: LP
Total variables: 48
Nonlinear variables: 0
Integer variables: 0
Total constraints: 15
Nonlinear constraints: 0
Total nonzeros: 144
Nonlinear nonzeros: 0
Variable Value Reduced Cost CAPACITY( WH1) 55.00000 0.000000 CAPACITY( WH2) 47.00000 0.000000 CAPACITY( WH3) 42.00000 0.000000 CAPACITY( WH4) 52.00000 0.000000 CAPACITY( WH5) 41.00000 0.000000 CAPACITY( WH6) 32.00000 0.000000 DEMAND( V1) 60.00000 0.000000 DEMAND( V2) 55.00000 0.000000 DEMAND( V3) 51.00000 0.000000 DEMAND( V4) 43.00000 0.000000 DEMAND( V5) 41.00000 0.000000 DEMAND( V6) 52.00000 0.000000 DEMAND( V7) 43.00000 0.000000 DEMAND( V8) 38.00000 0.000000 COST( WH1, V1) 6.000000 0.000000 COST( WH1, V2) 2.000000 0.000000 COST( WH1, V3) 9.000000 0.000000 COST( WH1, V4) 7.000000 0.000000 COST( WH1, V5) 4.000000 0.000000 COST( WH1, V6) 2.000000 0.000000 COST( WH1, V7) 5.000000 0.000000 COST( WH1, V8) 9.000000 0.000000 COST( WH2, V1) 4.000000 0.000000 COST( WH2, V2) 5.000000 0.000000 COST( WH2, V3) 5.000000 0.000000 COST( WH2, V4) 3.000000 0.000000 COST( WH2, V5) 8.000000 0.000000 COST( WH2, V6) 5.000000 0.000000 COST( WH2, V7) 3.000000 0.000000 COST( WH2, V8) 2.000000 0.000000 COST( WH3, V1) 5.000000 0.000000 COST( WH3, V2) 2.000000 0.000000 COST( WH3, V3) 1.000000 0.000000 COST( WH3, V4) 3.000000 0.000000 COST( WH3, V5) 7.000000 0.000000 COST( WH3, V6) 4.000000 0.000000 COST( WH3, V7) 8.000000 0.000000 COST( WH3, V8) 3.000000 0.000000 COST( WH4, V1) 7.000000 0.000000
COST( WH4, V4) 9.000000 0.000000 COST( WH4, V5) 9.000000 0.000000 COST( WH4, V6) 2.000000 0.000000 COST( WH4, V7) 7.000000 0.000000 COST( WH4, V8) 1.000000 0.000000 COST( WH5, V1) 2.000000 0.000000 COST( WH5, V2) 3.000000 0.000000 COST( WH5, V3) 6.000000 0.000000 COST( WH5, V4) 5.000000 0.000000 COST( WH5, V5) 7.000000 0.000000 COST( WH5, V6) 2.000000 0.000000 COST( WH5, V7) 6.000000 0.000000 COST( WH5, V8) 5.000000 0.000000 COST( WH6, V1) 5.000000 0.000000 COST( WH6, V2) 9.000000 0.000000 COST( WH6, V3) 2.000000 0.000000 COST( WH6, V4) 2.000000 0.000000 COST( WH6, V5) 8.000000 0.000000 COST( WH6, V6) 1.000000 0.000000 COST( WH6, V7) 4.000000 0.000000 COST( WH6, V8) 3.000000 0.000000 VOLUME( WH1, V1) 0.000000 4.000000 VOLUME( WH1, V2) 55.00000 0.000000 VOLUME( WH1, V3) 0.000000 7.000000 VOLUME( WH1, V4) 0.000000 5.000000 VOLUME( WH1, V5) 0.000000 2.000000 VOLUME( WH1, V6) 0.000000 0.000000 VOLUME( WH1, V7) 0.000000 3.000000 VOLUME( WH1, V8) 0.000000 8.000000 VOLUME( WH2, V1) 0.000000 1.000000 VOLUME( WH2, V2) 0.000000 2.000000 VOLUME( WH2, V3) 0.000000 2.000000 VOLUME( WH2, V4) 43.00000 0.000000 VOLUME( WH2, V5) 0.000000 5.000000 VOLUME( WH2, V6) 0.000000 2.000000 VOLUME( WH2, V7) 4.000000 0.000000 VOLUME( WH2, V8) 0.000000 0.000000 VOLUME( WH3, V1) 0.000000 4.000000 VOLUME( WH3, V2) 0.000000 1.000000 VOLUME( WH3, V3) 42.00000 0.000000 VOLUME( WH3, V4) 0.000000 2.000000 VOLUME( WH3, V5) 0.000000 6.000000 VOLUME( WH3, V6) 0.000000 3.000000
VOLUME( WH4, V1) 0.000000 5.000000 VOLUME( WH4, V2) 0.000000 4.000000 VOLUME( WH4, V3) 0.000000 5.000000 VOLUME( WH4, V4) 0.000000 7.000000 VOLUME( WH4, V5) 0.000000 7.000000 VOLUME( WH4, V6) 14.00000 0.000000 VOLUME( WH4, V7) 0.000000 5.000000 VOLUME( WH4, V8) 38.00000 0.000000 VOLUME( WH5, V1) 41.00000 0.000000 VOLUME( WH5, V2) 0.000000 1.000000 VOLUME( WH5, V3) 0.000000 4.000000 VOLUME( WH5, V4) 0.000000 3.000000 VOLUME( WH5, V5) 0.000000 5.000000 VOLUME( WH5, V6) 0.000000 0.000000 VOLUME( WH5, V7) 0.000000 4.000000 VOLUME( WH5, V8) 0.000000 4.000000 VOLUME( WH6, V1) 0.000000 4.000000 VOLUME( WH6, V2) 0.000000 8.000000 VOLUME( WH6, V3) 0.000000 1.000000 VOLUME( WH6, V4) 0.000000 1.000000 VOLUME( WH6, V5) 0.000000 7.000000 VOLUME( WH6, V6) 32.00000 0.000000 VOLUME( WH6, V7) 0.000000 3.000000 VOLUME( WH6, V8) 0.000000 3.000000
Row Slack or Surplus Dual Price
1 473.0000 -1.000000
2 19.00000 0.000000
3 0.000000 0.000000
4 9.000000 0.000000
5 0.000000 0.000000
6 41.00000 0.000000
7 6.000000 0.000000
8 39.00000 0.000000
9 0.000000 1.000000
10 0.000000 -2.000000
11 0.000000 -3.000000
12 0.000000 -1.000000
13 0.000000 -2.000000
14 0.000000 -2.000000
15 0.000000 -1.000000
3、一般整数规划问题:
某服务部门各时段(每2h为一时段)需要的服务员人数见下表。
按规定,服务员连续工作8h(即四个时段)为一班。
现要求安排服务员的工作时间,使服务部门服务员总数最少。
(1) 给出原始代码;(2) 计算结果(决策变量求解结果粘贴)
model:
sets:
time/x1..x8/: required,start;
endsets
data:
!每天所需的最少职员数;
required = 10 8 9 11 13 8 5 3;
enddata
!最小化每周所需职员数;
min=@sum(time: start);
@for(time (J):
@sum(time(I) | I #le# 4:
start(@wrap(J+I+2,8))) >= required(J));
end
结果
Global optimal solution found.
Objective value: 23.00000
Total solver iterations: 3
Variable Value Reduced Cost
REQUIRED( X1) 10.00000 0.000000
REQUIRED( X2) 8.000000 0.000000
REQUIRED( X3) 9.000000 0.000000
REQUIRED( X4) 11.00000 0.000000
REQUIRED( X5) 13.00000 0.000000
REQUIRED( X6) 8.000000 0.000000
REQUIRED( X7) 5.000000 0.000000
REQUIRED( X8) 3.000000 0.000000
START( X1) 13.00000 0.000000
START( X2) 0.000000 0.000000
START( X3) 0.000000 0.000000
START( X4) 2.000000 0.000000
START( X5) 8.000000 0.000000
START( X6) 0.000000 0.000000
START( X7) 0.000000 0.000000
START( X8) 0.000000 0.000000
Row Slack or Surplus Dual Price
1 23.00000 -1.000000
2 0.000000 -1.000000
3 0.000000 0.000000
4 4.000000 0.000000
5 2.000000 0.000000
6 0.000000 -1.000000
7 7.000000 0.000000
8 5.000000 0.000000
9 7.000000 0.000000 4、指派问题:
已知如下效率矩阵,求极大化指派问题。
(1) 给出原始代码;(2) 计算结果(决策变量求解结果粘贴)
model:
!5个工人,5个工作的分配问题;
sets:
workers/w1..w5/;
jobs/j1..j5/;
links(workers,jobs): cost,volume;
endsets
!目标函数;
min=@sum(links: cost*volume);
!每个工人只能有一份工作;
@for(workers(I):
@sum(jobs(J): volume(I,J))=1;
);
!每份工作只能有一个工人;
@for(jobs(J):
@sum(workers(I): volume(I,J))=1;
);
data:
cost= 4 8 7 15 12
7 9 17 14 10
6 9 12 8 7
6 7 14 6 10
6 9 12 10 6;
enddata
end
答案
Global optimal solution found.
Objective value: 34.00000
Total solver iterations: 10
Variable Value Reduced Cost COST( W1, J1) 4.000000 0.000000 COST( W1, J2) 8.000000 0.000000 COST( W1, J3) 7.000000 0.000000 COST( W1, J4) 15.00000 0.000000 COST( W1, J5) 12.00000 0.000000 COST( W2, J1) 7.000000 0.000000 COST( W2, J2) 9.000000 0.000000 COST( W2, J3) 17.00000 0.000000 COST( W2, J4) 14.00000 0.000000 COST( W2, J5) 10.00000 0.000000 COST( W3, J1) 6.000000 0.000000 COST( W3, J2) 9.000000 0.000000 COST( W3, J3) 12.00000 0.000000 COST( W3, J4) 8.000000 0.000000 COST( W3, J5) 7.000000 0.000000 COST( W4, J1) 6.000000 0.000000 COST( W4, J2) 7.000000 0.000000 COST( W4, J3) 14.00000 0.000000 COST( W4, J4) 6.000000 0.000000 COST( W4, J5) 10.00000 0.000000 COST( W5, J1) 6.000000 0.000000 COST( W5, J2) 9.000000 0.000000 COST( W5, J3) 12.00000 0.000000 COST( W5, J4) 10.00000 0.000000 COST( W5, J5) 6.000000 0.000000 VOLUME( W1, J1) 0.000000 3.000000 VOLUME( W1, J2) 0.000000 5.000000 VOLUME( W1, J3) 1.000000 0.000000 VOLUME( W1, J4) 0.000000 13.00000 VOLUME( W1, J5) 0.000000 11.00000 VOLUME( W2, J1) 0.000000 0.000000 VOLUME( W2, J2) 1.000000 0.000000 VOLUME( W2, J3) 0.000000 4.000000 VOLUME( W2, J4) 0.000000 6.000000 VOLUME( W2, J5) 0.000000 3.000000 VOLUME( W3, J1) 1.000000 0.000000 VOLUME( W3, J2) 0.000000 1.000000
VOLUME( W3, J3) 0.000000 0.000000
VOLUME( W3, J4) 0.000000 1.000000
VOLUME( W3, J5) 0.000000 1.000000
VOLUME( W4, J1) 0.000000 1.000000
VOLUME( W4, J2) 0.000000 0.000000
VOLUME( W4, J3) 0.000000 3.000000
VOLUME( W4, J4) 1.000000 0.000000
VOLUME( W4, J5) 0.000000 5.000000
VOLUME( W5, J1) 0.000000 0.000000
VOLUME( W5, J2) 0.000000 1.000000
VOLUME( W5, J3) 0.000000 0.000000
VOLUME( W5, J4) 0.000000 3.000000
VOLUME( W5, J5) 1.000000 0.000000
Row Slack or Surplus Dual Price
1 34.00000 -1.000000
2 0.000000 -1.000000
3 0.000000 -7.000000
4 0.000000 -6.000000
5 0.000000 -5.000000
6 0.000000 -6.000000
7 0.000000 0.000000
8 0.000000 -2.000000
9 0.000000 -6.000000
10 0.000000 -1.000000
11 0.000000 0.000000
5、一维资源分配问题:
某工业部门根据国家计划的安排,拟将某种高效率的设备五台,分配给所属的甲、乙、丙三个工厂,各工厂若获得这种设备之后,可以为国家提供的盈利如下表所示。
(1) 给出原始代码;(2) 计算结果(决策变量求解结果粘贴)
代码
sets:
R/1..6/:z;
L/1..3/;
c(R,L):x,y;
endsets
data:
X=0 0 0
5 5 4
15 15 26
40 40 40
80 60 45
90 70 50;
z=0 1 2 3 4 5;
enddata
max=@sum(c(i,j):X(i,j)*y(i,j));
@for(l(i):
@sum(c(j,k)|k#eq# 1:y(j,k))=1);
@sum(c(i,j):y(i,j)*z(i))=5;
@for(c(i,j):@B in(y(i,j)));
end
答案
Global optimal solution found.
Objective value: 90.00000
Extended solver steps: 0
Total solver iterations: 0
Variable Value Reduced Cost Z( 1) 0.000000 0.000000 Z( 2) 1.000000 0.000000 Z( 3) 2.000000 0.000000 Z( 4) 3.000000 0.000000 Z( 5) 4.000000 0.000000 Z( 6) 5.000000 0.000000 X( 1, 1) 0.000000 0.000000 X( 1, 2) 0.000000 0.000000 X( 1, 3) 0.000000 0.000000 X( 2, 1) 5.000000 0.000000 X( 2, 2) 5.000000 0.000000 X( 2, 3) 4.000000 0.000000 X( 3, 1) 15.00000 0.000000 X( 3, 2) 15.00000 0.000000 X( 3, 3) 26.00000 0.000000 X( 4, 1) 40.00000 0.000000 X( 4, 2) 40.00000 0.000000 X( 4, 3) 40.00000 0.000000 X( 5, 1) 80.00000 0.000000 X( 5, 2) 60.00000 0.000000 X( 5, 3) 45.00000 0.000000
X( 6, 1) 90.00000 0.000000 X( 6, 2) 70.00000 0.000000 X( 6, 3) 50.00000 0.000000 Y( 1, 1) 0.000000 0.000000 Y( 1, 2) 0.000000 0.000000 Y( 1, 3) 0.000000 0.000000 Y( 2, 1) 0.000000 -5.000000 Y( 2, 2) 0.000000 -5.000000 Y( 2, 3) 0.000000 -4.000000 Y( 3, 1) 0.000000 -15.00000 Y( 3, 2) 0.000000 -15.00000 Y( 3, 3) 0.000000 -26.00000 Y( 4, 1) 0.000000 -40.00000 Y( 4, 2) 0.000000 -40.00000 Y( 4, 3) 0.000000 -40.00000 Y( 5, 1) 0.000000 -80.00000 Y( 5, 2) 0.000000 -60.00000 Y( 5, 3) 0.000000 -45.00000 Y( 6, 1) 1.000000 -90.00000 Y( 6, 2) 0.000000 -70.00000 Y( 6, 3) 0.000000 -50.00000 Row Slack or Surplus Dual Price 1 90.00000 1.000000 2 0.000000 0.000000 3 0.000000 0.000000 4 0.000000 0.000000 5 0.000000 0.000000
6、最短路问题:
求从V 1至V 10的最短路。
l 1,2=6, l 1,3=5, l 2,4=3, l 2,5=6, l 2,6=9, l 3,4=7, l 3,5=5, l 3,6=11, l 4,7=9, l 4,8=1, l 5,7=8, l 5,8=7, l 5,9=5, l 6,8=4, l 6,9=10, l 7,10=5, l 8,10=7, l 9,10=9 V 1 V 2 V 3 V 4 V 5 V 6 V 7 V 8 V 9
V 10
(l i
表示V i到V j之间的权重)
,j
(1) 给出原始代码;(2) 计算结果(决策变量求解结果粘贴)
!最短路问题;
model:
data:
n=10;
enddata
sets:
cities/1..n/: F; !10个城市;
roads(cities,cities)/
1,2 1,3
2,4 2,5 2,6
3,4 3,5 3,6
4,7 4,8
5,7 5,8 5,9
6,8 6,9
7,10
8,10
9,10
/: D, P;
endsets
data:
D=
6 5
3 6 9
7 5 11
9 1
8 7 5
4 10
5
7
9;
enddata
F(n)=0;
@for(cities(i) | i #lt# n:
F(i)=@min(roads(i,j): D(i,j)+F(j));
);
!显然,如果P(i,j)=1,则点i到点n的最短路径的第一步是i --> j,否则就不是。
由此,我们就可方便的确定出最短路径;
@for(roads(i,j):
P(i,j)=@if(F(i) #eq# D(i,j)+F(j),1,0)
);
end
答案
Feasible solution found.
Total solver iterations: 0
Variable Value
N 10.00000
F( 2) 11.00000 F( 3) 15.00000 F( 4) 8.000000 F( 5) 13.00000 F( 6) 11.00000 F( 7) 5.000000 F( 8) 7.000000 F( 9) 9.000000 F( 10) 0.000000 D( 1, 2) 6.000000 D( 1, 3) 5.000000 D( 2, 4) 3.000000 D( 2, 5) 6.000000 D( 2, 6) 9.000000 D( 3, 4) 7.000000 D( 3, 5) 5.000000 D( 3, 6) 11.00000 D( 4, 7) 9.000000 D( 4, 8) 1.000000 D( 5, 7) 8.000000 D( 5, 8) 7.000000 D( 5, 9) 5.000000 D( 6, 8) 4.000000 D( 6, 9) 10.00000 D( 7, 10) 5.000000 D( 8, 10) 7.000000 D( 9, 10) 9.000000 P( 1, 2) 1.000000 P( 1, 3) 0.000000 P( 2, 4) 1.000000 P( 2, 5) 0.000000 P( 2, 6) 0.000000 P( 3, 4) 1.000000 P( 3, 5) 0.000000 P( 3, 6) 0.000000 P( 4, 7) 0.000000 P( 4, 8) 1.000000 P( 5, 7) 1.000000 P( 5, 8) 0.000000 P( 5, 9) 0.000000 P( 6, 8) 1.000000 P( 6, 9) 0.000000 P( 7, 10) 1.000000 P( 8, 10) 1.000000
Row Slack or Surplus
1 0.000000
2 0.000000
3 0.000000
4 0.000000
5 0.000000
6 0.000000
7 0.000000
8 0.000000
9 0.000000
10 0.000000
11 0.000000
12 0.000000
13 0.000000
14 0.000000
15 0.000000
16 0.000000
17 0.000000
18 0.000000
19 0.000000
20 0.000000
21 0.000000
22 0.000000
23 0.000000
24 0.000000
25 0.000000
26 0.000000
27 0.000000
28 0.000000。