新光明市菜篮子问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
新光明市菜篮子问题
————————————————————————————————作者:————————————————————————————————日期:
摘要:
菜市场供应问题实际上是最优分配问题,组合优化问题可以利用线性规划问题来解答,同时利用lingo软件的强大功能来得出最优组合。
关键字:线性规划 LINGO 组合优化
一、问题重述:
光明市是一个人口不到15万人的小城市。
该市有ABC三个蔬菜收购点,再由各收购点分送到全市的8个菜市场,各菜市场的每天需求量及发生供应短缺时带来的损失也是确定的,从收购点到各菜市场调运费为1元/(100kg.100m). 问题一:设计一个供应方案,使用于蔬菜调运及预期的短缺损失为最小;
问题二:规定各菜市场短缺量不超过需求量的20%,重新设计供应方案;
问题三:增加蔬菜种植面积,试问增产的蔬菜每天应分别向A,B,C三个采购点供应多少最经济合理。
二、符号说明:
x第i个集散点向第j个菜市场供应蔬菜的数量
()ij
L第i个集散点到第j个菜市场的距离(两点之间的最短距离) ()ij
b第j个市场每天的需求量
j
d第j个市场每天的短缺损失
j
a第i个集散点每天的收购量
i
c第i个集散点向第j个菜市场的单位运费
()ij
i=1,2,3,4,5,6,7,8)
j=
(1,2,3
三、模型假设:
1、收购点的供应量及菜市场的需求量不变;
2、价格对需求量没有影响;
3、不考虑运送过程中对蔬菜的影响;
4、认为每一天的蔬菜需求量都为题目中的数据,不会发生变化;
5、不考虑其他因素对运输的影响。
四、问题分析:
问题一是要设计一个从收购点至个菜市场的定点供应方案,使用于蔬菜调运及预
期的短缺损失为最小,要得到最优的方案那费肯定就是的最小。
就可以把问题转换为求最短路和最小费用问题,从而可以用线性规划来求解。
问题二是说若规定各菜市场短缺量一律不超过需求量的20%,重新设计定点供应方案即在问题一的基础之上更改约束条件即可求得。
问题三中说为满足城市居民的蔬菜供应,光明市的领导规划增加蔬菜种植面积,试问增产的蔬菜每天应分别向A,B,C 三个采购点供应多少最经济合理。
假设供应满足需求的前提下,求最优组合,及不计损耗的最小运输费用。
即可求出最经济合理的采购方案。
五、模型建立:
模型一:
为该市设计一个从各集散点至各菜市场的定点供应方案,使用于蔬菜调运及预期的短缺损失为最小。
即蔬菜调运费用和短缺损失费用之和最小。
目标函数:Min 1111((())*())m n n m
ij ij ij i j j i Z C x b j x d j =====+-∑∑∑∑ ⑴
约束条件:
某集散点的运输量应小于其需求量
()1
m ij i x
b j =≤∑ ⑵ 某收购点给各集散点的运输量应小于其收购量
()1
n ij j x a i =≤∑ ⑶
运输量非负
0ij x ≥ ⑷
模型二:
即各集散地运往菜市场的运量应不小于需求量的80%。
即在原先的基础上再设定新的约束条件
目标函数:Min 1111((())*())m n n m
ij ij ij i j j i Z C x b j x d j =====+-∑∑∑∑ ⑸
约束条件:()()10.8m
ij i b j x b j =≤≤∑ ⑹
()1n
ij j x a i =≤∑ ⑺
0ij x ≥ ⑻
模型三:
由于各菜市场的需求量大于各集散点的收购量,所以要增大收购量来满足短缺的需求。
即收购量大于目前的量,使需求量得到满足,不再产生短缺损失。
目标函数:Min 11m n
ij ij i j Z C x ===∑∑ ⑼
约束条件:()1m
ij i x b j ==∑ ⑽
()1n
ij j x a i =≥∑ ⑾
0ij x ≥ ⑿
六、模型求解:
模型一:
MODEL :
SETS :
jsd/1..3/:a;!三个集散地,收购量a(i);
csc/1..8/:b;!八个菜市场,每天需求量b(j);
dqss/1..8/:d;!各菜市场的单位短缺损失d(j);
j_c(jsd,csc):x,c,l;!i 到j 的距离矩阵为l(i,j),单位运费c(i,j),决策变量为 x(i,j);
ENDSETS
DATA :
a=200,170,160;
b=75,60,80,70,100,55,90,80;
d=10,8,5,10,10,8,5,8;
l=4,8,8,19,11,6,22,26,
14,7,7,16,12,16,23,17,
20,19,11,14,6,15,5,10;
c=1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1;
ENDDATA
@for (jsd(i):
[st1]@sum (csc(j):x(i,j))=a(i));!收购量限制;
@for (csc(j):
[st2]@sum (jsd(i):x(i,j))<=b(j));!需求量限制;
[obj]min=@sum(jsd(i):@sum(csc(j):c(i,j)*x(i,j)*l(i,j)))
+@sum(jsd(i):@sum(csc(j):d(j)*(b(j)-x(i,j))));
END
模型求解的结果如下
Global optimal solution found at iteration: 11
Objective value: 14330.00
Variable Value Reduced Cost A( 1) 200.0000 0.000000 A( 2) 170.0000 0.000000 A( 3) 160.0000 0.000000 B( 1) 75.00000 0.000000 B( 2) 60.00000 0.000000 B( 3) 80.00000 0.000000 B( 4) 70.00000 0.000000 B( 5) 100.0000 0.000000 B( 6) 55.00000 0.000000 B( 7) 90.00000 0.000000 B( 8) 80.00000 0.000000 D( 1) 10.00000 0.000000 D( 2) 8.000000 0.000000 D( 3) 5.000000 0.000000 D( 4) 10.00000 0.000000 D( 5) 10.00000 0.000000 D( 6) 8.000000 0.000000 D( 7) 5.000000 0.000000 D( 8) 8.000000 0.000000 X( 1, 1) 75.00000 0.000000 X( 1, 2) 0.000000 0.000000 X( 1, 3) 0.000000 0.000000 X( 1, 4) 0.000000 2.000000 X( 1, 5) 70.00000 0.000000 X( 1, 6) 55.00000 0.000000 X( 1, 7) 0.000000 12.00000 X( 1, 8) 0.000000 11.00000 X( 2, 1) 0.000000 11.00000 X( 2, 2) 60.00000 0.000000 X( 2, 3) 80.00000 0.000000 X( 2, 4) 30.00000 0.000000 X( 2, 5) 0.000000 2.000000 X( 2, 6) 0.000000 11.00000 X( 2, 7) 0.000000 14.00000
X( 3, 1) 0.000000 21.00000 X( 3, 2) 0.000000 16.00000 X( 3, 3) 0.000000 8.000000 X( 3, 4) 0.000000 2.000000 X( 3, 5) 30.00000 0.000000 X( 3, 6) 0.000000 14.00000 X( 3, 7) 90.00000 0.000000 X( 3, 8) 40.00000 0.000000 C( 1, 1) 1.000000 0.000000 C( 1, 2) 1.000000 0.000000 C( 1, 3) 1.000000 0.000000 C( 1, 4) 1.000000 0.000000 C( 1, 5) 1.000000 0.000000 C( 1, 6) 1.000000 0.000000 C( 1, 7) 1.000000 0.000000 C( 1, 8) 1.000000 0.000000 C( 2, 1) 1.000000 0.000000 C( 2, 2) 1.000000 0.000000 C( 2, 3) 1.000000 0.000000 C( 2, 4) 1.000000 0.000000 C( 2, 5) 1.000000 0.000000 C( 2, 6) 1.000000 0.000000 C( 2, 7) 1.000000 0.000000 C( 2, 8) 1.000000 0.000000 C( 3, 1) 1.000000 0.000000 C( 3, 2) 1.000000 0.000000 C( 3, 3) 1.000000 0.000000 C( 3, 4) 1.000000 0.000000 C( 3, 5) 1.000000 0.000000 C( 3, 6) 1.000000 0.000000 C( 3, 7) 1.000000 0.000000 C( 3, 8) 1.000000 0.000000 L( 1, 1) 4.000000 0.000000 L( 1, 2) 8.000000 0.000000 L( 1, 3) 8.000000 0.000000 L( 1, 4) 19.00000 0.000000 L( 1, 5) 11.00000 0.000000 L( 1, 6) 6.000000 0.000000 L( 1, 7) 22.00000 0.000000 L( 1, 8) 26.00000 0.000000 L( 2, 1) 14.00000 0.000000 L( 2, 2) 7.000000 0.000000 L( 2, 3) 7.000000 0.000000
L( 2, 5) 12.00000 0.000000 L( 2, 6) 16.00000 0.000000 L( 2, 7) 23.00000 0.000000 L( 2, 8) 17.00000 0.000000 L( 3, 1) 20.00000 0.000000 L( 3, 2) 19.00000 0.000000 L( 3, 3) 11.00000 0.000000 L( 3, 4) 14.00000 0.000000 L( 3, 5) 6.000000 0.000000 L( 3, 6) 15.00000 0.000000 L( 3, 7) 5.000000 0.000000 L( 3, 8) 10.00000 0.000000
Row Slack or Surplus Dual Price ST1( 1) 0.000000 -7.000000 ST1( 2) 0.000000 -6.000000 ST1( 3) 0.000000 -2.000000 ST2( 1) 0.000000 13.00000 ST2( 2) 0.000000 7.000000 ST2( 3) 0.000000 4.000000 ST2( 4) 40.00000 0.000000 ST2( 5) 0.000000 6.000000 ST2( 6) 0.000000 9.000000 ST2( 7) 0.000000 2.000000 ST2( 8) 40.00000 0.000000 OBJ 14330.00 -1.000000 最优运输方案为花市(A)运往菜市场1蔬菜数量为75公斤,运往菜市场5蔬菜数量为70公斤,运往菜市6蔬菜数量为55公斤;城乡路口(B)运往菜市场2蔬菜数量为60公斤,运往菜市场3蔬菜数量为80公斤,运往菜市场4蔬菜数量为30公斤;下塘街(C)运往菜市场5蔬菜数量为30公斤,运往菜市场7蔬菜数量为90公斤,运往菜市场8蔬菜数量为40公斤。
最小损失为14330元。
模型二:
MODEL:
SETS:
jsd/1..3/:a;!三个集散地,收购量a(i);
csc/1..8/:b;!八个菜市场,每天需求量b(j);
dqss/1..8/:d;!各菜市场的单位短缺损失d(j);
j_c(jsd,csc):x,c,l;!i到j的距离矩阵为l(i,j),单位运费c(i,j),决策变量为x(i,j);
ENDSETS
DATA:
a=200,170,160;
b=75,60,80,70,100,55,90,80;
d=10,8,5,10,10,8,5,8;
l=4,8,8,19,11,6,22,26,
14,7,7,16,12,16,23,17,
20,19,11,14,6,15,5,10;
c=1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1;
ENDDATA
@for(jsd(i):
[st1]@sum(csc(j):x(i,j))=a(i));!收购量限制;
@for(csc(j):
[st2]@sum(jsd(i):x(i,j))<=b(j));!需求量限制;
@for(csc(j):
[st3]@sum(jsd(i):x(i,j))>=0.8*b(j));!各菜市场的短缺量不超过需求量的20%;
[obj]min=@sum(jsd(i):@sum(csc(j):c(i,j)*x(i,j)*l(i,j)))
+@sum(jsd(i):@sum(csc(j):d(j)*(b(j)-x(i,j))));
END
模型的求解结果如下:
Global optimal solution found at iteration: 16
Objective value: 14526.00
Variable Value Reduced Cost A( 1) 200.0000 0.000000 A( 2) 170.0000 0.000000 A( 3) 160.0000 0.000000 B( 1) 75.00000 0.000000 B( 2) 60.00000 0.000000 B( 3) 80.00000 0.000000 B( 4) 70.00000 0.000000 B( 5) 100.0000 0.000000 B( 6) 55.00000 0.000000 B( 7) 90.00000 0.000000 B( 8) 80.00000 0.000000 D( 1) 10.00000 0.000000 D( 2) 8.000000 0.000000 D( 3) 5.000000 0.000000 D( 4) 10.00000 0.000000 D( 5) 10.00000 0.000000 D( 6) 8.000000 0.000000 D( 7) 5.000000 0.000000 D( 8) 8.000000 0.000000 X( 1, 1) 75.00000 0.000000 X( 1, 2) 10.00000 0.000000 X( 1, 3) 0.000000 0.000000
X( 1, 4) 0.000000 2.000000 X( 1, 5) 60.00000 0.000000 X( 1, 6) 55.00000 0.000000 X( 1, 7) 0.000000 12.00000 X( 1, 8) 0.000000 11.00000 X( 2, 1) 0.000000 11.00000 X( 2, 2) 50.00000 0.000000 X( 2, 3) 64.00000 0.000000 X( 2, 4) 56.00000 0.000000 X( 2, 5) 0.000000 2.000000 X( 2, 6) 0.000000 11.00000 X( 2, 7) 0.000000 14.00000 X( 2, 8) 0.000000 3.000000 X( 3, 1) 0.000000 21.00000 X( 3, 2) 0.000000 16.00000 X( 3, 3) 0.000000 8.000000 X( 3, 4) 0.000000 2.000000 X( 3, 5) 24.00000 0.000000 X( 3, 6) 0.000000 14.00000 X( 3, 7) 72.00000 0.000000 X( 3, 8) 64.00000 0.000000 C( 1, 1) 1.000000 0.000000 C( 1, 2) 1.000000 0.000000 C( 1, 3) 1.000000 0.000000 C( 1, 4) 1.000000 0.000000 C( 1, 5) 1.000000 0.000000 C( 1, 6) 1.000000 0.000000 C( 1, 7) 1.000000 0.000000 C( 1, 8) 1.000000 0.000000 C( 2, 1) 1.000000 0.000000 C( 2, 2) 1.000000 0.000000 C( 2, 3) 1.000000 0.000000 C( 2, 4) 1.000000 0.000000 C( 2, 5) 1.000000 0.000000 C( 2, 6) 1.000000 0.000000 C( 2, 7) 1.000000 0.000000 C( 2, 8) 1.000000 0.000000 C( 3, 1) 1.000000 0.000000 C( 3, 2) 1.000000 0.000000 C( 3, 3) 1.000000 0.000000 C( 3, 4) 1.000000 0.000000 C( 3, 5) 1.000000 0.000000 C( 3, 6) 1.000000 0.000000 C( 3, 7) 1.000000 0.000000
L( 1, 1) 4.000000 0.000000 L( 1, 2) 8.000000 0.000000 L( 1, 3) 8.000000 0.000000 L( 1, 4) 19.00000 0.000000 L( 1, 5) 11.00000 0.000000 L( 1, 6) 6.000000 0.000000 L( 1, 7) 22.00000 0.000000 L( 1, 8) 26.00000 0.000000 L( 2, 1) 14.00000 0.000000 L( 2, 2) 7.000000 0.000000 L( 2, 3) 7.000000 0.000000 L( 2, 4) 16.00000 0.000000 L( 2, 5) 12.00000 0.000000 L( 2, 6) 16.00000 0.000000 L( 2, 7) 23.00000 0.000000 L( 2, 8) 17.00000 0.000000 L( 3, 1) 20.00000 0.000000 L( 3, 2) 19.00000 0.000000 L( 3, 3) 11.00000 0.000000 L( 3, 4) 14.00000 0.000000 L( 3, 5) 6.000000 0.000000 L( 3, 6) 15.00000 0.000000 L( 3, 7) 5.000000 0.000000 L( 3, 8) 10.00000 0.000000 Row Slack or Surplus Dual Price ST1( 1) 0.000000 -1.000000 ST1( 2) 0.000000 0.000000 ST1( 3) 0.000000 4.000000 ST2( 1) 0.000000 7.000000 ST2( 2) 0.000000 1.000000 ST2( 3) 16.00000 0.000000 ST2( 4) 14.00000 0.000000 ST2( 5) 16.00000 0.000000 ST2( 6) 0.000000 3.000000 ST2( 7) 18.00000 0.000000 ST2( 8) 16.00000 0.000000 ST3( 1) 15.00000 0.000000 ST3( 2) 12.00000 0.000000 ST3( 3) 0.000000 -2.000000 ST3( 4) 0.000000 -6.000000 ST3( 5) 4.000000 0.000000 ST3( 6) 11.00000 0.000000 ST3( 7) 0.000000 -4.000000
OBJ 14526.00 -1.000000 最优运输方案为花市(A)运往菜市场1蔬菜数量为75公斤,运往菜市场2蔬菜数量为10公斤,运往菜市场5蔬菜数量为60公斤,运往菜市6蔬菜数量为55公斤;城乡路口(B)运往菜市场2蔬菜数量为50公斤,运往菜市场3蔬菜数量为64公斤,运往菜市场4蔬菜数量为56公斤;下塘街(C)运往菜市场5蔬菜数量为24公斤,运往菜市场7蔬菜数量为72公斤,运往菜市场8蔬菜数量为64公斤。
最小损失为14526元。
模型三:
MODEL:
SETS:
jsd/1..3/:a;!三个集散地,收购量a(i);
csc/1..8/:b;!八个菜市场,每天需求量b(j);
j_c(jsd,csc):x,c,l;!i到j的距离矩阵为l(i,j),单位运费c(i,j),决策变量为x(i,j);
ENDSETS
DATA:
a=200,170,160;
b=75,60,80,70,100,55,90,80;
l=4,8,8,19,11,6,22,26,
14,7,7,16,12,16,23,17,
20,19,11,14,6,15,5,10;
c=1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1;
ENDDATA
@for(jsd(i):
[st1]@sum(csc(j):x(i,j))>=a(i));!收购量限制;
@for(csc(j):
[st2]@sum(jsd(i):x(i,j))=b(j));!需求量限制;
[obj]min=@sum(jsd(i):@sum(csc(j):c(i,j)*x(i,j)*l(i,j)));
END
模型的求解结果如下:
Global optimal solution found at iteration: 8
Objective value: 4770.000
Variable Value Reduced Cost A( 1) 200.0000 0.000000 A( 2) 170.0000 0.000000 A( 3) 160.0000 0.000000 B( 1) 75.00000 0.000000 B( 2) 60.00000 0.000000 B( 3) 80.00000 0.000000 B( 4) 70.00000 0.000000 B( 5) 100.0000 0.000000
B( 7) 90.00000 0.000000 B( 8) 80.00000 0.000000 X( 1, 1) 75.00000 0.000000 X( 1, 2) 40.00000 0.000000 X( 1, 3) 0.000000 0.000000 X( 1, 4) 0.000000 2.000000 X( 1, 5) 30.00000 0.000000 X( 1, 6) 55.00000 0.000000 X( 1, 7) 0.000000 12.00000 X( 1, 8) 0.000000 11.00000 X( 2, 1) 0.000000 11.00000 X( 2, 2) 20.00000 0.000000 X( 2, 3) 80.00000 0.000000 X( 2, 4) 70.00000 0.000000 X( 2, 5) 0.000000 2.000000 X( 2, 6) 0.000000 11.00000 X( 2, 7) 0.000000 14.00000 X( 2, 8) 0.000000 3.000000 X( 3, 1) 0.000000 21.00000 X( 3, 2) 0.000000 16.00000 X( 3, 3) 0.000000 8.000000 X( 3, 4) 0.000000 2.000000 X( 3, 5) 70.00000 0.000000 X( 3, 6) 0.000000 14.00000 X( 3, 7) 90.00000 0.000000 X( 3, 8) 80.00000 0.000000 C( 1, 1) 1.000000 0.000000 C( 1, 2) 1.000000 0.000000 C( 1, 3) 1.000000 0.000000 C( 1, 4) 1.000000 0.000000 C( 1, 5) 1.000000 0.000000 C( 1, 6) 1.000000 0.000000 C( 1, 7) 1.000000 0.000000 C( 1, 8) 1.000000 0.000000 C( 2, 1) 1.000000 0.000000 C( 2, 2) 1.000000 0.000000 C( 2, 3) 1.000000 0.000000 C( 2, 4) 1.000000 0.000000 C( 2, 5) 1.000000 0.000000 C( 2, 6) 1.000000 0.000000 C( 2, 7) 1.000000 0.000000 C( 2, 8) 1.000000 0.000000 C( 3, 1) 1.000000 0.000000
C( 3, 3) 1.000000 0.000000 C( 3, 4) 1.000000 0.000000 C( 3, 5) 1.000000 0.000000 C( 3, 6) 1.000000 0.000000 C( 3, 7) 1.000000 0.000000 C( 3, 8) 1.000000 0.000000 L( 1, 1) 4.000000 0.000000 L( 1, 2) 8.000000 0.000000 L( 1, 3) 8.000000 0.000000 L( 1, 4) 19.00000 0.000000 L( 1, 5) 11.00000 0.000000 L( 1, 6) 6.000000 0.000000 L( 1, 7) 22.00000 0.000000 L( 1, 8) 26.00000 0.000000 L( 2, 1) 14.00000 0.000000 L( 2, 2) 7.000000 0.000000 L( 2, 3) 7.000000 0.000000 L( 2, 4) 16.00000 0.000000 L( 2, 5) 12.00000 0.000000 L( 2, 6) 16.00000 0.000000 L( 2, 7) 23.00000 0.000000 L( 2, 8) 17.00000 0.000000 L( 3, 1) 20.00000 0.000000 L( 3, 2) 19.00000 0.000000 L( 3, 3) 11.00000 0.000000 L( 3, 4) 14.00000 0.000000 L( 3, 5) 6.000000 0.000000 L( 3, 6) 15.00000 0.000000 L( 3, 7) 5.000000 0.000000 L( 3, 8) 10.00000 0.000000 Row Slack or Surplus Dual Price ST1( 1) 0.000000 -5.000000 ST1( 2) 0.000000 -4.000000 ST1( 3) 80.00000 0.000000 ST2( 1) 0.000000 1.000000 ST2( 2) 0.000000 -3.000000 ST2( 3) 0.000000 -3.000000 ST2( 4) 0.000000 -12.00000 ST2( 5) 0.000000 -6.000000 ST2( 6) 0.000000 -1.000000 ST2( 7) 0.000000 -5.000000 ST2( 8) 0.000000 -10.00000 OBJ 4770.000 -1.000000
最优运输方案为花市(A)运往菜市场1蔬菜数量为75公斤,运往菜市场2蔬菜数量为40公斤,运往菜市场5蔬菜数量为30公斤,运往菜市6蔬菜数量为55公斤;城乡路口(B)运往菜市场2蔬菜数量为20公斤,运往菜市场3蔬菜数量为80公斤,运往菜市场4蔬菜数量为70公斤;下塘街(C)运往菜市场5蔬菜数量为70公斤,运往菜市场7蔬菜数量为90公斤,运往菜市场8蔬菜数量为80公斤。
最小损失为4700元。
根据结果知花市(A)收购量仍为200公斤,城乡路口(B)收购量仍为170公斤,只有下塘街(C)收购量变为240公斤,比较分析原先的结果,则增产的蔬菜向集散点C多供应80公斤。
七、模型评价:
总体来看,通过lingo软件对模型进行求解和灵敏度分析,对该系统的研究基本上达到了预期的研究目的,提出的问题得到了很好的解决,模型具有较好的适应性。
该模型也有需要改进的地方,该模型忽略了运输过程中成本损失等不确定因素,虽然大大简化了问题的建模及求解评价过程,但实际问题中不能忽略这一点。
因此,此模型应该将运输途中的种种不确定因素加以考虑。
通过对模型的解的灵敏度分析,通过对目标函数的灵敏度分析,约束条件常数项变动的灵敏度分析,约束条件系数矩阵中某些元素变化的灵敏度分析,增加新变量的灵敏度分系析,增加新约束的灵敏度分析.
八、参考文献:
[1]姜启源.谢金星,叶俊.数学模型,第三版.北京:高等教育出版社,2003
[2]薛毅,常金刚,程维虎,杨士林,数学建模基础,北京:北京工业大学出版社,2005。