数学建模作业.docx
《数学建模作业.docx》由会员分享,可在线阅读,更多相关《数学建模作业.docx(15页珍藏版)》请在冰豆网上搜索。
数学建模作业
数学建模作业5(总11页)
佛山科学技术学院
上机报告
课程名称数学建模
上机项目料场问题
专业班级
一、问题提出
某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系(a,b)表示,距离单位:
km)及水泥日用量d(吨)由下表给出。
目前有两个料场位于A(5,1),B(2,7),日储量各有20吨。
(1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少水泥,可使运输费用(总的吨千米数)最小,并求出吨千米数。
(注:
先画图,在坐标上标出各工地位置(用蓝色*标示)和料场位置(用红色o标示))
(2)目前公司准备建立两个新的料场,日储量各为20吨,为使运输费用最省,问新的料场应建在何处,并算出两料场分别向工地运输多少吨水泥和费用。
(注:
初始值取x0=[35471000005115477]’)
二、问题分析
本问题主要讨论并解决了某公司每天给工地的供应计划与临时料场选址的相关问题。
工地的水泥全部由水泥料场来提供,各个工地的水泥日用量与每个水泥料场的日储量是一定的。
各个工地所需水泥量可以有两个料场同时提供,也可以由一个料场全部提供。
这就需要我们最优规划来解决。
为使总吨千米数达到最小,在考虑有直线道路连通的情况下建立相应的数学模型,给出相关算法,并运用Matlab软件编程和处理相关数据,得到最优决策方案。
符号说明:
:
第
个建筑工地;
:
第
个临时料场;
:
工地
的水泥日用量;
:
料场
到工地
的水泥运输量;
:
料场
到工地
的距离;
:
料场
的日储量;
三、模型假设
(1)假设料场和建筑工地之间都可以由直线到达;
(2)运输费用由“吨千米数”来衡量;
(3)两料场的日存储量够向各建筑工地供应;
(4)运输途中不发生意外,从料场运出的水泥总量不会超过各个料场的日存储量;
四、模型建立
(显示模型函数的构造过程)
记工地的位置为(ai,bi),水泥日用量为di,i=1,…,6;料场位置为(xj,yj),日储量为ej,j=1,2;料场j向工地i的运送量为Xij.
当用临时料场时决策变量为:
Xij,
当不用临时料场时决策变量为:
Xij,xj,yj.
使用两个临时料场的情形:
使用两个临时料场A(5,1),B(2,7).求从料场j向工地i的运送量Xij.在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性规划问题.线性规划模型为:
设X11=X1,X21=X2,,X31=X3,X41=X4,X51=X5,,X61=X6
X12=X7,X22=X8,,X32=X9,X42=X10,X52=X11,,X62=X12
改建两个新料场的情形:
改建两个新料场,要同时确定料场的位置(xj,yj)和运送量Xij,在同样条件下使总吨千米数最小.这是非线性规划问题.非线性规划模型为:
设X11=X1,X21=X2,X31=X3,X41=X4,X51=X5,,X61=X6
X12=X7,X22=X8,X32=X9,X42=X10,X52=X11,X62=X12
x1=X13,y1=X14,x2=X15,y2=X16
五、模型求解
(显示模型的求解方法、步骤及运算程序、结果)
(1)先画图,在坐标上标出各工地位置(用蓝色*标示)和料场位置(用红色o标示)
程序代码:
x=[3];
y=[5];
x0=[5,2];
y0=[1,7];
plot(x,y,'*b');
holdon;
plot(x0,y0,'or');
text,,'¹¤µØ1');
text,,'¹¤µØ2');
text,,'¹¤µØ3');
text,5,'¹¤µØ4');
text,5,'¹¤µØ5');
text,,'¹¤µØ6');
text(5,1,'Áϳ¡A');
text(2,7,'Áϳ¡B');
(2)使用两个临时料场的情形:
程序代码:
clear
a=[3];
b=[5];
d=[3547611];
x=[52];
y=[17];
e=[2020];
fori=1:
6
forj=1:
2
aa(i,j)=sqrt((x(j)-a(i))^2+(y(j)-b(i))^2);
end
end
CC=[aa(:
1);aa(:
2)]';
A=[111111000000
000000111111];
B=[20;20];
Aeq=[100000100000
010000010000
001000001000
000100000100
000010000010
000001000001];
beq=[d
(1);d
(2);d(3);d(4);d(5);d(6)];
VLB=[000000000000];
VUB=[];
x0=[123010010101];
[x,fval]=linprog(CC,A,B,Aeq,beq,VLB,VUB,x0)
结果
x=
fval=
(3)改建两个新料场的情形:
程序代码:
functionf=liaochang(x)
a=[3];
b=[5];
d=[3547611];
e=[2020];
f1=0;
fori=1:
6
s(i)=sqrt((x(13)-a(i))^2+(x(14)-b(i))^2);
f1=s(i)*x(i)+f1;
end
f2=0;
fori=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=[35471000005115477]';
A=[1111110000000000
0000001111110000];
B=[20;20];
Aeq=[1000001000000000
0100000100000000
0010000010000000
0001000001000000
0000100000100000
0000010000010000];
beq=[3547611]';
VLB=[zeros(12,1);-inf;-inf;-inf;-inf];
VUB=[];
[x,fval,exitflag]=fmincon('liaochang',x0,A,B,Aeq,beq,VLB,VUB)
结果:
x=
0
0
0
0
0
fval=
exitflag=
5
5
即两个新料场的坐标分别为(,),(,),由料场A、B向6个工地运料方案为:
1
2
3
4
5
6
料场A
0
料场B
0
0
0
0
总的吨千米数为,比用临时料场结果更好。