数学建模实验报告
计算机81
马力
08055017
一.锁具装箱问题
1实验题目:
某厂生产一种弹子锁具,每个锁具有n个槽,每个槽的高度从{1,2,3,4}这4个数(单位略)中任取一个,限制至少有一个相邻的槽高之差等于3,且至少有3个不同的槽高。每个槽的高度取遍这4个数且满足上面这两个限制时生产出一批锁(例如,当n等于3时,3个槽高为1,4,2的锁符合要求,而3个槽高为1,4,4的锁不满足要求)。求一批锁的把数。
2问题分析:
首先我们需要准确理解问题的意义,这道题目有两个变量,一个变量为每个锁具的槽的数目,另一个变量是就是所求的一批锁的个数。首先我们必须假定n为确定的值,通过计算机的模拟来确定一批锁的把数,或者我们可以利用排列组合的知识也可以得到。
3程序代码:
(1)N=4时的代码
s=0;n=4;
for j1=1:4;
for j2=1:4;
for j3=1:4;
for j4=1:4;
a1=j1;a2=j2;a3=j3;a4=j4;
amax=max([a1,a2,a3,a4]');
amin=min([a1,a2,a3,a4]');
number=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin) +(amax-a4)*(a4-amin);
neighbors=max([abs(a1-a2), abs(a2-a3),abs(a3-a4)]);
if number>0.5
if neighbors==3
s=s+1;
end
end
end
end
end
end
s
(2)n=7时的代码
s=0;m=4;
for j1=1:m;
for j2=1:m;
for j3=1:m;
for j4=1:m;
for j5=1:m;
for j6=1:m;
for j7=1:m;
a1=j1;a2=j2;a3=j3;a4=j4;a5=j5;a6=j6;a7=j7;
amax=max([a1,a2,a3,a4,a5,a6,a7]');
amin=min([a1,a2,a3,a4,a5,a6,a7]');
number=(amax-a1)*(a1-amin)+(amax-a2)*(a2-amin)+(amax-a3)*(a3-amin)+(amax-a4)*(a4-amin)+(amax-a5)*(a5-amin)+(amax-a6)*(a6-amin)+(amax-a7)*(a7-amin);
neighbors=max([abs(a1-a2), abs(a2-a3), abs(a3-a4), abs(a4-a5),abs(a5-a6),abs(a6-a7)]');
if number>0.5
if neighbors==3;
s=s+1;
end
end
end
end
end
end
end
end
end
s
4,实验结果
n=4时,s=64
n=7时,s=8216
二.线性规划问题
1. 实验题目:
某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千克,工人20名,可获利9万元.今工厂共有原料60千克,工人150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何安排生产计划,即两种饮料各生产多少使获利最大.进一步讨论:
1)若投资0.8万元可增加原料1千克,问应否作这项投资.
2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划.
2.问题分析:
由题目易知此题属于线性规划问题,题目本身是很简单的,我们我们需要解决的问题是:根据已知条件列出不等式方程组,再利用特定的MATLAB语句接触方程组即可。
3.数学模型:
解:
设安排甲饮料生产x百箱,乙饮料生产y百箱。
故所求目标函数为:max=10x+9y
1)函数的约束条件为:
6x+5y£60 (1)
10x+20y£150 (2)
x£8 (3)
x³0 (4)
y³0 (5)
2)投资0.8万元可增加原料1千克:
函数的约束条件为:
6x+5y£61 (1)
10x+20y£150 (2)
x£8 (3)
x³0 (4)
y³0 (5)
3)每百箱甲饮料获利可增加1万元:
所求目标函数为:max=11x+9y
函数的约束条件为:
6x+5y£60 (1)
10x+20y£150 (2)
x£8 (3)
x³0 (4)
y³0 (5)
4. 程序代码:
1)原题的程序代码:
c=[-10 -9];
A=[6 5;10 20;];
B=[60;150];
Aeq=[];
Beq=[];
vlb=[0;0]
vub=[8;0]
[x,fval]=linprog(c,A,B,Aeq,Beq,vlb,vub)
2)投资0.8万元可增加原料1千克:
c=[-10 -9];
A=[6 5;10 20;];
B=[61;150];
Aeq=[];
Beq=[];
vlb=[0;0]
vub=[8;0]
[x,fval]=linprog(c,A,B,Aeq,Beq,vlb,vub)
3)每百箱甲饮料获利可增加1万元:
c=[-11 -9];
A=[6 5;10 20;];
B=[60;150];
Aeq=[];
Beq=[];
vlb=[0;0]
vub=[8;0]
[x,fval]=linprog(c,A,B,Aeq,Beq,vlb,vub)
5.运行结果及分析:
1)
分析:安排甲饮料8百箱,乙饮料0百箱;
最大利润为80万。
2)
分析:当投资0.8万元增加一千克原料时,此时的仿真的结果不变:
安排甲饮料8百箱,乙饮料0百箱;
但由于此时有0.8万元的额外投资,使得总利润只有79.2万元,总利润降低,所以不应该做这项投资。
3)
分析:安排甲饮料8百箱,乙饮料0百箱;
总利润为88万。应该改变生产计划。
三.随机库存问题
1.实验题目
某企业对于某种材料的月需求量为随机变量,具有如下表概率分布:
每次订货费为500元,每月每吨保管费为50元,每月每吨货物缺货费为1500元,每吨材料的购价为1000元。该企业欲采用周期性盘点的策略来控制库存量,求最佳的,值。
(注:策略指的是若发现存货量少于s时立即订货,将存货补充到S,使得经济效益最佳。)
2. 问题分析
首先确定S,s的取值范围,因为策略指的是若发现存货量少于s时立即订货,将存货补充到S,使得经济效益最佳。可知S,s的合理范围应在[50,120]。因为要考虑长期的经济效益,所以本题中对1000个月的库存进行考虑,并且假设每个月均保留货物至月底再进行使用,在每个月的月初对上个月及本月进行盘点。
3.程序代码
min=999999999999999;
for S=50:10:120
for s=50:10:S
flag=0;
value=0;
remains=S;
for count =1:1:200
if flag==1
amount=S-remains;
remains=S;
value=value+amount*1000+500;
else
value=value;
end
z=rand(1,1);
if z> 0.95&z<1
need=120;
end
if z>0.85& z<0.95
need=110;
end
if z>0.75&z<0.85
need=100;
end
if z>0.7&z<0.75
need=90;
end
if z>0.45& z<0.7
need=80;
end
if z>0.3& z<0.45
need=70;
end
if z>0.1&z<0.3
need=60;
end
if z>0&z<0.1
need=50;
end
remains=remains-need;
if remains< 0
value=value+(0-remains)*1500;
flag=1;
else
if remains< s
flag=1;
value=value+remains*50;
else
flag=0;
value=value+remains*50;
end
end
end
t=value/200;
S;
s;
t;
if t<min
min=t;
RS=S;
rs=s;
end
end
end
min
RS
rs
运行结果显示当S=110,s在90附近取值时,费用最少。
四.插值问题
1.实验题目:
在某海域测得一些点(x,y)处的水深z由下表给出,船的吃水深度为5英尺,在矩形区域(75,200)*(-50,150)里的哪些地方船要避免进入。
2.问题分析:
由题目易知此题属于差值问题,需要用差值算法并且借助于计算机来模拟题目中描述的情景,而我们需要解决的问题是:根据已知条件借助于MATLAB画图工具来预测不同点的水的深度,根据预测的结果使船避免进入这些区域。
3.程序代码:
1) x=[129,140,103.5,88,185.5,195,105,157.5,107.5,77,81,162,162,117.5];
2) y=[7.5,141.5,23,147,22.5,137.5,85.5,-6.5,-8.1,3,56.5,-66.5,84,-33.5];
3) z=[4,8,6,8,6,8,8,9,9,8,8,9,4,9];
4) xi=75:1:200;
5) yi=-50:1:150;
6) z3i=griddata(x,y,z,xi,yi','cubic')
7) figure(4)
8) mesh(xi,yi,z3i)
9) xlabel('X'),ylabel('Y'),zlabel('Z')
10) figure(5)
11) [C,h]=contour(xi,yi,z3i,'r')
12) clabel(C,h)
4.实验结果
(1)海底深度曲面图
(2)平面等高线图
5.水的流出时间问题
1.实验题目:
有一圆台圆台,上半径为2m,下半径为1m,髙为4m。圆台中注满水。圆台底部有一面积为的0.001m2出水口。现在经出水口,从水满状态开始漏水。请绘制出流速曲线。
2.问题分析:
在此问题中我们需要考虑的是一个流速随时间变化的动态过程,于是可以先可虑一个微小变化,当y从:y+变化到y(高度是减少的),由于只是一个微小的高度变化,所以可以把水塔看作是一个圆柱形,水塔中水的体积也就可以看做是一个圆柱体水的体积的变化量=-=*(/16+y/2+1),(水的体积是减少量,所以应该为负)。建立起微分方程后我们就可以用matlab进行仿真算出结果并绘制时间和高度的曲线图。
3.程序代码:
t=0;
for i=0:0.001:4-0.001
V=0.001*pi*(2-(1/4*i))^2;
T=V/(sqrt(2*(4-i)*9.8)*0.001)
t=T+t;
plot(t,(4-i),'black');
hold on
end
4.实验结果:
6.层次分析问题
1.实验题目
一位四年级大学生正在从若干招聘单位中挑选合适的工作岗位,他考虑的主要因素包括发展前景,经济收入,单位信誉,地理位置等。试建立模型给他提出决策建议。
2.问题分析
用层次分析法。
X1:发展前景 X2:经济收入
X3:单位信誉 X4:地理位置
比较赋值矩阵A=[1 1/5 1/3 1;5 1 3 1/9;3 1/3 1 5;1 9 1/5 1;];
通过迭代的方法得到各权系数。再通过综合评价公式整体权衡,挑选出最适合的工作岗位。
3.程序代码
A=[1 1/5 1/3 1;5 1 3 1/9;3 1/3 1 5;1 9 1/5 1;];
e0=[1/4;1/4;1/4;1/4];
e01=A*e0;
e02=norm(e01);
e1=e01/e02;
e11=A*e1;
e12=norm(e11);
e2=e11/e12;
e21=A*e2
e22=norm(e21)
e3=e21/e22
e31=A*e3
e32=norm(e31)
e4=e31/e32
e41=A*e4
e42=norm(e41)
e5=e41/e42
e51=A*e5
e52=norm(e51)
e6=e51/e52
e61=A*e6
e62=norm(e61)
e7=e61/e62
e71=A*e7
e72=norm(e71)
e8=e71/e72
e81=A*e8
e82=norm(e81)
e9=e81/e82
e91=A*e9
e92=norm(e91)
e10=e91/e92
e111=A*e10
e112=norm(e111)
e12=e111/e112
e121=A*e11
e122=norm(e121)
e13=e121/e122
e131=A*e13
e132=norm(e131)
e14=e131/e132
e141=A*e14
e142=norm(e141)
e15=e141/e142
e151=A*e15
e152=norm(e151)
e16=e151/e152
e161=A*e16
e162=norm(e161)
e17=e161/e162
e171=A*e17
e172=norm(e171)
e18=e171/e172
e181=A*e18
e182=norm(e181)
e19=e181/e182
e191=A*e19
e192=norm(e191)
e20=e191/e192
e201=A*e20
e202=norm(e201)
e21=e201/e202
e211=A*e21
e212=norm(e211)
e22=e211/e212
e211=A*e21
e212=norm(e211)
e22=e211/e212
e221=A*e22
e222=norm(e221)
e23=e221/e222
e231=A*e23
e232=norm(e231)
e24=e231/e232
e241=A*e24
e242=norm(e241)
e25=e241/e242
e251=A*e25
e252=norm(e251)
e26=e251/e252
e261=A*e26
e262=norm(e261)
e27=e261/e262
e271=A*e27
e272=norm(e271)
e28=e271/e272
e281=A*e28
e282=norm(e281)
e29=e281/e282
e291=A*e29
e292=norm(e291)
e30=e291/e292
e301=A*e30
e302=norm(e301)
e31=e301/e302
e311=A*e31
e312=norm(e311)
e32=e311/e312
e321=A*e32
e322=norm(e321)
e33=e321/e322
e331=A*e33
e332=norm(e331)
e34=e331/e332
e341=A*e34
e342=norm(e341)
e35=e341/e342
e351=A*e35
e352=norm(e351)
e36=e351/e352
e361=A*e36
e362=norm(e361)
e37=e361/e362
4.实验结果
直至运行35次,才得到e35=e34,则e35的四个值就是各权重值.综合分析函数为
Y=1.1497x1+0.4235x2+0.6124x3+0.6506x4
再根据具体情况求的y值,即可确定最佳选择。
实验总结:
通过本次实验使我跟好的认识了有关数学建模的知识,并且了解了有关内容,使我对数学的认识又多了一步,并且使我学会了使用2种数学软件,虽然不熟悉,但还是可以解决一些问题。但是在做实验的过程中遇到很多问题,所以和同学讨论了一些有关知识,增加了我们的友谊。