实 验 报 告
| 专业: | 信息与计算科学 |
| 班级: | |
| 学号: | |
| 姓名: |
相关问题说明:
一、实验性质和教学目的
运筹学实验课是从运筹学中若干模型出发,针对性得学习相关软件,以求学生掌握解决实际问题的方法。
通过运筹学中的实例,让学生学会lingo软件的使用方法,最后让学生利用lingo软件解决运筹学中的问题。
二、实验基本要求
要求学生:
1. 实验前认真做好理论准备,仔细阅读实验指导书;
2. 遵从教师指导,认真完成实验任务,按时按质提交实验报告。
二、主要参考资料
1.LINGO软件
3. 优化建模与LINDO/LINGO软件,清华大学出版社,2005
4.运筹学编写组主编,运筹学(第四版),清华大学出版社,2012
5.胡运权主编,运筹学教程(第二版),清华大学出版社,2003
一、线性规划问题:
1、给出使用lingo软件求解该模型的原始代码;
2、计算结果(包括灵敏度分析,求解结果粘贴);
3、回答下列问题:
a) 最优解及最优目标函数值是多少;
b) 资源的对偶价格各为多少,并说明对偶价格的含义;
c) 为了使目标函数值增加最多,让你选择一个约束条件,将它的常数项增加一个单位,你将选择哪一个约束条件?这时目标函数值将是多少?
d) 对x2的目标函数系数进行灵敏度分析;
e) 对第2个约束的约束右端项进行灵敏度分析;
f ) 结合本题的结果解释“Reduced Cost”的含义。
1、原始代码
max=4*x1+3*x2;
9*x1+8*x2<12;
7*x1+11*x2<24;
9*x1+11*x2<13;
2、结果:
Global optimal solution found.
Objective value: 5.333333
Infeasibilities: 0.000000
Total solver iterations: 2
Variable Value Reduced Cost
X1 1.333333 0.000000
X2 0.000000 0.5555556
Row Slack or Surplus Dual Price
1 5.333333 1.000000
2 0.000000 0.4444444
3 14.66667 0.000000
4 1.000000 0.000000
灵敏度分析:
Ranges in which the basis is unchanged:
Objective Coefficient Ranges
Current Allowable Allowable
Variable Coefficient Increase Decrease
X1 4.000000 INFINITY 0.6250000
X2 3.000000 0.5555556 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
3、回答问题
(a)最优解为:x1=1.333333,x2=0.000000;最优目标函数值是5.333333。
(b)第二行资源的对偶价格为0.4444444,3、4行的对偶价格为0.000000、0.000000;
表示当对应约束有微小变动时,目标函数的变化率。
如:第一个约束条件变为9*x1+8*x2<13时,目标函数值将变为
5.333333+0.4444444= =5.7777774
(c)为了使目标函数值增加最多,选择第一个约束条件,将它的常数项增加一个单位,这时目标函数值将是5.7777774 。
(d)x2原来为3.000000,当它在[3-∞,3+0.5555556]=[-∞,3.5555556]范围变化时,最优基保持不变。
(e)第2行约束中右端项原来为24,当它在
[24-14.66667,24+∞]=[9.33333,∞]范围变化时,最优基保持不变。
(f)“Reduced Cost”代表的值表示当变量有微小变动时, 目标函数的变化率。
本题中变量x2的reduced cost的值为0.5555556,表示当非基变量x2的值从0变为 1时最优的目标函数值z=5.333333+0.4444444= =5.7777774。
二、运输问题:
如下是一个最小费用运输问题。产销量及单位运价如下表。
(1) 给出使用lingo软件求解该问题的原始代码;
(2) 计算结果(决策变量求解结果粘贴)
(1)原始代码:
sets:
warehouses/WH1..WH6/: supply;
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))<=supply(I));!供应约束;
data:
supply=60 55 51 43 41 52;
demand=35 37 22 32 41 32 43 38;
cost=6 2 6 7 4 2 5 9
3 6 5 3 8 9 8 2
7 6 1 5 7 4 3 3
5 2 7 3 9 2 7 1
2 3 9 5 5 2 6 5
5 7 2 2 3 1 4 3;
enddata
end
(2)求解结果:
Global optimal solution found.
Objective value: 634.0000
Infeasibilities: 0.000000
Total solver iterations: 16
Variable Value Reduced Cost
SUPPLY( WH1) 60.00000 0.000000
SUPPLY( WH2) 55.00000 0.000000
SUPPLY( WH3) 51.00000 0.000000
SUPPLY( WH4) 43.00000 0.000000
SUPPLY( WH5) 41.00000 0.000000
SUPPLY( WH6) 52.00000 0.000000
DEMAND( V1) 35.00000 0.000000
DEMAND( V2) 37.00000 0.000000
DEMAND( V3) 22.00000 0.000000
DEMAND( V4) 32.00000 0.000000
DEMAND( V5) 41.00000 0.000000
DEMAND( V6) 32.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) 6.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) 3.000000 0.000000
COST( WH2, V2) 6.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) 9.000000 0.000000
COST( WH2, V7) 8.000000 0.000000
COST( WH2, V8) 2.000000 0.000000
COST( WH3, V1) 7.000000 0.000000
COST( WH3, V2) 6.000000 0.000000
COST( WH3, V3) 1.000000 0.000000
COST( WH3, V4) 5.000000 0.000000
COST( WH3, V5) 7.000000 0.000000
COST( WH3, V6) 4.000000 0.000000
COST( WH3, V7) 3.000000 0.000000
COST( WH3, V8) 3.000000 0.000000
COST( WH4, V1) 5.000000 0.000000
COST( WH4, V2) 2.000000 0.000000
COST( WH4, V3) 7.000000 0.000000
COST( WH4, V4) 3.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) 9.000000 0.000000
COST( WH5, V4) 5.000000 0.000000
COST( WH5, V5) 5.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) 7.000000 0.000000
COST( WH6, V3) 2.000000 0.000000
COST( WH6, V4) 2.000000 0.000000
COST( WH6, V5) 3.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) 31.00000 0.000000
VOLUME( WH1, V3) 0.000000 3.000000
VOLUME( WH1, V4) 0.000000 5.000000
VOLUME( WH1, V5) 29.00000 0.000000
VOLUME( WH1, V6) 0.000000 0.000000
VOLUME( WH1, V7) 0.000000 0.000000
VOLUME( WH1, V8) 0.000000 8.000000
VOLUME( WH2, V1) 0.000000 0.000000
VOLUME( WH2, V2) 0.000000 3.000000
VOLUME( WH2, V3) 0.000000 1.000000
VOLUME( WH2, V4) 32.00000 0.000000
VOLUME( WH2, V5) 0.000000 3.000000
VOLUME( WH2, V6) 0.000000 6.000000
VOLUME( WH2, V7) 0.000000 2.000000
VOLUME( WH2, V8) 1.000000 0.000000
VOLUME( WH3, V1) 0.000000 7.000000
VOLUME( WH3, V2) 0.000000 6.000000
VOLUME( WH3, V3) 8.000000 0.000000
VOLUME( WH3, V4) 0.000000 5.000000
VOLUME( WH3, V5) 0.000000 5.000000
VOLUME( WH3, V6) 0.000000 4.000000
VOLUME( WH3, V7) 43.00000 0.000000
VOLUME( WH3, V8) 0.000000 4.000000
VOLUME( WH4, V1) 0.000000 3.000000
VOLUME( WH4, V2) 6.000000 0.000000
VOLUME( WH4, V3) 0.000000 4.000000
VOLUME( WH4, V4) 0.000000 1.000000
VOLUME( WH4, V5) 0.000000 5.000000
VOLUME( WH4, V6) 0.000000 0.000000
VOLUME( WH4, V7) 0.000000 2.000000
VOLUME( WH4, V8) 37.00000 0.000000
VOLUME( WH5, V1) 35.00000 0.000000
VOLUME( WH5, V2) 0.000000 1.000000
VOLUME( WH5, V3) 0.000000 6.000000
VOLUME( WH5, V4) 0.000000 3.000000
VOLUME( WH5, V5) 0.000000 1.000000
VOLUME( WH5, V6) 6.000000 0.000000
VOLUME( WH5, V7) 0.000000 1.000000
VOLUME( WH5, V8) 0.000000 4.000000
VOLUME( WH6, V1) 0.000000 4.000000
VOLUME( WH6, V2) 0.000000 6.000000
VOLUME( WH6, V3) 14.00000 0.000000
VOLUME( WH6, V4) 0.000000 1.000000
VOLUME( WH6, V5) 12.00000 0.000000
VOLUME( WH6, V6) 26.00000 0.000000
VOLUME( WH6, V7) 0.000000 0.000000
VOLUME( WH6, V8) 0.000000 3.000000
Row Slack or Surplus Dual Price
1 634.0000 -1.000000
2 0.000000 -3.000000
3 0.000000 -3.000000
4 0.000000 -4.000000
5 0.000000 -3.000000
6 0.000000 -5.000000
7 0.000000 -3.000000
8 0.000000 -6.000000
9 0.000000 -2.000000
10 0.000000 1.000000
11 22.00000 0.000000
12 0.000000 3.000000
13 0.000000 1.000000
14 0.000000 1.000000
15 0.000000 2.000000
三、一般整数规划问题:
新天地购物广场某一层各时段(每2h为一时段)需要的服务员人数见下表。按规定,服务员连续工作8h(即四个时段)为一班。现要求安排服务员的工作时间,使服务部门服务员总数最少。
| 时 段 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 服务员最少数目 | 20 | 16 | 18 | 22 | 26 | 16 | 10 | 6 |
(2) 计算结果(决策变量求解结果粘贴)
(1)原始代码:
model:
sets:
time/x1..x8/: required,start;
endsets
data:
!每天所需的最少职员数;
required = 20 16 18 22 26 16 10 6;
enddata
!最小化每天所需职员数;
min=@sum(time: start);
@for(time (J):
@sum(time(I) | I#le# 4:
start(@wrap(J+I+2,8))) >= required(J));
end
(2)计算结果:
Global optimal solution found.
Objective value: 46.00000
Infeasibilities: 0.000000
Total solver iterations: 3
Variable Value Reduced Cost
REQUIRED( X1) 20.00000 0.000000
REQUIRED( X2) 16.00000 0.000000
REQUIRED( X3) 18.00000 0.000000
REQUIRED( X4) 22.00000 0.000000
REQUIRED( X5) 26.00000 0.000000
REQUIRED( X6) 16.00000 0.000000
REQUIRED( X7) 10.00000 0.000000
REQUIRED( X8) 6.000000 0.000000
START( X1) 26.00000 0.000000
START( X2) 0.000000 0.000000
START( X3) 0.000000 0.000000
START( X4) 4.000000 0.000000
START( X5) 16.00000 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 46.00000 -1.000000
2 0.000000 -1.000000
3 0.000000 0.000000
4 8.000000 0.000000
5 4.000000 0.000000
6 0.000000 -1.000000
7 14.00000 0.000000
8 10.00000 0.000000
9 14.00000 0.000000
四、指派问题:
已知如下效率矩阵,求极大化指派问题。
| B1 | B2 | B3 | B4 | B5 | |
| A1 | 4 | 8 | 7 | 15 | 12 |
| A2 | 7 | 9 | 17 | 14 | 10 |
| A3 | 6 | 9 | 12 | 8 | 7 |
| A4 | 6 | 7 | 14 | 6 | 10 |
| A5 | 6 | 9 | 12 | 10 | 6 |
(2) 计算结果(决策变量求解结果粘贴)
(1)原始代码:
model:
!5个工人,5个工作的分配问题;
sets:
workers/w1..w5/;
jobs/j1..j5/;
links(workers,jobs):cost,volume;
endsets
!目标函数;
max=@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
(2)计算结果:
Global optimal solution found.
Objective value: 57.00000
Infeasibilities: 0.000000
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 7.000000
VOLUME( W1, J2) 0.000000 6.000000
VOLUME( W1, J3) 0.000000 10.00000
VOLUME( W1, J4) 1.000000 0.000000
VOLUME( W1, J5) 0.000000 1.000000
VOLUME( W2, J1) 0.000000 4.000000
VOLUME( W2, J2) 0.000000 5.000000
VOLUME( W2, J3) 1.000000 0.000000
VOLUME( W2, J4) 0.000000 1.000000
VOLUME( W2, J5) 0.000000 3.000000
VOLUME( W3, J1) 1.000000 0.000000
VOLUME( W3, J2) 0.000000 0.000000
VOLUME( W3, J3) 0.000000 0.000000
VOLUME( W3, J4) 0.000000 2.000000
VOLUME( W3, J5) 0.000000 1.000000
VOLUME( W4, J1) 0.000000 2.000000
VOLUME( W4, J2) 0.000000 4.000000
VOLUME( W4, J3) 0.000000 0.000000
VOLUME( W4, J4) 0.000000 6.000000
VOLUME( W4, J5) 1.000000 0.000000
VOLUME( W5, J1) 0.000000 0.000000
VOLUME( W5, J2) 1.000000 0.000000
VOLUME( W5, J3) 0.000000 0.000000
VOLUME( W5, J4) 0.000000 0.000000
VOLUME( W5, J5) 0.000000 2.000000
Row Slack or Surplus Dual Price
1 57.00000 1.000000
2 0.000000 14.00000
3 0.000000 14.00000
4 0.000000 9.000000
5 0.000000 11.00000
6 0.000000 9.000000
7 0.000000 -3.000000
8 0.000000 0.000000
9 0.000000 3.000000
10 0.000000 1.000000
11 0.000000 -1.000000
故指派问题结果为:A1做B4工作,A2做B3工作,A3做B1工作,A4做B5工作,A5做B2工作。下载本文