1、目录实训项目一 线性规划问题及lingo软件求解1实训项目二 lingo中集合的应用 .7实训项目三 lingo中派生集合的应用 9实训项目四 微分方程的数值解法一13实训项目五 微分方程的数值解法二.15实训项目六 数据点的插值与拟合.17综合实训作品 .18每次实训课必须带上此本子,以便教师检查预习情况和记录实验原始数据。实验时必须遵守实验规则。用正确的理论指导实践袁必须人人亲自动手实验,但反对盲目乱动,更不能无故损坏仪器设备。这是一份重要的不可多得的自我学习资料袁它将记录着你在大学生涯中的学习和学习成果。请你保留下来,若干年后再翻阅仍将感到十分新鲜,记忆犹新。它将推动你在人生奋斗的道路上
2、永往直前! 项目一:线性规划问题及lingo软件求解一、实训课程名称 数学建模实训二、实训项目名称 线性规划问题及lingo软件求解 三、实验目的和要求 了解线性规划的基本知识,熟悉应用LINGO解决线性规划问题的一般方法四:实验内容和原理内容一: 某医院负责人每日至少需要下列数量的护士班次时间最少护士数16:00-10:0060210:00-14:0070314:00-18:0060418:00-22:0050522:00-02:0020602:00-06:0030每班的护士在值班的开始时向病房报道,连续工作8个小时,医院领导为满足每班所需要的护士数,最少需要多少护士。内容二: 内容三 五:
3、主要仪器及耗材计算机与Windows2000/XP系统;LINGO软件六:操作办法与实训步骤内容一:考虑班次的时间安排,是从6时开始第一班,而第一班最少需要护士数为60,故x1=60 ,又每班护士连续工作八个小时,以此类推,可以看出每个班次的护士可以为下一个班次工作四小时,据此可以建立如下线性规划模型:程序编程过程:min=x1+x2+x3+x4+x5+x6;x1=60;x1+x2=70;x2+x3=60;x3+x4=50;x4+x5=20;x5+x6=30;编程结果: Global optimal solution found. Objective value: 150.0000 Infea
4、sibilities: 0.000000 Total solver iterations: 3 Variable Value Reduced Cost X1 60.00000 0.000000 X2 10.00000 0.000000 X3 50.00000 0.000000 X4 0.000000 1.000000 X5 30.00000 0.000000 X6 0.000000 0.000000 Row Slack or Surplus Dual Price 1 150.0000 -1.000000 2 0.000000 -1.000000 3 0.000000 0.000000 4 0.
5、000000 -1.000000 5 0.000000 0.000000 6 10.00000 0.000000 7 0.000000 -1.000000内容二:(1)max=6*x1+4*x2;2*x1+3*x2100;4*x1+2*x2120;x1,x2分别表示两种型号生产数量。 所以,生产产品A1、A2分别为20、20件时,可使利润最大,最大为200元。(2) 所以,当产品A1的利润在(2.6666667,8)时,不影响产品的生产数量。(3) 所以,当装配工序的工时在(60,180)时,不改变产品种类,只需调整数量。(4)加放产品A3,建立新的线性规划问题max=6*x1+4*x2+5*
6、x3;2*x1+3*x2+4*x3=100;4*x1+2*x2+2*x3=120;gin(x1);gin(x2);gin(x3); 内容三:(1)设生产I 产品为x1,生产 II为x2, 生产 III 产品为x3,则有: max=3*x1+2*x2+2.9*x3; 8*x1+2*x2+10*x3300; 10*x1+5*x2+8*x3400; 2*x1+13*x2+10*x3420; gin(x1); gin(x2); gin(x3); 所以,当月仅生产产品、数量分别为24、24、5时工厂的利益最大,最大利润为134.5千元。(2)max=3*x1+2*x2+2.9*x3-18;8*x1+2*
7、x2+10*x3300;10*x1+5*x2+8*x3460;2*x1+13*x2+10*x3420;gin(x1);gin(x2);gin(x3); 借用其他工厂的设备B 60台时时,可生产产品数量31、产品数量26,此时每月最大利润为127千元,比不借用设备时的利润少7.5千元。所以借用B设备不合算。(3)如果投入两种新产品,设每月生产的数量分别为x4、x5,则:max=3*x1+2*x2+2.9*x3+2.1*x4+1.87*x5;8*x1+2*x2+10*x3+12*x4+4*x5300;10*x1+5*x2+8*x3+5*x4+4*x5400;2*x1+13*x2+10*x3+10*
8、x4+12*x5420;gin(x1);gin(x2);gin(x3);gin(x4);gin(x5); 投产产品IV、V后,该工厂生产产品I、II、III、IV、V数量分别为26、19、1、1、8时,每月最大利润为135.96千元,比不投产该产品时多增加利润1.46千元。故投产产品IV、I在经济上合算。(4)max=4.5*x1+2*x2+2.9*x3;9*x1+2*x2+10*x3300;12*x1+5*x2+8*x3400;4*x1+13*x2+10*x3=required(j);end 所以最少需要180名护士。内容二:model:sets:days/z1,z2,z3,z4,z5,z6
9、,z7/:required,hire;endsetsdata:required=16 15 12 14 16 18 19;enddatamin=200*sum(days(i):hire(i);for(days(j): sum(days(i)|i#le#5:hire(wrap(j-i+1,7)=required(j);end 所以要使工资开支最省至少需要22名售货员,工资开资最省为4400元。项目三: lingo中派生集合的应用一、实训课程名称 数学建模实训二、实训项目名称 lingo中派生集合的应用三、实验目的和要求 熟悉应用LINGO解决规模较大线性规划问题的一般方法,熟悉派生集合、稀疏集合
10、的应用四:实验内容和原理采用lingo中的集合语言,编程求解下列两个问题内容一: 内容二:计算6个产地8个销地的最小费用运输问题。产销单位运价如下表。单位 销地运价产地B1B2B3B4B5B6B7B8产量A16267425960A24953858255A35219743351A47673927143A52395726541A65522814352销量3537223241324338 五:主要仪器及耗材计算机与Windows2000/XP系统;LINGO软件六:操作办法与实训步骤内容一:程序:model:SETS: CITIES/1,2,3,4,5,6,7,8,9,10/:L; ROADS(CI
11、TIES,CITIES)/ 1,2 1,3 2,4 2,5 2,6 3,4 3,5 3,6 4,7 4,8 5,7 5,8 5,9 6,8 6,9 7,10 8,10 9,10/:D;ENDSETSDATA: D= 6 5 3 6 9 7 5 11 9 1 8 7 5 4 10 5 7 9; L=0,;ENDDATAFOR(CITIES(i)|i#GT#1:L(i)=MIN(ROADS(j,i):L(j)+D(j,i););END结果: 所以,从城市1到城市10的最短路径长度为17,具体路径为:124810内容二:程序:model:sets:gongying/1.6/:chandi;xuqiu
12、/1.8/:xiaodi;link(gongying,xuqiu):yunjia,c;endsetsdata:chandi=60 55 51 43 41 52;xiaodi=35 37 22 32 41 32 43 38;yunjia=6 2 6 7 4 2 5 9 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddatamin=sum(link(i,j):c*yunjia);for(gongying(i):sum(xuqiu(j):c(i,j) dsolve(x2-1)*Dy+2*
13、x*y-sin(x)=0)ans =1/2*(sin(x)+2*exp(-2*x/(x2-1)*t)*C1*x)/x2、 x,y=dsolve(Dx+x+y=0,Dy+x-y=0,x(0)=1,y(0)=0,t); x=simple(x)x =(-1/4*2(1/2)+1/2)*exp(2(1/2)*t)+(1/4*2(1/2)+1/2)*exp(-2(1/2)*t) y=simple(y)y =-1/4*2(1/2)*(exp(2(1/2)*t)-exp(-2(1/2)*t)3、M_文件:function dx=l(t,x)dx=zeros(2,1);dx(1)=x(1)-0.1*x(1)*
14、x(2)+0.01*t;dx(2)=-x(2)+0.4*x(1)*x(2)+0.04*t;程序(ode45): t,x=ode45(l,0,100,30 20); plot(t,x(:,1),-,t,x(:,2),*) 程序(ode15s): t,x=ode15s(l,0,100,30 20); plot(t,x(:,1),-,t,x(:,2),*) 项目五:微分方程的数值解法二一、实训课程名称 数学建模实训二、实训项目名称 微分方程求解三、实验目的和要求 熟悉并掌握用matlab解微分方程的解析解和数值解四:实验内容和原理一个慢跑者在平面上沿圆以恒定的速率v=1跑步,设圆方程为: x=10+
15、20cost, y=20+20sint. 突然有一只狗攻击他. 这只狗从原点出发,以恒定速率w跑向慢跑者,狗的运动方向始终指向慢跑者.分别求出w=20,w=5时狗的运动轨迹.五:主要仪器及耗材计算机 、matlab软件六:操作办法与实训步骤当w=20建立M文件h,M文件如下function dy=h(t,y) dy=zeros(2,1); dy(1)=20*(10+20*cos(t)-y(1)/sqrt(10+20*cos(t)-y(1)2+(20+20*sin(t)-y(2)2); dy(2)=20*(20+20*sin(t)-y(2)/sqrt(10+20*cos(t)-y(1)2+(20
16、+20*sin(t)-y(2)2);程序如下:取t0=0,tf=10t,y=ode45(h,0 10,0 0); t=0:0.1:2*pi; X=10+20*cos(t); Y=20+20*sin(t); plot(X,Y,-) hold onplot(y(:,1),y(:,2),*) 当W=5建立M文件l,M文件如下function dy=l(t,y) dy=zeros(2,1); dy(1)=5*(10+20*cos(t)-y(1)/sqrt(10+20*cos(t)-y(1)2+(20+20*sin(t)-y(2)2); dy(2)=5*(20+20*sin(t)-y(2)/sqrt(1
17、0+20*cos(t)-y(1)2+(20+20*sin(t)-y(2)2);程序如下:取t0=0,tf=10t,y=ode45(l,0 10,0 0); t=0:0.1:2*pi; X=10+20*cos(t); Y=20+20*sin(t); plot(X,Y,-) hold onplot(y(:,1),y(:,2),*) 项目六:数据点的插值与拟合一、实训课程名称 数学建模实训二、实训项目名称 数据点的插值与拟合三、实验目的和要求 了解插值、最小二乘拟合的基本原理,掌握用MATLAB计算一维插值和两种二维插值的方法,掌握用MATLAB作最小二乘多项式拟合和曲线拟合的方法四:实验内容和原理
18、 附件1列出了采样点的位置、海拔高度及其所属功能区等信息,现要求你们通过数学建模来完成以下任务:(1)给出8种主要重金属元素在该城区的空间分布,并分析该城区内不同区域重金属的污染程度。五:主要仪器及耗材计算机与Windows2000/XP系统;MATLAB软件六:操作办法与实训步骤在matlab中输入: x=;y=;z=;cx=0:100:28654;cy=5000:100:18449;cz=griddata(x,y,z,cx,cy,cubic);meshz(cx,cy,cz),rotate3dxlabel(X),ylabel(Y),zlabel(Z)figure(2),contour(cx,
19、cy,cz,15,r); 综合实训作品基于枚举法和曲线积分法公路选址问题的求解摘 要城区公路选址是一项利民工程,为将该工程做好,建设部门在设计时应最大限度减少造价,从而节约成本,达到费用最省。为此目的,本文利用函数化思想建立模型求解并给出了五种不同要求下的最优方案。由题目所给数据(图1)可知,直线AB右上方单位区域中的单位建设费用小于AB左下的单位建设费用,且数据矩阵关于其次对角线对称。因而转弯点(无论一个或两个)均应位于AB右上区域。问题1要求至多1个转弯点且在网格点上,可分0个和1个转弯点两种情况。对于0个转弯点,即直线AB,通过几何方法得出建设费用为14.9907百万元。对于1个转弯点在
20、网格点上的问题,我们利用函数化思想建立函数关系模型,运用枚举法和权重法,并利用 编程直接输出最小费用。比较可知,恰有一个转弯点时较无转弯点为优。其方案是选择坐标为(5,6)或(6,5)的点,建设费用最小为14.707百万元。对于问题3,要求转弯点在网格线上,即至少有一个坐标为整数,分一个转弯点和两个转弯点两种情况。因为整数最优点是最接近理想最优点的整数点,我们可以先算出只有两个转弯点时且转弯点在网格点的费用,计算得出最优转弯点为(4,7)和(7,4)时,建设费用最小,为14.6241百万元。在此基础上将循环语句中的步长1修改为0.01,运行结果说明,一个转弯点的最优选择是(6,4.57),费用
21、为14.6989百万元;两个转弯点的最优选择是(3.62,7)和(7,3.62),费用为14.6201百万元。因而选择两个转弯点更优。对于问题4,坐标点可以为区间0,9中的任意实数值,我们在问题三解法的基础上对最优点的两个坐标均用步长 0.01循环,得出最优转弯点为(3.58,7.32)和(7.32,3.58),此时最小费用为14.54百万元。可见较问题3的答案更优。对于问题5,每个点的单位建设费用都不同,且单位建设费用是连续函数。我们用曲线积分方法建立总费用模型,求出变下限积分函数的最小值,得出最优点为(5.30,5.30),最优建设费用为14.707百万元,与问题1相同。最后,我们针对问题
22、的实际情况,对论文的优缺点做了评价,提出了几个改进方向,以便用于指导实际应用。关键词: 函数化建模 编程 枚举法 最优方案 曲线积分法一、问题重述某区政府计划在下列区域(见图1)修建一条从A(0,9)到B(9,0)的直线型公路,由于涉及路面拆迁等因素,各地段建设费用有所不同,图1中的数字代表该区域公路单位建设费用(单位:百万元)。未标数字的任何地方单位建设费用均为1。图1的每个网格长与宽都是1个单位。每个网格的边界上建设费用按该地区最小单位费用计算。 请你按建设部门的如下具体要求,从建设费用最省的角度,给出最优的方案。(1)公路至多只能有1个转弯点,且转弯点只能建在图1所示的网格点上。(3)公
23、路至多只能有2个转弯点,且转弯点只能建在图1所示的网格线上。(4)公路至多只能有2个转弯点,转弯点可以建在图1所示区域的任何位置。(5)如果各区域的单位建设费用为 (百万元),公路至多只能有1个转弯点,转弯点可以建在图1所示区域的任何位置。 图1二、问题分析针对问题一:需要求出当公路至多只能有1个转弯点且转弯点只能建在图1所示的网格点上时所需的费用最省的目标值。首先,我们计算出没有转弯点时花费为14.9907百万元。对于有一个转弯点的,我们利用函数化建模思想将W与 、 的关系用数学方程式表达出来,接着利用 编程将函数关系式进行运算,使用枚举法得出所有可能的转弯点的值,最后通过查找语句找出所得数
24、据中的最小值,在与没有转弯点的花费比较,较小的即为可用的最优方案。针对问题三:需要求出当公路至多只能有2个转弯点且转弯点只能建在图1所示的网格线上时所需的费用最省的目标值,坐标点至少有一个为小数,在只有两个转弯点时且转弯点在网格点的基础上设定x或y其一必为小数,即步长改为0.01,和只有两个转弯点时且转弯点在网格点类似。针对问题四:需要求出当公路至多只能有2个转弯点但转弯点可以建在图1所示区域的任何位置时所需的费用最省的目标值。此时,坐标点为0-9之间的任意实数,有两种情况:一种为有一个转弯点,另一种为有两个转弯点。在问题一与只有两个转弯点时且转弯点在网格点的基础上,针对第一种情况,只需将第一
25、问的程序中的步长改为0.01;针对第二种情况,只需将只有两个转弯点时且转弯点在网格点程序中的步长改为0.01,通过比较两种情况下的值,可得出最优方案。针对问题五:如果各区域的单位建设费用为 (百万元),公路至多只能有1个转弯点,转弯点可以建在图1所示区域的任何位置。因为每个点的单位建设费用不同,但又是连续变化的,故我们可以利用微积分法思想,假设在极小的一段路程内建设费用是相同的,由此建立一个积分方程,通过 编码找出花费最小值,从而得出最优方案。三、模型的假设1、区域内所有位置的路面状况均相同2、不考虑软件计算带来的极小误差3、不考虑转弯点的设置对公路建设费用的影响4、在区域内设置转弯点不受地形
26、条件的限制四、符号说明(1) :单转弯点的坐标;(2) :双转弯点中靠近A点的坐标;(3) :双转弯点中靠近B点的坐标;(4) :总建设费用;(5) :单位区域的公路长度;(6) :第 条路段单位建设费用;(7) :第 条路段费用; (8) :第 条路段与网格线交点的横坐标矩阵;(9) :第 条路段与网格线交点的纵坐标矩阵; 五、模型的建立与求解5.1 至多只能有1个转弯点且转弯点只能建在网格点上。5.1.1建立模型(1)没有转弯点时:W= (百万元)(2)有一个转弯点时:利用函数化思想,建立 与 、 的函数关系:第1步:在网格点上任取一点 (图1),根据直线两点式方程: ,可得直线 的方程为
27、 图1 第2步:由直线方程可求得AP与x=i(i=0、1、2 )和y=j(j=yp8、9)的所有交点,并按x从小到大的排序, ( , )(i=1,2,3,4)取( , )和( , )则可以根据它们的中点得到这两点的路段需要的加权权重,即: 因此对于 有 ,累加可得AP段公路的费用。PB段公路的费用同理可得。故此总费用的表达式为:5.1.2 软件求解根据枚举法,利用Matlab软件求解(程序见chengxuyi),流程图如图2: 图2 求解 的流程图从 程序运行结果可以看出,使得W最小的点的坐标为(5,6)和(6,5) ,此时, =14.707百万元。因为14.7074,可缩短程序运行的时间。利用Matlab软件编程,以0.01为步长,解出W在区间4,8.99上的