数学建模与实验实验报告姓名:***院系:仪器科学与工程学院学号:********老师:***数学建模与实验实验报告实验一实验题目(1)已知某平原地区的一条公路经过如下坐标所示的点,请采用样条插值绘出这条公路(不考虑(2)对于上表给出的数据,估计公路长度。
实验过程(1)第一问代码如下:X=[0,30,50,70,80,90,120,148,170,180,202,212,230,248,268,271,280,290,300,312,320,340,3 60,372,382,390,416,430,478];Y=[80,64,47,42,48,66,80,120,121,138,160,182,200,208,212,210,200,196,188,186,200,184,1 88,200,202,240,246,280,296];%给出坐标点xx=0:1:478;%选取0~478内的点yy=spline(X,Y,xx);%样条插值法找出曲线plot(X,Y, 'p ',xx,yy, 'g ');%绘出曲线图x=[440,420,380,360,340,320,314,280,240,200];y=[308,334,328,334,346,356,360,392,390,400];hold onxy=440:-1:200;yx=spline(x,y,xy);plot(x,y, 'p ',xy,yx, 'g ');运行上述代码得到结果如下:上图为所绘公路图(2)代码如下:X=[0 30 50 70 80 90 120 148 170 180 202 212 230 248 268 271 280 290 300 312 320 340 360 372 382 390 416 430 478 440 420 380 360 340 320 314 280 240 200];Y=[80 64 47 42 48 66 80 120 121 138 160 182 200 208 212 210 200 196 188 186 200 184 188 200 202 240 246 280 296 308 334 328 334 346 356 360 392 390 400];for k=1:length(X)-1len(k)=sqrt((X(k+1)-X(k))^2+(Y(k+1)-Y(k))^2);end;Len=sum(len);Len运行得到结果如下:即公路长为967.46米。
实验二实验题目二、面试排序问题有4名同学到一家公司参加三个阶段的面试:公司要求每个同学都必须首先找公司秘书初试,然后到部门主管处复试,最后到经理处参加面试,并且不允许插队(即在任何一个阶段4名同学的顺序是一样的)。
由于4名同学的专业背景不同,所以每人在三个阶段的面试时间也不同,如下表所示(单位:分钟)。
这4名同学约定他们全部面试完以后一起离开公司。
假定现在时间是早晨8:00,问他们最早何时能离开公司?模型分析与建立方法一:假设:同学甲、乙、丙、丁用i表示(i=1,2,3,4),秘书初试、主管复试和经理面试用j表示(j=1,2,3); 表示同学i的面试j时间, 表示同学i到开始面试j之前所用时间.优化目标:Min T=Max{ xi3+ti3 }约束条件:1)时间先后次序约束(每人只有参加完前一个阶段的面试后才能进入下一个阶段):xij+tij<=xi,j+1(i=1,2,3,4;j=1,2)2)每个阶段j同一时间只能面试1名同学:用0-1变量表示第k名同学是否排在第i名同学前面(1表示是,0表示否),则xij+tij-xkj<=Tyik (i,k=1,2,3,4;j=1,2,3;i<k)xkj+tkj-xij<=T(1-yik) (i,k=1,2,3,4;j=1,2,3;i<k)将目标函数改写为:Min Ts.t.T>=x13+t13T>=x23+t23T>=x33+t33T>=x43+t43加上约束条件1),2),用LINGO求解得到:结果如上图可知最短时间为84min。
Local optimal solution found.Objective value: 84.00000Objective bound: 84.00000Infeasibilities: 0.1421085E-13Extended solver steps: 55Total solver iterations: 3871Variable Value Reduced Cost T 84.00000 0.000000 X13 36.00000 0.000000 T13 20.00000 0.000000 X23 56.00000 0.000000 T23 18.00000 0.000000 X33 74.00000 0.000000 T33 10.00000 0.000000 X43 21.00000 0.000000 T43 15.00000 0.000000 T11 13.00000 0.000000 T12 15.00000 0.000000 T21 10.00000 0.000000 T22 20.00000 0.000000 T31 20.00000 0.000000 T32 16.00000 0.000000 T41 8.000000 0.000000X21 21.00000 0.000000 X22 36.00000 0.000000 X31 31.00000 0.000000 X32 56.00000 0.000000 X41 0.000000 0.9999970 X42 11.00000 0.000000 Y12 0.000000 -83.99950 Y13 0.000000 0.000000 Y14 1.000000 83.99950 Y23 0.000000 -83.99950 Y24 1.000000 0.000000 Y34 1.000000 0.000000Row Slack or Surplus Dual Price1 84.00000 -1.0000002 28.00000 0.0000003 10.00000 0.0000004 0.000000 -0.99999705 48.00000 0.0000006 0.000000 -0.99999707 0.000000 -0.99999708 0.000000 0.0000009 0.000000 0.00000010 0.000000 -0.999997011 0.000000 -0.999997012 0.000000 0.00000013 0.000000 0.00000014 0.000000 -0.999997015 0.000000 -0.999997016 0.000000 0.00000017 0.000000 0.00000018 0.000000 0.999997019 0.000000 0.00000020 5.000000 0.00000021 0.000000 0.999997022 5.000000 0.00000023 2.000000 0.00000024 3.000000 0.00000025 0.000000 0.00000026 0.000000 0.00000027 10.00000 0.00000028 63.00000 0.00000029 0.000000 0.999997030 20.00000 0.00000034 49.00000 0.00000035 0.000000 0.00000036 0.000000 0.00000037 0.000000 0.999997038 53.00000 0.00000039 39.00000 0.00000040 31.00000 0.00000041 33.00000 0.00000042 23.00000 0.00000043 21.00000 0.00000044 61.00000 0.00000045 41.00000 0.00000046 0.000000 0.999997047 49.00000 0.00000048 33.00000 0.00000049 0.000000 0.00000050 46.00000 0.00000051 36.00000 0.00000052 0.000000 0.00000053 54.00000 0.00000054 48.00000 0.00000055 56.00000 0.00000056 13.00000 0.00000057 15.00000 0.00000058 20.00000 0.00000059 23.00000 0.00000060 35.00000 0.00000061 38.00000 0.000000根据y12=0,y13=0,y14=1,y23=0,y24=1,y34=1,可知面试顺序为4-1-2-3,即:丁-甲-乙-丙。
方法二:实际上,这个问题就是要安排4名同学的面试顺序,是完成全部面试所花费的时间最少。
时间构成原始时间矩阵:A(ij)= a11 a12 a13a21 a22 a23a31 a32 a33a41 a42 a43A(ij)=13 15 2010 20 1820 16 108 10 15Min T=max(x(i3)+t(j3))约束条件:x(i,j)+t(i,j)<=x(i,j+i);i=1,2,3,4;j=1,2(每个同学只能参加完前一阶段才能进入下一阶段的面试)每阶段j同一时间只能面试i名同学;0-1变量y(i,k)表示第k名同学是否排在第i名同学前面(1表示“是”,0表示“否”)x(i,j)+t(i,j)-x(k,j)<=200*y(i,k); i,k=1,2,3,4;i<k,j=1,2,3x(k,j)+t(k,j)-x(i,j)<=200*(1-y(i,k)); i,k=1,2,3,4;i<k,j=1,2,3将非线性的优化目标改写成线性的优化目标:Min T s.t T>=x(i3)+t(i3),i=1,2,3,4根据建立的模型,编写出lingo程序代码,通过lingo软件运行结果如下:由上图可知,最短时间为84min。
Global optimal solution found.Objective value: 84.00000Objective bound: 84.00000Infeasibilities: 0.1532108E-13Extended solver steps: 8Total solver iterations: 598Variable Value Reduced CostNS 4.000000 0.000000NP 3.000000 0.000000TMAX 84.00000 0.000000T( S1, P1) 13.00000 0.000000T( S1, P2) 15.00000 0.000000T( S2, P3) 18.00000 0.000000 T( S3, P1) 20.00000 0.000000 T( S3, P2) 16.00000 0.000000 T( S3, P3) 10.00000 0.000000 T( S4, P1) 8.000000 0.000000 T( S4, P2) 10.00000 0.000000 T( S4, P3) 15.00000 0.000000 X( S1, P1) 8.000000 0.000000 X( S1, P2) 21.00000 0.000000 X( S1, P3) 36.00000 0.000000 X( S2, P1) 26.00000 0.000000 X( S2, P2) 36.00000 0.000000 X( S2, P3) 56.00000 0.000000 X( S3, P1) 36.00000 0.000000 X( S3, P2) 56.00000 0.000000 X( S3, P3) 74.00000 0.000000 X( S4, P1) 0.000000 1.000000 X( S4, P2) 8.000000 0.000000 X( S4, P3) 21.00000 0.000000 Y( S1, S2) 0.000000 -200.0000 Y( S1, S3) 0.000000 0.000000 Y( S1, S4) 1.000000 200.0000 Y( S2, S3) 0.000000 -200.0000 Y( S2, S4) 1.000000 0.000000 Y( S3, S4) 1.000000 0.000000Row Slack or Surplus Dual Price1 0.000000 0.0000002 0.000000 0.0000003 5.000000 0.0000004 172.0000 0.0000005 0.000000 1.0000006 165.0000 0.0000007 0.000000 0.0000008 162.0000 0.0000009 15.00000 0.00000010 152.0000 0.00000011 20.00000 0.00000012 149.0000 0.00000013 18.00000 0.00000014 152.0000 0.00000015 179.0000 0.00000016 0.000000 1.00000017 172.0000 0.00000021 0.000000 0.00000022 170.0000 0.00000023 0.000000 0.00000024 164.0000 0.00000025 0.000000 1.00000026 172.0000 0.00000027 164.0000 0.00000028 18.00000 0.00000029 152.0000 0.00000030 18.00000 0.00000031 147.0000 0.00000032 20.00000 0.00000033 144.0000 0.00000034 28.00000 0.00000035 136.0000 0.00000036 38.00000 0.00000037 137.0000 0.00000038 38.00000 0.00000039 84.00000 -1.00000040 28.00000 0.00000041 10.00000 0.00000042 0.000000 1.00000043 48.00000 0.00000044 0.000000 1.00000045 0.000000 0.00000046 0.000000 0.00000047 0.000000 1.00000048 0.000000 0.00000049 2.000000 0.00000050 0.000000 0.00000051 3.000000 0.000000由变量Y(S1,S2)的最优解值 0.000000,知student1排在student2之前,即同学甲排在同学乙之前。