运筹学与最优化课程设计二
课程设计 2----某公司的库房设置问题
某公司考虑到在北京、上海、广州和武汉四个城市设立库房,这些库房负责向华北、华中和
华南三个地区供货,每个库房每月可以处理货物 1000 件。在四个城市设立库房每月成本依
次为:4.5 万元、5 万元、7 万元和 4 万元。
此外,每个地区的月平均需求量依次为:500 件、800 件和 700 件。发送货物的费用(单位:
元/件)如表所示。
公司希望在满足地区需求的条件下平均月成本为最小,且还有满足以下条件:
(1)如果在上海设立库房,则必须在武汉也设立库房;
(2)最多设立 3 个库房;
(3)武汉和广州不能同时设立库房。
问:如何设置库房并安排运输?
一.报告内容
(1)在现有约束条件下综合考虑库房设立成本和货物运输
成本,给出最佳设立方案和运输方案。
解:由题意得:
华北
华中
华南
北京
X1
X5
X9
X13
≤1000x1
上海
X2
X6
X10
X14
≤1000x2
广州
X3
X7
X11
X15
≤1000x3
武汉
X4
X8
X12
x16
≤1000x4
和
≤3
≥500
≥800
≥700
目标函数及约束条件:
Min
z=45000x1+50000x2+70000x3+40000x4+200x5+300x6+600x7+350x8+400x9+250x10+350x11+15
0x12+500x13+400x14+300x15+350x16
X1+x2x+x3+x4≥2
X1+x2x+x3+x4≤3
X5+x6+x7+x8≥500
X9+x10+x11+x12≥800
X13+x14+x15+x16≥700
X5+x9+x13≤1000x1
X6+x10+x14≤1000x2
X7+x11+x15≤1000x3
X8+x12+x16≤1000x4
X3+x4≤1
X2-x4≤0
-x1-x2-x3-x4≤-2
X1+x2x+x3+x4≤3
-(X5+x6+x7+x8) ≤-500
-(X9+x10+x11+x12)≤-800
-(X13+x14+x15+x16)≤-700
X5+x9+x13≤1000x1
X6+x10+x14≤1000x2
X7+x11+x15≤1000x3
X8+x12+x16≤1000x4
X3+x4≤1
X2-x4≤0
在 MATLAB 中求解得:
a=[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0;
-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1;
1000,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0;
0,1000,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0;
0,0,1000,0,0,0,-1,0,0,0,-1,0,0,0,-1,0;
0,0,0,1000,0,0,0,-1,0,0,0,-1,0,0,0,-1;
0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0;
0,-1,0,1,0,0,0,0,0,0,0,0,0,0,0,0];
f=[45000,50000,70000,40000,200,300,600,350,400,250,350,150,500,400,300,350]'
b=[-2,3,-500,-800,-700,0,0,0,0,1,0]';
a=-a;
intcon=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
lb=zeros(16,1);
[x,fv,exitflag]=intlinprog(f,intcon,a,b,[ ],[ ], lb)
求解得:
x =
1.0000
1.0000
0
1.0000
500.0000
0
0
0
0
0
0
800.0000
0
500.0000
0
200.0000
fv =
625000
exitflag =
1
在 EXCEL 中求解得:
要在满足地区需求的条件下平均月成本为最小,应该在北京,上海,武汉各设一个仓库,北
京仓库应该向华北地区供货 500 件,上海仓库应该向华南地区供货 500 件,武汉仓库应该向
华中地区供货 800 件,向华南地区供货 200 件。最低成本为 62500 元。
对本题进行灵敏性分析得:
(2)如果将上述两个成本分开考虑,则最佳设立方案和最
优运输方案分别是什么?
此时目标函数及约束条件变为:
Min z1=45000x1+50000x2+70000x3+40000x4
Min
z2=200x5+300x6+600x7+350x8+400x9+250x10+350x11+150x12+500x13+400x14+300x15+350x1
6
约束条件分别为;
X1+x2x+x3+x4≥2
X1+x2x+x3+x4≤3
X3+x4≤1
X2-x4≤0
-x1-x2-x3-x4≤-2
X1+x2x+x3+x4≤3
X3+x4≤1
X2-x4≤0
X5+x6+x7+x8≥500
X9+x10+x11+x12≥800
X13+x14+x15+x16≥700
X5+x9+x13≤1000x1
X6+x10+x14≤1000x2
X7+x11+x15≤1000x3
X8+x12+x16≤1000x4
单独考虑库房成本:
-(X5+x6+x7+x8) ≤-500
-(X9+x10+x11+x12)≤-800
-(X13+x14+x15+x16)≤-700
X5+x9+x13≤1000x1
X6+x10+x14≤1000x2
X7+x11+x15≤1000x3
X8+x12+x16≤1000x4
在 MATLAB 中求解得:
a1=[-1
1
0
0
-1
1
0
1
-1
1
1
0
-1;
1;
1;
-1]
z1=[45000,50000,70000,40000]';
>> b1=[-2,3,1,0]';
>> lb1=zeros(4,1);
>> intcon1=[1,2,3,4];
>> [x,fv,exitflag]=intlinprog(z1,intcon1,a1,b1,[ ],[ ],lb1)
得:
x =
1
0
0
1
fv =
85000
所以要使库房成本最低,应该分别在北京,武汉设立一个库房,最低库房成本为 85000 元。:
单独考虑货物运输成本:
在 MATLAB 中计算得:
a2=-[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0;
-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1;
1000,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0;
0,1000,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0;
0,0,1000,0,0,0,-1,0,0,0,-1,0,0,0,-1,0;
0,0,0,1000,0,0,0,-1,0,0,0,-1,0,0,0,-1;
0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0;
0,-1,0,1,0,0,0,0,0,0,0,0,0,0,0,0];
>> b2=[-2,3,-500,-800,-700,0,0,0,0,1,0]';
>>intcon=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
>> lb=zeros(16,1);
>> z2=[0,0,0,0,200,300,600,350,400,250,350,150,500,400,300,350]';
>> [x,fv,exitflag]=intlinprog(z2,intcon,a2,b2,[ ],[ ], lb)
解得:
x =
1.0000
1.0000
0
1.0000
500.0000
0
0
0
0
0
0
800.0000
0
500.0000
0
200.0000
fv =
4.9000e+05
exitflag =
1
所以单独考虑最佳货物运输成本时,应该在北京,上海,广州,武汉各设一仓库,北京仓库
想华北地区发送货物 500 件,上海仓库应该向华南发送货物 500 件,武汉仓库应该向华中发
送货物 800 件,向华南地区发送 200 件。最低运输成本为 490000 元。
(3)将库房数量约束从 3 改为 2,重复上述过程。
1. 在现有约束条件下综合考虑库房设立成本和货物运输成本,给出最佳设立方
案和运输方案
此时的目标函数和约束条件变为:
Min
z=45000x1+50000x2+70000x3+40000x4+200x5+300x6+600x7+350x8+400x9+250x10+350x11+15
0x12+500x13+400x14+300x15+350x16
X1+x2x+x3+x4≥2
X1+x2x+x3+x4≤2
X5+x6+x7+x8≥500
X9+x10+x11+x12≥800
X13+x14+x15+x16≥700
X5+x9+x13≤1000x1
X6+x10+x14≤1000x2
X7+x11+x15≤1000x3
X8+x12+x16≤1000x4
X3+x4≤1
X2-x4≤0
-x1-x2-x3-x4≤-2
X1+x2x+x3+x4≤2
-(X5+x6+x7+x8) ≤-500
-(X9+x10+x11+x12)≤-800
-(X13+x14+x15+x16)≤-700
X5+x9+x13≤1000x1
X6+x10+x14≤1000x2
X7+x11+x15≤1000x3
X8+x12+x16≤1000x4
X3+x4≤1
X2-x4≤0
在 MATLAB 中求解得:
a=[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0;
-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0;
0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0;
0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0;
0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1;
1000,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0,0;
0,1000,0,0,0,-1,0,0,0,-1,0,0,0,-1,0,0;
0,0,1000,0,0,0,-1,0,0,0,-1,0,0,0,-1,0;
0,0,0,1000,0,0,0,-1,0,0,0,-1,0,0,0,-1;
0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0;
0,-1,0,1,0,0,0,0,0,0,0,0,0,0,0,0];