资源描述:
《供应与选址数学模型》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、供应与选址数学模型摘要:本论文主要讨论并解决了某公司每天的供应计划与临时料场选址的相关问题。为使总吨千米数达到最小,在考虑有直线道路连通的情况下建立相应的数学模型,给出了相关算法。并运用Lingo9.0等软件编程和处理相关数据,得到最优决策方案。问题一是一个线性规划问题,我们首先建立单目标的优化模型,也即模型一.借助Lingo软件得到了该公司每天向六个建筑工地运输水泥的供应计划如表1,从而可使得总的吨千米数最小.问题二是在问题一的基础上建立一个非线性规划模型,保持供应计划不变的情况下,改变临时料场的位置以使吨千米数
2、进一步减少。用lingo求解可知当新建的临时料场位于C(6,4),D(7,8)两位置时,节省的吨千米数可达到30.表1A,B两料场每天分别向各工地运送的水泥量123456(A料场)460002(B料场)006789关键字:线性规划吨千米数供应计划一、问题重述某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:千米)及水泥日用量d(吨)由下表给出.目前有两个临时料场位于A(5,1),B(2,7),日储量各有30吨.(1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的
3、吨千米数最小?(2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数会多大?123456a180538b104667d4667811二、基本假设1、料场与工地之间有直线道路;2、两料场供应量应与工厂日用量达到平衡;3、改建后供应计划保持原计划不变;4、每个工地的位置用平面坐标的形式表示;三、基本符号说明:第个临时料场;:第个建筑工地;:工地的水泥日用量;:料场到工地的水泥运输量;:料场到工地的距离;:料场的日储量;四、问题的分析,模型的建立及求解4.1.1问
4、题一的分析某公司有6个建筑工地,位置坐标为(,)(单位:千米),水泥日用量(单位:吨)现有A(5,1),B(2,7)两料场,记(,),=1,2,日储量各有30吨.已知每个工地的位置及水泥日用量如下表123456a180538b104667d46678114.1.2模型一的建立由题知,问题一是一个线性规划模型,确定分配量求最小值,即使总的吨千米数最小.则目标函数:其中约束条件:s.t其中为30吨4.1.3模型一的求解将已知数据代入模型中,用lingo软件求解(程序见附录1),得到结果(程序运行结果见附录2)如下表:A
5、,B两料场每天分别向各工地运送的水泥量123456(A料场)460002(B料场)0067894.2.1问题二的分析问题二是在问题一的基础上,进一步减少吨千米数,舍弃两个临时料场,改建两个新的临时料场,日储量各为20吨,求新建的料场的位置,在其它条件不变下使总吨公里数最小,此时节省的吨千米数最大.为此,需建立一个非线形规划模型.4.2.2模型二的建立问题二是一个非线性模型,求解取最小值时需满足的最优条件.目标函数:约束条件:s.t其中为20吨,4.2.2模型二的求解将模型一求得的供用计划数据代入模型二中,用ling
6、o(其程序见附录3)求解得(4,6)(7,8)此时节省的最大吨千米数最大89.88349.五、模型的评价本文优点是建立了规划模型,通过lingo软件进行线性求解,得出各种供应计划方案的最优解;不足之处,在处理供应计划与选址的关系上比较含糊,没有深入讨论.六、参考文献[1]姜启源、谢金星等,数学模型,北京:高等教育出版社.2007.8.[10]席少霖等,最优化计算方法,上海:上海科学技术出版社,2003.[8]谢金星等,优化建模与LINDO/LINGO软件,北京:清华大学出版社,2005.7.附录七附录1MODEL:
7、TitleLocationProblem;sets:demand/1..6/:a,b,d;supply/1..2/:x,y,e;link(supply,demand):c;endsetsdata:!需求点的位置;a=1,8,0,5,3,8;b=1,0,4,6,6,7;!供需量;d=4,6,6,7,8,11;e=30,30;enddatainit:!初始点;x,y=5,1,2,7;endinit!目标函数;[OBJ]min=@sum(link(i,j):c(i,j)*((x(i)-a(j))^2+(y(i)-b(j)
8、)^2)^(1/2));!需求约束;@for(demand(j):[DEMAND_CON]@sum(supply(i):c(i,j))=d(j););!供应约束;@for(supply(i):[SUPPLY_CON]@sum(demand(j):c(i,j))<=e(i););@for(supply:@bnd(0,X,8);@bnd(0,Y,7););END