数学建模作业5数学规划模型供应与选址的问题.docx
《数学建模作业5数学规划模型供应与选址的问题.docx》由会员分享,可在线阅读,更多相关《数学建模作业5数学规划模型供应与选址的问题.docx(13页珍藏版)》请在冰豆网上搜索。
数学建模作业5数学规划模型供应与选址的问题
一、问题提出
某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系(a,b)表示,距离单位:
km)及水泥日用量d(吨)由下表给出。
目前有两个料场位于A(5,1),B(2,7),日储量各有20吨。
(1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少水泥,可使运输费用(总的吨千米数)最小,并求出吨千米数。
(注:
先画图,在坐标上标出各工地位置(用蓝色*标示)和料场位置(用红色o标示))
(2)目前公司准备建立两个新的料场,日储量各为20吨,为使运输费用最省,问新的料场应建在何处,并算出两料场分别向工地运输多少吨水泥和费用。
(注:
初始值取x0=[35471000005115477]’)
二、问题分析
对于问题
(1),确定用A,B两料场分别向各工地运送水泥,使运输费用(总的吨千米数)最小,即要知道两点间线段最小,料场到工地的路线是直的,而要满足六个工地的需求,又要考虑到A、B两个料场的供应量,即在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性问题。
。
对于问题
(2),需要重新改建六个新的料场,使得在在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,则需要确定新的料场的具体位置,这是非线性问题。
三、模型假设
1、假设料场和建筑工地之间都可以由直线到达;
2、运输费用由“吨千米数”来衡量;
3、两料场的日存储量够向各建筑工地供应;
4、运输途中不发生意外,从料场运出的水泥总量不会超过各个料场的日存储量。
四、模型建立
(显示模型函数的构造过程)
记工地的位置为
,水泥日用量为
,i=1,…,6;料场位置为
,
日储量为
,j=1,2;料场
向工地
的运送量为
。
目标函数为:
约束条件为:
当用临时料场时决策变量为:
当不用临时料场时决策变量为:
,
,
使用临时料场的情形:
使用两个临时料场A(5,1),B(2,7).求从料场j向工地
的运送量
.在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性规划问题。
线性规划模型为:
其中
,i=1,2,…,6,j=1,2,为常数
设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)和运送量
,在同样条件下使总吨千米数最小.这是非线性规划问题.非线性规划模型为:
设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
五、模型求解
(显示模型的求解方法、步骤及运算程序、结果)
建立程序:
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(3,,'¹¤µØ5');
text,,'¹¤µØ6')
text(5,1,'Áϳ¡A');
text(2,7,'Áϳ¡B');
使用临时料场的情形:
编写程序如下:
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];
[xx,fval]=linprog(CC,A,B,Aeq,beq,vlb,vub,x0)
程序截图如下:
程序的运行结果为:
xx=
fval=
运行结果截图如下:
即由料场A、B向6个工地运料方案为:
1
2
3
4
5
6
料场1
3
5
0
7
0
1
料场2
0
0
4
0
6
10
总的吨千米数为.
改建两个新料场的情形:
先编写M文件:
functionf=liaoch(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('liaoch',x0,A,B,Aeq,beq,vlb,vub)
程序截图如下:
程序运行结果如下:
x=
Columns1through8
000
Columns9through16
00
fval=
exitflag=
5
程序结果截图如下:
即两个新料场的坐标分别为(,),(,),由料场A、B向6个工地运料方案为:
1
2
3
4
5
6
料场1
3
5
4
7
1
0
料场2
0
0
0
0
5
11
总的吨千米数为,比用临时料场节省约46吨千米。