1、12012 高教社杯全国大学生数学建模竞赛承 诺 书我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料) ,必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。我们参赛选择的题号是(从 A/B/C/D 中选择一项填写): A 我们的参赛报名号为(如
2、果赛区设置报名号的话): 所属学校(请填写完整的全名): 参赛队员 (打印并签名) :1. 2. 3. 指导教师或指导教师组负责人 (打印并签名): 日期: 2012 年 8 月 21 日赛区评阅编号(由赛区组委会评阅前进行编号):22012 高教社杯全国大学生数学建模竞赛编 号 专 用 页赛区评阅编号(由赛区组委会评阅前进行编号):赛区评阅记录(可供赛区评阅时使用):评阅人评分备注全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):3光明市的菜篮子工程摘要本文研究的是蔬菜市场为满足不同条件的最优调配方案问题,用了 Froyd算法、线性规划建立了一系列数学规
3、划模型,并用 MATLAB 和 LINGO 软件编程实现。关于问题一:用 Froyd 算法结合 MATLAB 编程求出收购点至个菜市场的最短距离,以用于蔬菜调运及预期的短缺损失为最小为目标建立线性规划模型。用LINGO 编程求得日均费用最少为 4610 元。关于问题二:在模型一的基础增加各菜市场短缺量一律不超过需求量的 20%的约束条件,用 LINGO 编程求得最少日均费用以及最优供应方案。费用最少为4806 元,供应方安见正文。关于问题三:在模型一的基础上,改为以供货充足、费用最小为目标,建立模型三,用 LINGO 编程求得日均费用为 4770 元,增产的蔬菜每天应分给 C收购点 8000K
4、g。关键字:蔬菜市场调配方案 Froyd 算法 线性规划4一 问题的重述光明市是一个人口不到 15 万人的小城市。根据该市的蔬菜种植情况,分别在花市(A) ,城乡路口(B)和下塘街(C)设三个收购点,再由各收购点分送到全市的 8 个菜市场,该市道路情况,各路段距离(单位:100m )及各收购点,菜市场 的具体位置见图 3.2.按常年情况,A,B,C 三个收购点每天收购量分别为 200,170 和 160(单位: 100 kg), 各菜市场的每天需求量及发生供应短缺时带来的损失(元/100kg )见表 3.设从收购点至各菜市场蔬菜调运费为 1 元/(100kg.100m). 7 5 4 8 3
5、7 A 7 6 B 6 8 5 5 4 7 117 4 7 5 6 6 3 5 8 6 610 C 10 5 11表 3菜市场 每天需求(100 kg) 短缺损失(元/100kg) 75 10 60 8 80 5 70 10 100 10 55 8 90 5 80 8(a) 为该市设计一个从收购点至个菜市场的定点供应方案,使用于蔬菜调运及预期的短缺损失为最小;(b) 若规定各菜市场短缺量一律不超过需求量的 20%,重新设计定点供应方案;5(c) 为满足城市居民的蔬菜供应,光明市的领导规划增加蔬菜种植面积,试问增产的蔬菜每天应分别向 A,B,C 三个采购点供应多少最经济合理。二 符号说明从 A
6、到 i(各个菜市场)的最短距离1,28AiD从 B 到 i(各个菜市场)的最短距离Bi从 C 到 i(各个菜市场)的最短距离,Ci从 A 到 i(各个菜市场)的运货量128AiS从 B 到 i(各个菜市场)的运货量,Bi从 C 到 i(各个菜市场)的运货量Ci总调运费P短缺损失Q总费用R三 模型假设1、假设日需求量与缺货损失费用不变。2、假设在蔬菜调配的过程中无意外发生。3、假设新增产的蔬菜能够满足缺货量。四 模型的建立与求解4.1 问题一4.1.1 问题的分析:为了使用于蔬菜调运及预期的短缺损失为最小,即调运费用与缺货损失之和最小。首先考虑调运费用 P,P 为距离与送货量的积,因为与送货距离
7、相关,我们必须先求出 A、B、C 三个采购点至各个菜市场的最短距离。采用 Froyd 算法,结合 MATLAB 编程实现。其次考虑缺货损失 Q,以题中要求为约束条件,损失最低位目标建立线性规划模型,用 LINGO 编程求解。4.1.2 模型的建立与求解:6由图和表格的信息知,建立一个线性规划模型,使得蔬菜调运及预期的短缺损失为最小。调运总费用 P 为:888111AiiBiiCiii i iSDSSDAA若使调运总费用最少,则应保证 A、B、C 三个收购点到 8 个菜市场的路程最短,最短路线的求解过程如图一:图一:求解过程图分析上图可知,该路线为无向网络,就该图而言,网络弧集为:E=(v1,v
8、2),(v1,v4),(v1,v5),(v2,v1),(v2,v3),(v2,v5),(v2,v6),(v3,v2),.(v3,v6),(v3,v8),(v3,v9),(v4,v1),(v4,v5).(v4,v7),(v4,v10),(v5,v1),(v5,v2),(v5,v4),(v5,v6),(v5,v7),(v5,v8),(v6,v2),(v6,v3),(v6,v5),(v6,v8),(v7,v4),(v7,v5),(v7,v8),(v7,v11),(v8,v3),(v8,v5),(v8,v6),(v8,v7),(v8,v9),(v8,v11),(v9,v3),(v9,v8),(v9,v
9、11),(v9,v13),(v9,v15),(v10,v4),(v10,v11),(v10,v12),(v10,v14),(v11,v7),(v11,v8),(v11,v9)(v11,v10),(v11,v12),(v12,v10),(v12,v11),(v12,v13),(v12,v14),(v13,v9),(v13,v12),(v13,v14),(v14,v10),(v14,v12),(v14,v13),(v15,v9)下面来确定网络权矩阵:W=()nijw其中= ,当( , )属于 E 时, 为弧( , )的权ijlivj ijlivj=0,i=1,2,3ni7=inf,当( , )不属
10、于 E 时。 (inf 为无穷大,n 为网络结点个数)ijwivj按上述规定,该网络的权矩阵为:0 7 inf 5 4 inf inf inf inf inf inf inf inf inf inf7 0 7 inf 8 3 inf inf inf inf inf inf inf inf infinf 7 0 inf inf 6 inf 7 11 inf inf inf inf inf inf5 inf inf 0 6 inf 5 inf inf 7 inf inf inf inf inf4 8 inf 6 0 7 4 8 inf inf inf inf inf inf inf inf 3 6
11、 inf 7 0 inf 5 inf inf inf inf inf inf infinf inf inf 5 4 inf 0 4 inf inf 7 inf inf inf infinf inf 7 inf 8 5 4 0 6 inf 5 inf inf inf infinf inf 11 inf inf inf inf 6 0 inf 3 inf 6 inf 5inf inf inf 7 inf inf inf inf inf 0 6 8 inf 10 infinf inf inf inf inf inf 7 5 3 6 0 6 inf inf infinf inf inf inf inf
12、 inf inf inf inf 8 6 0 10 5 infinf inf inf inf inf inf inf inf 6 inf inf 10 0 11 infinf inf inf inf inf inf inf inf inf 10 inf 5 11 0 infinf inf inf inf inf inf inf inf 5 inf inf inf inf inf 0因为上述网络有 15 个结点,故网络的权矩阵均为 15 阶矩阵。现在给出网络最短路线的 Froyd 算法:(1) d1=w.(w 为所给网络的 n 阶权矩阵)(2) dk= ,k=2,3,p.()ijndk其中 =m
13、in + ,i,j=1,2,n.ij 1is()sjdk计算次数的确定:当 0 时,p 由下式确定:ijwp ln(n-1)/ln2,这样的 dp 就确定了网络各点间的最短距离。此处 n=15,解出p 3.8074故只需要取 p=4 即可,即算到 d4 即可。按照 Froyd 算法:d1=d,d2=fld(15,d1),d3=fld(15,d2),d4=(fld(15,d3),算的 d4 为:0 7 14 5 4 10 8 12 18 12 15 20 24 22 237 0 7 12 8 3 12 8 14 19 13 19 20 24 1914 7 0 16 13 6 11 7 11 18
14、 12 18 17 23 165 12 16 0 6 13 5 9 15 7 12 15 21 17 204 8 13 6 0 7 4 8 14 13 11 17 20 822 1910 3 6 13 7 0 9 5 11 16 10 16 17 21 168 12 11 5 4 9 0 4 10 12 7 13 16 18 1512 8 7 9 8 5 4 0 6 11 5 11 12 16 1118 14 11 15 14 11 10 6 0 9 3 9 6 14 512 19 18 7 13 16 12 11 9 0 6 8 15 10 1415 13 12 12 11 10 7 5 3
15、 6 0 6 9 11 820 19 18 15 17 16 13 11 9 8 6 0 10 5 1424 20 17 21 20 17 16 12 6 15 9 10 0 11 1122 24 23 17 22 21 18 16 14 10 11 5 11 0 1923 19 16 20 19 16 15 11 5 14 8 14 11 19 0d4 即为该网络的距离矩阵,距离矩阵的第 i 行指明了 到其他各点的最短距离。iv根据上述矩阵,分别找出 A,B,C 到、的最短距离,见表一:表一:收购点到菜市场的最短距离最短距离(单位:100 千米) A 4 8 8 19 11 6 22 20B
16、 14 7 7 16 12 16 23 17C 20 19 11 14 6 15 5 10调运量的限制:911223344556677887560871090ABCABCABABCSSSSSS短缺损失费为: 112233445566778810758651078590ABCABCABCABCQSSSSSS 总费用为: RPQ由以上约束条件,用 LINGO 软件进行线性规划求解(源程序及完整运行结果见附录) ,部分运行结果如下:Global optimal solution found.Objective value: 4610.000Infeasibilities: 0.000000Total
17、 solver iterations: 10Model Class: LPTotal variables: 2610Nonlinear variables: 0Integer variables: 0Total constraints: 22Nonlinear constraints: 0Total nonzeros: 124Nonlinear nonzeros: 0Variable Value Reduced CostP 3890.000 0.000000Q 720.0000 0.000000SA1 75.00000 0.000000SA2 0.000000 0.000000SA3 0.00
18、0000 0.000000SA4 0.000000 2.000000SA5 70.00000 0.000000SA6 55.00000 0.000000SA7 0.000000 12.00000SA8 0.000000 5.000000SB1 0.000000 11.00000SB2 60.00000 0.000000SB3 80.00000 0.000000SB4 30.00000 0.000000SB5 0.000000 2.000000SB6 0.000000 11.00000SB7 0.000000 14.00000SB8 0.000000 3.000000SC1 0.000000 2
19、1.00000SC2 0.000000 16.00000SC3 0.000000 8.000000SC4 0.000000 2.000000SC5 30.00000 0.000000SC6 0.000000 14.00000SC7 90.00000 0.000000SC8 40.00000 0.000000从上述运行结果中可以得出调运方案为:11收购点 A菜市场,运量为 75菜市场,运量为 70菜市场,运量为 55收购点 B菜市场,运量为 60菜市场,运量为 80菜市场,运量为 30收购点 C菜市场,运量为 30菜市场,运量为 90菜市场,运量为 40在此种方案下,蔬菜调运及预期的短缺损失为最
20、小,最小金额为 4610 元。4.1.3 模型的评价与分析:本模型用 Froyd 算法快捷的求出了 A、B、C 三个收购点到 8 个菜市场的最短路程,用线性规划模型使得费用最低,并给出了上图所示的调配方案。在所得方案中每日只需 4610 元。4.2 问题二4.2.1 问题的分析:若按规定各菜市场短缺量一律不超过需求量的 20%,则只需要在模型一的12基础上在增加一个约束条件:每个菜市场的供应量必须不低于需求量的 80%即可。即得到满足条件的模型二。4.2.2 模型的建立与求解:各菜市场短缺量一律不超过需求量的 20%,为满足这一条件,现对方案一进行调整。只需在方案 一中加一限制条件:11223
21、34455667788750.864.708561.0490.8726ABCABCABABCSSSSSS同理可用 LINGO 编程(源程序及完整运行结果见附录) ,部分运行结果如下:Global optimal solution found.Objective value: 4806.000Infeasibilities: 0.000000Total solver iterations: 13Model Class: LPTotal variables: 26Nonlinear variables: 0Integer variables: 0Total constraints: 30Nonli
22、near constraints: 0Total nonzeros: 148Nonlinear nonzeros: 0Variable Value Reduced CostP 4208.000 0.000000Q 598.0000 0.000000SA1 75.00000 0.00000013SA2 10.00000 0.000000SA3 0.000000 0.000000SA4 0.000000 2.000000SA5 60.00000 0.000000SA6 55.00000 0.000000SA7 0.000000 12.00000SA8 0.000000 5.000000SB1 0.
23、000000 11.00000SB2 50.00000 0.000000SB3 64.00000 0.000000SB4 56.00000 0.000000SB5 0.000000 2.000000SB6 0.000000 11.00000SB7 0.000000 14.00000SB8 0.000000 3.000000SC1 0.000000 21.00000SC2 0.000000 16.00000SC3 0.000000 8.000000SC4 0.000000 2.000000SC5 24.00000 0.000000SC6 0.000000 14.00000SC7 72.00000
24、 0.000000SC8 64.00000 0.000000从上述运行结果得知调整后的方案为:收购点 A菜市场,运量为75菜市场,运量为10菜市场,运量为60菜市场,运量为5514收购点 B菜市场,运量为 50菜市场,运量为 64菜市场,运量为 56收购点 C菜市场,运量为 24菜市场,运量为 72菜市场,运量为 64调整后的总损失为:4806 元。4.2.3 模型的评价与分析:在增加了供货量的限制条件后,只需在模型一的基础上再增加约束条件即得到模型二。在本模型下日均花费最低为 4806 元。新的调配方案如上图所示。4.3 问题三4.3.1 问题的分析:本题的目标有二:一、要满足每个菜市场的供
25、货量充足;二、要使得总费用最低。所以我们在模型一的基础上增加了上述两个限制条件,即得到模型三。使得在供货量充足的情况下最小化日均费用。4.3.2 模型的建立与求解:要足城市居民的蔬菜供应,增加蔬菜种植面积,则需要保证所有的菜市场都满足日需求量,在问题一得基础上作出以下调整:1511223344556677887560871090ABCABCABABCSSSSSS同理,用 LINGO 编程求解(源程序及完整运行结果见附录),部分运行结果如下:Global optimal solution found.Objective value: 4770.000Infeasibilities: 0.0000
26、00Total solver iterations: 12Model Class: LPTotal variables: 26Nonlinear variables: 0Integer variables: 0Total constraints: 22Nonlinear constraints: 0Total nonzeros: 124Nonlinear nonzeros: 0Variable Value Reduced CostP 4770.000 0.000000Q 0.000000 0.6250000SA1 75.00000 0.000000SA2 40.00000 0.000000SA
27、3 0.000000 0.000000SA4 0.000000 2.000000SA5 30.00000 0.000000SA6 55.00000 0.000000SA7 0.000000 12.00000SA8 0.000000 5.00000016SB1 0.000000 11.00000SB2 20.00000 0.000000SB3 80.00000 0.000000SB4 70.00000 0.000000SB5 0.000000 2.000000SB6 0.000000 11.00000SB7 0.000000 14.00000SB8 0.000000 3.000000SC1 0.
28、000000 21.00000SC2 0.000000 16.00000SC3 0.000000 8.000000SC4 0.000000 2.000000SC5 70.00000 0.000000SC6 0.000000 14.00000SC7 90.00000 0.000000SC8 80.00000 0.000000从结果中可以的知: 125620AASS3417BB578CC故新增的蔬菜 8000Kg 全部运向 C 地,这样既能满足城市居民的蔬菜供应,又能使总损失最小,最小为:4770 元。4.3.3 模型的评价与分析:本模型以供货充足和费用最低为目标,利用题中的约束条件解得:在供货量
29、充足的情况下日均花费最低为 4770 元。并得到了全新的调配方案如上图所示,而且新增蔬菜 8000Kg,且全部运向 C 地。五 模型的及评价与改进5.1 模型的评价5.1.1 模型的优点:模型简单易懂,主要用了 Froyd 算法与线性规划,使问题的求解变得十分方便,能适应更重新的要求。5.1.2 模型的缺点:上述模型第三问只考虑了运输费用最小,却没有考虑到供过于求造成的货17物积压问题。5.2 模型的改进:由于上述模型第三问只考虑了运输费用最小,却没有考虑到供过于求造成的货物积压问题。可将存货损失计算进去,这样会使这个模型更加完善。六 参考文献1姜启源,数学模型,北京,高等教育出版社,2003
30、2黄雍检、赖明勇,MATLAB 语言在运筹学中的应用,长沙,湖南大学出版社,2005七 附件问题一:MATLAB 新建 m 文件:function y=fld(n,x)for r=1:nfor i=1:nfor j=1:np(j)=x(i,j)+x(j,r);endy(r,i)=min(p);endend输入命令:d=0 7 inf 5 4 inf inf inf inf inf inf inf inf inf inf;7 0 7 inf 8 3 inf inf inf inf inf inf inf inf inf;inf 7 0 inf inf 6 inf 7 11 inf inf inf
31、 inf inf inf; 5 inf inf 0 6 inf 5 inf inf 7 inf inf inf inf inf;4 8 inf 6 0 7 4 8 inf inf inf inf inf inf inf; inf 3 6 inf 7 0 inf 5 inf inf inf inf inf inf inf;inf inf inf 5 4 inf 0 4 inf inf 7 inf inf inf inf;inf inf 7 inf 8 5 4 0 6 inf 5 inf inf inf inf;inf inf 11 inf inf inf inf 6 0 inf 3 inf 6
32、inf 5;inf inf inf 7 inf inf inf inf inf 0 6 8 inf 10 inf;inf inf inf inf inf inf 7 5 3 6 0 6 inf inf inf;inf inf inf inf inf inf inf inf inf 8 6 0 10 5 inf;inf inf inf inf inf inf inf inf 6 inf inf 10 0 11 inf;inf inf inf inf inf inf inf inf inf 10 inf 5 11 0 inf;18inf inf inf inf inf inf inf inf 5
33、inf inf inf inf inf 0d1=dd2=fld(15,d1)d3=fld(15,d2)d4=fld(15,d3)运行结果:d =Columns 1 through 14 0 7 Inf 5 4 Inf Inf Inf Inf Inf Inf Inf Inf Inf7 0 7 Inf 8 3 Inf Inf Inf Inf Inf Inf Inf InfInf 7 0 Inf Inf 6 Inf 7 11 Inf Inf Inf Inf Inf5 Inf Inf 0 6 Inf 5 Inf Inf 7 Inf Inf Inf Inf4 8 Inf 6 0 7 4 8 Inf In
34、f Inf Inf Inf InfInf 3 6 Inf 7 0 Inf 5 Inf Inf Inf Inf Inf InfInf Inf Inf 5 4 Inf 0 4 Inf Inf 7 Inf Inf InfInf Inf 7 Inf 8 5 4 0 6 Inf 5 Inf Inf InfInf Inf 11 Inf Inf Inf Inf 6 0 Inf 3 Inf 6 InfInf Inf Inf 7 Inf Inf Inf Inf Inf 0 6 8 Inf 10Inf Inf Inf Inf Inf Inf 7 5 3 6 0 6 Inf InfInf Inf Inf Inf I
35、nf Inf Inf Inf Inf 8 6 0 10 5Inf Inf Inf Inf Inf Inf Inf Inf 6 Inf Inf 10 0 11Inf Inf Inf Inf Inf Inf Inf Inf Inf 10 Inf 5 11 0Inf Inf Inf Inf Inf Inf Inf Inf 5 Inf Inf Inf Inf InfColumn 15 InfInfInfInfInfInfInfInf5InfInfInf19InfInf0d1 =Columns 1 through 14 0 7 Inf 5 4 Inf Inf Inf Inf Inf Inf Inf In
36、f Inf7 0 7 Inf 8 3 Inf Inf Inf Inf Inf Inf Inf InfInf 7 0 Inf Inf 6 Inf 7 11 Inf Inf Inf Inf Inf5 Inf Inf 0 6 Inf 5 Inf Inf 7 Inf Inf Inf Inf4 8 Inf 6 0 7 4 8 Inf Inf Inf Inf Inf InfInf 3 6 Inf 7 0 Inf 5 Inf Inf Inf Inf Inf InfInf Inf Inf 5 4 Inf 0 4 Inf Inf 7 Inf Inf InfInf Inf 7 Inf 8 5 4 0 6 Inf
37、5 Inf Inf InfInf Inf 11 Inf Inf Inf Inf 6 0 Inf 3 Inf 6 InfInf Inf Inf 7 Inf Inf Inf Inf Inf 0 6 8 Inf 10Inf Inf Inf Inf Inf Inf 7 5 3 6 0 6 Inf InfInf Inf Inf Inf Inf Inf Inf Inf Inf 8 6 0 10 5Inf Inf Inf Inf Inf Inf Inf Inf 6 Inf Inf 10 0 11Inf Inf Inf Inf Inf Inf Inf Inf Inf 10 Inf 5 11 0Inf Inf
38、Inf Inf Inf Inf Inf Inf 5 Inf Inf Inf Inf InfColumn 15 InfInfInfInfInfInfInfInf5InfInfInfInfInf020d2 =Columns 1 through 14 0 7 14 5 4 10 8 12 Inf 12 Inf Inf Inf Inf7 0 7 12 8 3 12 8 18 Inf Inf Inf Inf Inf14 7 0 Inf 13 6 11 7 11 Inf 12 Inf 17 Inf5 12 Inf 0 6 13 5 9 Inf 7 12 15 Inf 174 8 13 6 0 7 4 8
39、14 13 11 Inf Inf Inf10 3 6 13 7 0 9 5 11 Inf 10 Inf Inf Inf8 12 11 5 4 9 0 4 10 12 7 13 Inf Inf12 8 7 9 8 5 4 0 6 11 5 11 12 InfInf 18 11 Inf 14 11 10 6 0 9 3 9 6 1712 Inf Inf 7 13 Inf 12 11 9 0 6 8 18 10Inf Inf 12 12 11 10 7 5 3 6 0 6 9 11Inf Inf Inf 15 Inf Inf 13 11 9 8 6 0 10 5Inf Inf 17 Inf Inf
40、Inf Inf 12 6 18 9 10 0 11Inf Inf Inf 17 Inf Inf Inf Inf 17 10 11 5 11 0Inf Inf 16 Inf Inf Inf Inf 11 5 Inf 8 Inf 11 InfColumn 15 InfInf16InfInfInf21Inf115Inf8Inf11Inf0d3 =Columns 1 through 14 0 7 14 5 4 10 8 12 18 12 15 20 24 227 0 7 12 8 3 12 8 14 19 13 19 20 2914 7 0 16 13 6 11 7 11 18 12 18 17 235 12 16 0 6 13 5 9 15 7 12 15 21 174 8 13 6 0 7 4 8 14 13 11 17 20 2210 3 6 13 7 0 9 5 11 16 10 16 17 218 12 11 5 4 9 0 4 10 12 7 13 16 1812 8 7 9 8 5 4 0 6 11 5 11 12 1618 14 11 15 14 11 10 6 0 9 3 9 6 1412 19 18 7 13 16 12 11 9 0 6 8 15 1015 13 12 12 11 10 7 5 3 6 0 6 9 1120 19 18 15 17 16 13 11