您的当前位置:首页正文

2012214112建模作业5

来源:个人技术集锦
佛山科学技术学院 上 机 报 告 课程名称 数学建模 上机项目 供应与选址 专业班级 12数学与应用数学(师范) 姓 名 学 号 2012214112 一、问题提出 某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系(a,b)表示,距离单位:km)及水泥日用量d(吨)由下表给出。目前有两个料场位于A(5,1),B(2,7),日储量各有20吨。 工地位置(a,b)及水泥日用量d 1 2 3 4 5 6 a 1.25 8.75 0.5 5.75 3 7.25 b 1.25 0.75 4.75 5 6.5 7.75 d 3 5 4 7 6 11 (1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少水泥,可使运输费用(总的吨千米数)最小,并求出吨千米数。 ( 注:先画图,在坐标上标出各工地位置(用蓝色*标示)和料场位置(用红色o标示)) (2)目前公司准备建立两个新的料场,日储量各为20吨,为使运输费用最省,问新的料场应建在何处,并算出两料场分别向工地运输多少吨水泥和费用。 (注:初始值取x0=[3 5 4 7 1 0 0 0 0 0 5 11 5 4 7 7]’) 二、问题分析 这是供应与选址的问题,2个料场分别向6个工地运送水泥,在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性规划问题,建立线性规划模型求解。如果改建两个新料场,要同时确定料场的位置(xj,yj)和运送量Xij,在同样条件下使总吨千米数最小,这是非线性规划问题,建立非线性规划模型求解。 三、模型假设 (1)假设料场和建筑工地之间都可以由直线到达; (2)运输费用由“吨千米数”来衡量; (3)两料场的日存储量够向各建筑工地供应; (4)运输途中不发生意外,从料场运出的水泥总量不会超过各个料场的日存储量; 四、模型建立 (显示模型函数的构造过程) 记工地的位置为(ai,bi),水泥日用量为di,i=1,…,6;料场位置为(xj,yj),日储量为ej,j=1,2, 料场j向工地i的运送量为Xij。 目标函数为:minfXj1i126ij(xjai)2(yjbi)2 X 约束条件为: j162ijdi, i1,2,,6 Xi1ijej, j1,2当用临时料场时决策变量为:Xij, 当不用临时料场时决策变量为:Xij,xj,yj。 (1)使用临时料场的情形: 使用两个临时料场A(5,1),B(2,7).求从料场j向工地i的运送量Xij . 在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性规划问题. 线性规划模型为: minfaa(i,j)Xij j1i126s.t. Xijdi, i1,2,,6j162 Xijej, j1,2i1其中 aa(i,j)(xjai)(yjbi),i=1,2,…,6,j=1,2,为常数. 设 X11=X1, X21= X 2,, X31= X 3, X41= X 4, X51= X 5,, X61= X 6 X12= X 7, X22= X 8,, X32= X 9, X42= X 10, X52= X 11,, X62= X 12 (2)改建两个新料场的情形: 改建两个新料场,要同时确定料场的位置(xj,yj)和运送量Xij,在同样条件下使总吨千米数最小.这是非线性规划问题.非线性规划模型为: 22minfXij(xjai)2(yjbi)2 j1i126s.t. Xijdi, i1,2,j162,6 Xijej, j1,2i1设 X11=X1, X21= X 2, X31= X 3, X41= X 4, X51= X 5,, X61= X 6 X12= X 7, X22= X 8, X32= X 9, X42= X 10, X52= X 11, X62= X 12 x1=X13, y1=X14, x2=X15, y2=X16 五、模型求解 (1). 先画图,在坐标上标出各工地位置(用蓝色*标示)和料场位置(用红色o标示) Matlab程序: x=[1.25 8.75 0.5 5.76 3 7.25]; y=[1.25 0.76 4.75 5 6.5 7.75]; x0=[5 2]; y0=[1 7]; plot(x,y,'*b'); hold on; plot(x0,y0,'or'); text(1.25,1.25,'¹¤µØ1'); text(8.75,0.75,'¹¤µØ2'); text(0.5,4.75,'¹¤µØ3'); text(5.75,5,'¹¤µØ4'); text(3,6.5,'¹¤µØ5'); text(7.25,7.25,'¹¤µØ6'); text(5,1,'Áϳ¡A'); text(2,7,'Áϳ¡B'); Matlab程序: clear a=[1.25 8.75 0.5 5.75 3 7.25]; b=[1.25 0.75 4.75 5 6.5 7.75]; d=[3 5 4 7 6 11]; x=[5 2]; y=[1 7]; e=[20 20]; for i=1:6 for j=1:2 aa(i,j)=sqrt((x(j)-a(i))^2+(y(j)-b(i))^2); end end cc=[aa(:,1);aa(:,2)]'; A=[1 1 1 1 1 1 0 0 0 0 0 0;0 0 0 0 0 0 1 1 1 1 1 1 ]; B=[20;20]; Aeq=[1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1]; beq=[d(1);d(2);d(3);d(4);d(5);d(6)]; vlb=[0 0 0 0 0 0 0 0 0 0 0 0]; vub=[ ]; [x,fval]=linprog(cc,A,B,Aeq,beq,vlb,vub) 结果: x = 3.0000 5.0000 1.0000 7.0000 0.0000 0.0000 0.0000 0.0000 3.0000 0.0000 6.0000 11.0000 fval =137.5692 即由料场A、B向6个工地运料方案为: 料场1 料场2 1 3 0 2 5 0 3 1 3 4 7 0 5 0 6 6 0 11 总的吨千米数为137.5692 (2) Matlab程序: function f=liaochang(x) a=[1.25 8.75 0.5 5.75 3 7.25]; b=[1.25 0.75 4.75 5 6.5 7.75]; d=[3 5 4 7 6 11]; e=[20 20]; f1=0; for i=1:6 s(i)=sqrt((x(13)-a(i))^2+(x(14)-b(i))^2); f1=s(i)*x(i)+f1; end f2=0; for i=7:12 s(i)=sqrt((x(15)-a(i-6))^2+(x(16)-b(i-6))^2); f2=s(i)*x(i)+f2; end f=f1+f2; clear x0=[3 5 4 7 1 0 0 0 0 0 5 11 5 4 7 7]; A=[1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 ;0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0]; B=[20;20]; Aeq=[1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0]; beq=[3 5 4 7 6 11]'; vlb=[zeros(12,1);-inf;-inf;-inf;-inf]; vub=[ ]; [x,fval]=fmincon('liaochang',x0,A,B,Aeq,beq,vlb,vub) 结果: x = Columns 1 through 8 3.0000 5.0000 4.0000 7.0000 1.0000 0 0 0 Columns 9 through 16 0 0 5.0000 11.0000 5.6962 4.9289 7.2500 7.7500 fval =89.8835 即两个新料场的坐标分别为(5.6962,4.9289),(7.2500,7.7500),由料场A、B向6个工地运料方案为: 料场1 料场2 1 3 0 2 5 0 3 4 0 4 7 0 5 1 5 6 0 11 总的吨千米数为89.8835,比用临时料场节省约46吨千米。

因篇幅问题不能全部显示,请点此查看更多更全内容