当前位置:文档之家› 数学建模实验4

数学建模实验4

B每天向6个人工地运输水泥数量为Y1,Y2,Y3,Y4,Y5,Y6
则目标函数为
MAX S=X1*S11+X2*S12+X3*S13+S4*S14+X5*S15+X5*S16+
Y1*S21+Y2*S22+Y3*S23+Y4*S24+Y5*S25+Y6*S26
约束条件:
X1+X2+X3+X4+X5+X6<=20
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
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

6.5
7.75
d
3
5
4
7
6
11
建模分析:
6个工地到A的距离为S11,S12,S13,S14,S15,S16,
到B的距离为S21,S22,S23,S24,S25,S26
设A每天向6个人工地运输水泥数量为X1,X2,X3,X4,X5,X6
运行结果为:
>> gying2
x =
2.9410
4.8404
3.8779
6.9431
1.3033
0.0221
0.0590
0.1596
0.1221
0.0569
4.6967
10.9779
5.7297
4.9757
7.2500
7.7500
fval =
90.4921
exitflag =
2
结果分析:
由运行结果知,新料场的坐标为(3.2547,5.6522) (7.2500,7.7500)
若c变小,第一季度的生产量增加,第二季度不变,第三季度的生产量减少。C变大,第一季度生产量减少,第二季度不变,第三季度生产量增加。这是因为c变小,存储费用会变小,相对于生产费用的快速增长,最好的办法就是在生产费用低的时候多生产,把多余的机器进行存储,存储的费用会小于费用的增长额度,这样做可以节省生产费用,而c变大,情况正好相反。
运量为90.4921吨千米,比原来少了45.7354吨千米。
2.求解非线性规划
用MATLAB编写程序如下:
(1)先编写M文件ex02.m如下
functionfm=ex02(x)
n=10;
c=[-6.089,-17.164,-34.054,-5.914,-24.721,
-14.986,-24.1,-10.708,-26.662,-22.179];
vlb=[40;0;0];vub=[100;100;100];
[x,fval]=fmincon('fun',x0,A,b,Aeq,beq,vlb,vub)
运行结果为
x =
49.9999
60.0000
70.0000
fval =
1.1280e+04
由运算结果分析:该厂第一季度,第二季度,第三季度的生产量分别为50,60,70台时,才能满足合同且总费用最低,最低费用为11280元
f2=s(i)*x(i)+f2;
end
f=f1+f2;
(2)编写主程序gying.m
clear
% x0=[2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2]';
x0=[3 5 0 7 0 1 0 0 4 0 6 10 5 1 2 7]';
A=[1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
《数学建模实验》实验报告
学号:姓名:
实验四:线性规划3
1.供应与选址
某公司有6个建筑工地要开工,每个工地的位置(用平面坐标a,b表示,距离单位:千米)及水泥日用量d吨由下表给出。目前有两个临时料场位于A(5,1), B(2,7),日储量各有20吨。假设从料场到工地均有直线道路相连,1)试制定每天的供应计划,即从A、B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。2)为进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量仍各为20吨,问应建在何处,节省的吨千米数有多大?
结果显示:
>> ti1
xx =
3.0000
5.0000
0.0000
7.0000
0.0000
1.0000
0.0000
0.0000
4.0000
0.0000
6.0000
10.0000
fval =
136.2275
结果分析:
即由料场A,B 向6个工地运料方案为:
1
2
3
4
5
6
料场A
3
5
0
7
0
1
料场B
0
0
4
0
6
10
functionf=fun(x);
f=50*(x(1)+x(2)+x(3))+0.2*(x(1)^2+x(2)^2+x(3)^2)+4*(2*x(1)+x(2)-140)
再编写主程序fxxgh.m如下
x0=[60;60;60];
A=[-1 -1 0];b=[-100];
Aeq=[1 1 1];beq=[180];
sx=0;
fori=1:n
sx=sx+x(i);
end
fm=0;
fori=1:n
fm=fm+x(i)*(c(i)+log(x(i)/sx));
end
(2)再编写主程序UNtitle12.m
Aeq=[1 2 2 0 0 1 0 0 0 1;
0 0 0 1 2 1 1 0 0 0;
0 0 1 0 0 0 1 1 1 1];
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,exitflag]=fmincon('liaoch',x0,A,B,Aeq,beq,vlb,vub)
0.0000
0.8745
0.1255
0.0000
fval =
-69.5877
结果分析:此非线性规划结果为-69.5877.
3.某厂向用户提供发动机,合同规定,第一、二、三季度末分别交货40台、60台、80台.每季度的生产费用为 (元),其中x是该季生产的台数。若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c元。已知工厂每季度最大生产能力为100台,第一季度开始时无存货,设a=50、b=0.2、c=4,问工厂应如何安排生产计划,才能既满足合同又使总费用最低.讨论a、b、c变化对计划的影响,并作出合理的解释。
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];
[xx,fval]=linprog(CC,A,B,Aeq,beq,VLB,VUB,x0)
beq=[2,1,1]';
L=1e-6.*ones(10,1);
U=inf.*ones(10,1);
x0=ones(10,1);
[x,fval]=fmincon('ex02',x0,[],[],Aeq,beq,L,U)
运行结果如下:
x=
0.3936
0.8032
0.0000
1.0000
0.0000
0.0000
建模分析:
设三季度分别生产X1,X2,X3台
目标函数:S=f(X1)+f(X2)+f(X3)+(X1-40)*C+(X2+X1-40-60)*C
约束条件:
X1>=40
X2+X1-40>=60
X3+X2+X1-40-60=80
X1<=100,
X2<=100,
X3<=100
MATLAB程序如下:
先编写M文件fun.m如下
若a变化,对计划没有影响,因为a的变化,对于各离度的费用增长率造成相同的影响,并不会给个季度之间的生产带来差异,只会使生产的总体费用增加。
若b变大,第一季度生产量要增加,第二季度保持不变,第三季度生产量减少,b变小,第一季度产量要减少,第二季度不变,第三季度产量增加。这是因为b变大,每个季度的费用增长率都会增大,生产数量多的季度的费用增长率增长的会比其他季度更快,因此减少生产量大的季度的生产量,以减缓费用的快速增加。而b变小的时候,情况正好相反。
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;
相关主题