数学建模作业 数学规划模型 供应与选址的问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 1 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=[];
x0=[1 2 3 0 1 0 0 1 0 1 0 1];
4、运输途中不发生意外,从料场运出的水泥总量不会超过各个料场的日存储量。
四、模型建立
(显示模型函数的构造过程)
记工地的位置为 ,水泥日用量为 ,i=1,…,6;料场位置为 ,
日储量为 ,j=1,2;料场 向工地 的运送量为 。
目标函数为:
约束条件为:
当用临时料场时决策变量为:
当不用临时料场时决策变量为: , ,
a=[ 3 ];
b=[ 5 ];
d=[3 5 4 7 6 11];
e=[20 20];
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);
二、问题分析
对于问题(1),确定用A,B两料场分别向各工地运送水泥,使运输费用(总的吨千米数)最小,即要知道两点间线段最小,料场到工地的路线是直的,而要满足六个工地的需求,又要考虑到A、B两个料场的供应量,即在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性问题。。
holdon;
plot(x0,y0,'or');
text,,'1¤μ?1');
text,,'1¤μ?2');
text,,'1¤μ?3')
text,5,'1¤μ?4');
text(3,,'1¤μ?5');
text,,'1¤μ?6')
text(5,1,'á?3?A');
text(2,7,'á?3?B');
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
程序截图如下:
程序运行结果如下:
x =
Columns 1 through 8
0 0 0
Columns 9 through 16
0 0
fval =
exitflag =
5
程序结果截图如下:
即两个新料场的坐标分别为(,),(,),由料场A、B向6个工地运料方案为:
1
2
3
4
5
6
料场1
3
5
4
7
1
0
料场2
0
0
0
X12=X 7,X22=X 8,,X32=X 9,X42=X 10,X52=X 11,,X62=X 12
改建两个新料场的情形:
改建两个新料场,要同时确定料场的位置(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');
对于问题(2),需要重新改建六个新的料场,使得在在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,则需要确定新的料场的具体位置,这是非线性问题。
三、模型假设
1、假设料场和建筑工地之间都可以由直线到达;
2、运输费用由“吨千米数”来衡量;
3、两料场的日存储量够向各建筑工地供应;
0
5
11
总的吨千米数为,比用临时料场节省约46吨千米。
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,exitflag]=fmincon('liaoch',x0,A,B,Aeq,beq,vlb,vub)
[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)
( 注:先画图,在坐标上标出各工地位置(用蓝色*标示)和料场位置(用红色o标示))
(2)目前公司准备建立两个新的料场,日储量各为20吨,为使运输费用最省,问新的料场应建在何处,并算出两料场分别向工地运输多少吨水泥和费用。
(注:初始值取x0=[3 5 4 7 1 0 0 0 0 0 5 11 5 4 7 7]’)
一、问题提出
某公wenku.baidu.com有6个建筑工地要开工,每个工地的位置(用平面坐标系(a,b)表示,距离单位:km)及水泥日用量d(吨)由下表给出。目前有两个料场位于A(5,1),B(2,7),日储量各有20吨。
(1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少水泥,可使运输费用(总的吨千米数)最小,并求出吨千米数。
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];
使用临时料场的情形:
编写程序如下:
clear
a=[ 3 ];
b=[ 5 ];
d=[3 5 4 7 6 11];
x=[5 2];
y=[1 7];
e=[20 20];
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(5,1),B(2,7).求从料场j向工地 的运送量 .在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性规划问题。线性规划模型为:
其中 ,i=1,2,…,6,j=1,2,为常数
设X11=X1,X21=X 2,,X31=X 3,X41=X 4,X51=X 5,,X61=X 6
相关文档
最新文档