光明市的菜篮子工程光明市是一个人口不到15万人的小城市,根据该市的蔬菜种植情况分别在花市A、城乡路口B和下塘街C设三个收购点清晨5点前菜农将蔬菜送至各收购点,再由各收购点分送到全市的8个菜市场该市道路情况、各路段距离(单位:100m)及各收购点、菜市场1.8的具体位置如图: 12634587BAC 7 4 7 5 8 3 7 6 6 4 8 5 7 5 4 117 7 5 6 6 3 5 6 6 10 8 10 5 11按常年情况,A、B、C三个收购点每天收购量分别为200、170和160(单位:100kg),各菜市场的每天需求量及发生供应短缺时带来的损失(元/100kg)见表.设从收购点至各菜市场蔬菜调运费用为1元/(100kg*100m).菜市场每天需求(100kg)短缺损失(元/100kg)175102608380547010510010655879058808(a)为该市设计一个从各收购点至各菜市场的定点供应方案,使用于蔬菜调运及预期的短期损失最小。
b)若规定各菜市场短缺量一律不超过需求量的20%,重新设计定点供应方案.(c)为满足城市居民的蔬菜供应,光明市的领导规划增加蔬菜种植面积,试问增加的蔬菜每天应分别向A、B、C三个采购点各供应多少最经济合理光明市的菜篮子工程解答模型 1. 问题的重述在光明市,需从3个收购点向各菜市场调运蔬菜,要求用于蔬菜调运的运输费用及预期的短期损失最小为了建模的科学性,4个未标号的中间点被标上号码① 根据给出的简化图,求解3个收购点向各个市场供给单位量蔬菜的运费② 根据题设要求,求解3个收购点向各个市场分配的蔬菜量③ 根据不同条件,对模型进行修改和改进,并进行分析④ 说明解决方法的科学性,并说明结果是贴近实际的.2模型的基本假设①只考虑运输费用和短缺费用,不考虑装卸等其他费用.②假设运输的蔬菜路途中没有损耗③假设各市场蔬菜只来源于三个收购站,而无其他来源④假设各收购站供应蔬菜同质且单位运价相同⑤假设各收购站可以作为中转站3.符号说明xij:第i个收购点向j市场供给的数量cij:第i个收购点向j 市场供给的单位运费ai:第i个收购点供应量bj:第j个市场需求量dj:第j个市场因供给量小于需求量的单位短缺损失4。
问题的分析和模型的建立目标函数总费用Z,包括两项: 蔬菜调运费Q,各市场供给量小于需求量的短缺损失PZ=P+Q其中P= Q= 约束条件为①3个收购点的蔬菜全部供给给8个市场 (i=1,2,3)②3个收购点分别向每个市场供应的总量不超过每个市场的需求量 (j=1,…,8)③变量非负性限制(i=1,2,3,j=1,…,8)综合以上结论,得出问题(a)的数学模型如下:Obj1: min Z=+s.t. (i=1,2,3) (j=1,…,8) (i=1,2,3,j=1,…,8)5.对模型的求解(计算方法设计和计算机实现\结果分析与检验) 为了求解模型,必须求出系数(),其中每一表示第i个收购点向j市场供给单位量蔬菜的运费但因为从收购点至各菜市场单位量蔬菜单位路程的调运费用为1元/(100kg*100m),而蔬菜的单位量为100kg,单位距离为100m ,则可求出第i个收购点到第j市场每单位蔬菜的单位距离运费为1元/(100m *100kg)*100m *100kg=1元因而 在数值上等于第i个收购点到第j市场的距离值,从而等价于一个求最短路的问题,①将图中15个点标号,分别为A,B,C,o,p,q,r,1,2,3,4,5,6,7,8.并由此构成15*15的权矩阵W15*15,其中Wij表示第I个点到第j个点的距离,若第I个点和第j个点不相邻,则wij=。
②对得到的W,使用弗洛依德算法,得到最短距离,也就是单位最小费用矩阵.从中抽取出第i(i=1,2,3)行和第j(j=8,...,15)列的子矩阵W,其中的值wij即对应为第i个收购站到第j个市场的单位最小费用 单位最小运费(表1)12345678A488191162220B14771612162317C201911146155103根据建立的模型,利用LINGO软件,输入目标函数和约束条件,求解模型的最优解 各收购点向市场供应量分配表(表2)12345678A75000705500B06080300000C00003009040ﻭ 总计费用:4610(元)分析各市场每单位短缺损失(元/100kg) (表3) 市场1234 5 678短缺损失10851010858比较表1中每个收购点到市场的单位蔬菜的运价cij和表3 每个市场的单位蔬菜短缺的损失价格dj,若cij<dj ,即运费小于短缺损失价格,则表明可运,可以减少宏观经济的损失.若cij=dj,即运费等于短缺损失,对整个宏观经济来说,即可以运也可以不运。
若cij>dj,即运费大于短缺损失,则不运,否则增加宏观经济的损失由此,我们得出表512345678A可运运或不运可运B可运C可运运或不运而表2 中B—-—3 ,B--——4,A----5,C---8的路线上发生了运输往来,不利于整个宏观经济值增加.模型2考虑到如C收购点到8市场的单位量蔬菜的运输费用大于8市场单位量蔬菜的短缺损失等情况,模型2修改模型1的⑥假设,为允许3个收购点分别向每个市场供应的总量可超过每个市场的需求量.即改变约束条件2,此时模型为Obj2: min Z=+s.t. (i=1,2,3) (j=1,…,8) (i=1,2,3,j=1,…,8)根据建立的模型,利用LINGO软件,输入目标函数和约束条件,求解模型的最优解. 各收购点向市场供应量分配表(表6) 12345678A14500005500B06080300000C00001000600 总计费用:4460(元)比较表2和表6,从第二个模型所求得分配方式中可以看到A—5,C———8两条不合理的运输路线已被取消,同时最终的运费也有所下降,下降了150元。
模型3仍然考虑到如C收购点到8市场的单位量蔬菜的运输费用大于8市场单位量蔬菜的短缺损失等情况,在模型1的基础上,对模型1 的⑥假设做出了另一种修改,为允许每个收购点的蔬菜可以只运部分即改变约束条件1,可得模型Obj3: minﻩZ=+s.t. (i=1,2,3) (j=1,…,7) (i=1,2,3,j=1,…,7)根据建立的模型,利用LINGO软件,输入目标函数和约束条件,求解模型的最优解 各收购点向市场供应量分配表(表7)12345678A7500005500 B060000000 C0000100000 总计费用:3840(元)比较表2与表7,从第三个模型所求得分配方式中可以看到B—3,B—4,A—5,C--—8四条不合理路线都被取消,同时总运费减少了545元.在市场经济下,模型3,随着市场的调节,最终A只愿供应12000千克,B只愿供应6000千克,C只愿供应10000千克,大大小于各收购点常年的每天收购量20000千克,17000千克,16000千克。
6.问题Ⅱ的模型与分析按题中问题Ⅱ规定各菜市场短缺量一律不超过需求量的20%的条件,我们对需求量的约束条件进行了修改Obj4: min Z=+s.t (i=1,2,3) (j=1,…,8)ﻩ (j=1,…,8) (i=1,2,3,j=1,…,8)根据建立的模型,利用LINGO软件,输入目标函数和约束条件,求解模型的最优解各收购点向市场供应量分配表(表8)12345678A751000605500B05064560000C00002407264 总计费用:4806(元)比较表2和表8,主要是对3,4,7,8市场的供应量作出了调整其中的主要原因是对于3,4,7,8市场,从收购点到其的单位量蔬菜的运输费用大于该市场单位量蔬菜的短缺损失,所以,当加入各菜市场短缺量一律不超过需求量的20%的约束条件后,为了保证4,8市场的需求,在考虑到3,7市场相对其他市场运输代价较高的情况下,在这四个市场之间做出平衡供给量的调整7.问题Ⅲ的模型与分析为满足城市居民的蔬菜供应,光明市的领导规划增加蔬菜种植面积,即模型为Obj5: minﻩZ=+s。
t. (i=1,2,3) (j=1,…,8) (i=1,2,3,j=1,…,8) t0(i=1,2,3)根据建立的模型,利用LINGO软件,输入目标函数和约束条件,求解模型的最优解各收购点向市场供应量分配表(表9)12345678A754000305500B02080700000C00007009080 总计费用:4770(元)各收购点增加的蔬菜收购量如下表:ABCt0080比较表2和表9,对于4,8市场做了比较大的调整,主要是因为从收购点到其的单位量蔬菜的运输费用大大高于这两个市场单位量蔬菜的短缺损失,供应这两个市场并不能获得收益,反而会受到较大损失在市场机制的主导下,无法满足这两个市场的需求量.但是,光明市的领导为保证城市居民的蔬菜供应,规划增加蔬菜种植面积,提高收购点的蔬菜收购量,在承担一定损失的情况下,满足了这两个市场的蔬菜需求附录部分1数据预处理部分:求最小费用的LINGO的文件如下:model:SETS:NODES/A,B,C,o,p,q,r,1,2,3,4,5,6,7,8/;ROADS(NODES, NODES)/A,o A,p A,1 A,2 A,3 A,6 B,o B,r B,2 B,3 C,q C,5 C,7 C,8 o,2 o,3 p,3 p,5 p,6 q,5 q,6 q,7 r,3 r,4 r,5 r,8 1,2 1,6 3,5 7,8/:W0;LINK(NODES, NODES): W, D;NNN(Nodes,nodes,nodes):U; ENDSETS DATA:BIG=1000;W0=7 4 4 8 8 6 6 11 7 7 8 6 5 10 3 5 4 7 5 6 7 10 6 5 3 6 7 5 5 11;@TEXT(FinalCost.txt)=@writefor(nodes(i)|i#le#3: @writefor(nodes(j)|j#ge#8 #and# j#le#15: @format(D(i,j),’5.0f')) );ENDDATACALC:@FOR(LINK(i,j)|@IN(ROADS,i,j): W(i,j) = W0(i, j); W(j,i) = W0(i,j); ); @FOR(LINK(i,j)|i#eq#j: W(i,j) = 0 ); @FOR(LINK(i,j)|i#ne#j #and# #not#@IN(ROADS,i,j) #and# #not#@IN(ROADS,j,i): W(i,j) = BIG;W(j,i) = BIG; ); @FOR(NNN(i,j,k)|k#eq#1: U(i,j,k) = W(i,j) );@For(nodes(k)|k#lt#@size(nodes): @FOR(LINK(i,j): U(i,j,k+1) = @if(U(i,j,k) #le# U(i,k,k)+U(k,j,k), U(i,j,k), U(i,k,k)+U(k,j,k))));@FOR(NNN(i,j,k)|k#eq#@size(nodes): D(i,j) = @if(U(i,j,k) #le# U(i,k,k)+U(k,j,k), U(i,j,k), U(i,k,k)+U(k,j,k)) ); ENDCALCEnd求得最短路部分结果如下:Variable ValueD( A, B) 13。
00000D( A, C) 1700000D( A, O) 7000000D( A, P) 4.000000D( A, Q) 1300000D( A, R) 1400000D( A, 1) 4000000D( A, 2) 8.000000D( A, 3) 8.000000D( A, 4) 19.00000D( A, 5) 11.00000D( A, 6) 6.000000D( A, 7) 2200000D( A, 8) 20.000002.模型主体LINGO程序如下(只取其中一个,其他类同):MODEL:SETS:ﻩSUPPLY/A,B,C/:S; NEED/18/:B,P;ﻩLINK(Supply, need): C, X;ENDSETSDATA:S=200 170 160;B=75 60 80 70 100 55 90 80;P=10 8 5 10 10 8 5 8;C=@TEXT(FINALCOST.txt);@TEXT(FinalResult.txt)=@writefor(supply(i): @writefor(need(j):@format(x(i,j),’5.0f’)), @newline(1) );ENDDATA[obj] MIN=@sum(link(i,j):c(i,j)*x(i,j)) +@sum(need(j):P(j)*(b(j)-@sum(supply(i):x(i,j)))) ;@for(supply(i): [con1] @sum(need(j):x(i,j)) = S(i));@for(need(j): [con2] @sum(supply(i):x(i,j)) <= b(j)); END文中如有不足,请您指教!11 / 11。