数模实验报告.docx
- 文档编号:27865698
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:18
- 大小:137KB
数模实验报告.docx
《数模实验报告.docx》由会员分享,可在线阅读,更多相关《数模实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
数模实验报告
数学建模与实验
实验报告
*******
院系:
仪器科学与工程学院
学号:
********
******
数学建模与实验实验报告
实验一
实验题目
(1)已知某平原地区的一条公路经过如下坐标所示的点,请采用样条插值绘出这条公路(不考虑公路的宽度)。
X/米
0
30
50
70
80
90
120
148
170
180
Y/米
80
64
47
42
48
66
80
120
121
138
X/米
202
212
230
248
268
271
280
290
300
312
Y/米
160
182
200
208
212
210
200
196
188
186
X/米
320
340
360
372
382
390
416
430
478
440
Y/米
200
184
188
200
202
240
246
280
296
308
X/米
420
380
360
340
320
314
280
240
200
/
Y/米
334
328
334
346
356
360
392
390
400
/
(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,360,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,188,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];
holdon
xy=440:
-1:
200;
yx=spline(x,y,xy);
plot(x,y,'p',xy,yx,'g');
运行上述代码得到结果如下:
上图为所绘公路图
(2)代码如下:
X=[03050708090120148170180202212230248268271280290300312320340360372382390416430478440420380360340320314280240200];
Y=[80644742486680120121138160182200208212210200196188186200184188200202240246280296308334328334346356360392390400];
fork=1:
length(X)-1
len(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,问他们最早何时能离开公司?
秘书初试
主管复试
经理面试
同学甲
13
15
20
同学乙
10
20
18
同学丙
20
16
10
同学丁
8
10
15
模型分析与建立
方法一:
假设:
同学甲、乙、丙、丁用i表示(i=1,2,3,4),秘书初试、主管复试和经理面试用j表示(j=1,2,3); 表示同学i的面试j时间,表示同学i到开始面试j之前所用时间.
优化目标:
MinT=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 xkj+tkj-xij<=T(1-yik) (i,k=1,2,3,4;j=1,2,3;i 将目标函数改写为: MinT s.t. T>=x13+t13 T>=x23+t23 T>=x33+t33 T>=x43+t43 加上约束条件1),2),用LINGO求解得到: 结果如上图可知最短时间为84min。 Localoptimalsolutionfound. Objectivevalue: 84.00000 Objectivebound: 84.00000 Infeasibilities: 0.1421085E-13 Extendedsolversteps: 55 Totalsolveriterations: 3871 VariableValueReducedCost T84.000000.000000 X1336.000000.000000 T1320.000000.000000 X2356.000000.000000 T2318.000000.000000 X3374.000000.000000 T3310.000000.000000 X4321.000000.000000 T4315.000000.000000 T1113.000000.000000 T1215.000000.000000 T2110.000000.000000 T2220.000000.000000 T3120.000000.000000 T3216.000000.000000 T418.0000000.000000 T4210.000000.000000 X118.0000000.000000 X1221.000000.000000 X2121.000000.000000 X2236.000000.000000 X3131.000000.000000 X3256.000000.000000 X410.0000000.9999970 X4211.000000.000000 Y120.000000-83.99950 Y130.0000000.000000 Y141.00000083.99950 Y230.000000-83.99950 Y241.0000000.000000 Y341.0000000.000000 RowSlackorSurplusDualPrice 184.00000-1.000000 228.000000.000000 310.000000.000000 40.000000-0.9999970 548.000000.000000 60.000000-0.9999970 70.000000-0.9999970 80.0000000.000000 90.0000000.000000 100.000000-0.9999970 110.000000-0.9999970 120.0000000.000000 130.0000000.000000 140.000000-0.9999970 150.000000-0.9999970 160.0000000.000000 170.0000000.000000 180.0000000.9999970 190.0000000.000000 205.0000000.000000 210.0000000.9999970 225.0000000.000000 232.0000000.000000 243.0000000.000000 250.0000000.000000 260.0000000.000000 2710.000000.000000 2863.000000.000000 290.0000000.9999970 3020.000000.000000 3159.000000.000000 320.0000000.000000 3318.000000.000000 3449.000000.000000 350.0000000.000000 360.0000000.000000 370.0000000.9999970 3853.000000.000000 3939.000000.000000 4031.000000.000000 4133.000000.000000 4223.000000.000000 4321.000000.000000 4461.000000.000000 4541.000000.000000 460.0000000.9999970 4749.000000.000000 4833.000000.000000 490.0000000.000000 5046.000000.000000 5136.000000.000000 520.0000000.000000 5354.000000.000000 5448.000000.000000 5556.000000.000000 5613.000000.000000 5715.000000.000000 5820.000000.000000 5923.000000.000000 6035.000000.000000 6138.000000.000000 根据y12=0,y13=0,y14=1,y23=0,y24=1,y34=1,可知面试顺序为4-1-2-3,即: 丁-甲-乙-丙。 方法二: 实际上,这个问题就是要安排4名同学的面试顺序,是完成全部面试所花费的时间最少。 时间构成原始时间矩阵: A(ij)=a11a12a13 a21a22a23 a31a32a33 a41a42a43 A(ij)=131520 102018 201610 81015 优化目标: MinT=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 x(k,j)+t(k,j)-x(i,j)<=200*(1-y(i,k));i,k=1,2,3,4;i 将非线性的优化目标改写成线性的优化目标: MinTs.tT>=x(i3)+t(i3),i=1,2,3,4 根据建立的模型,编写出lingo程序代码,通过lingo软件运行结果如下: 由上图可知,最短时间为84min。 Globaloptimalsolutionfound. Objectivevalue: 84.00000 Objectivebound: 84.00000 Infeasibilities: 0.1532108E-13 Extendedsolversteps: 8 Totalsolveriterations: 598 VariableValueReducedCost NS4.0000000.000000 NP3.0000000.000000 TMAX84.000000.000000 T(S1,P1)13.000000.000000 T(S1,P2)15.000000.000000 T(S1,P3)20.000000.000000 T(S2,P1)10.000000.000000 T(S2,P2)20.000000.000000 T(S2,P3)18.000000.000000 T(S3,P1)20.000000.000000 T(S3,P2)16.000000.000000 T(S3,P3)10.000000.000000 T(S4,P1)8.0000000.000000 T(S4,P2)10.000000.000000 T(S4,P3)15.000000.000000 X(S1,P1)8.0000000.000000 X(S1,P2)21.000000.000000 X(S1,P3)36.000000.000000 X(S2,P1)26.000000.000000 X(S2,P2)36.000000.000000 X(S2,P3)56.000000.000000 X(S3,P1)36.000000.000000 X(S3,P2)56.000000.000000 X(S3,P3)74.000000.000000 X(S4,P1)0.0000001.000000 X(S4,P2)8.0000000.000000 X(S4,P3)21.000000.000000 Y(S1,S2)0.000000-200.0000 Y(S1,S3)0.0000000.000000 Y(S1,S4)1.000000200.0000 Y(S2,S3)0.000000-200.0000 Y(S2,S4)1.0000000.000000 Y(S3,S4)1.0000000.000000 RowSlackorSurplusDualPrice 10.0000000.000000 20.0000000.000000 35.0000000.000000 4172.00000.000000 50.0000001.000000 6165.00000.000000 70.0000000.000000 8162.00000.000000 915.000000.000000 10152.00000.000000 1120.000000.000000 12149.00000.000000 1318.000000.000000 14152.00000.000000 15179.00000.000000 160.0000001.000000 17172.00000.000000 183.0000000.000000 19165.00000.000000 200.0000000.000000 210.0000000.000000 22170.00000.000000 230.0000000.000000 24164.00000.000000 250.0000001.000000 26172.00000.000000 27164.00000.000000 2818.000000.000000 29152.00000.000000 3018.000000.000000 31147.00000.000000 3220.000000.000000 33144.00000.000000 3428.000000.000000 35136.00000.000000 3638.000000.000000 37137.00000.000000 3838.000000.000000 3984.00000-1.000000 4028.000000.000000 4110.000000.000000 420.0000001.000000 4348.000000.000000 440.0000001.000000 450.0000000.000000 460.0000000.000000 470.0000001.000000 480.0000000.000000 492.0000000.000000 500.0000000.000000 513.0000000.000000 由变量Y(S1,S2)的最优解值0.000000,知student1排在student2之前,即同学甲排在同学乙之前。 由变量Y(S1,S3)的最优解值为0.000000,知student1排在student3之前,即同学甲排在同学丙之前。 由变量Y(S1,S4)的最优解值为1.000000,知student4排在student1之前,即同学丁排在同学甲之前。 由变量Y(S2,S3)的最优解值为0.000000,知student2排在student3之前,即同学乙排在同学丙之前。 由变量Y(S2,S4)的最优解值为1.000000,知student4排在student2之前,即同学丁排在同学乙之前。 由变量Y(S3,S4)的最优解值为1.000000,知student4排在student3之前,即同学丁排在同学丙之前。 所以面试顺序为丁甲乙丙。 程序代码 方法一: model: min=T; T>=x13+t13; T>=x23+t23; T>=x33+t33; T>=x43+t43; t11=13;t12=15;t13=20; t21=10;t22=20;t23=18; t31=20;t32=16;t33=10; t41=8;t42=10;t43=15; x11+t11<=x12;x12+t12<=x13; x21+t21<=x22;x22+t22<=x23; x31+t31<=x32;x32+t32<=x33; x41+t41<=x42;x42+t42<=x43; x11+t11-x21<=T*y12;x11+t11-x31<=T*y13;x11+t11-x41<=T*y14; x12+t12-x22<=T*y12;x12+t12-x32<=T*y13;x12+t12-x42<=T*y14; x13+t13-x23<=T*y12;x13+t13-x33<=T*y13;x13+t13-x43<=T*y14; x21+t21-x31<=T*y23;x22+t22-x32<=T*y23;x23+t23-x33<=T*y23; x21+t21-x41<=T*y24;x22+t22-x42<=T*y24;x23+t23-x43<=T*y24; x31+t31-x41<=T*y34;x32+t32-x42<=T*y34;x33+t33-x43<=T*y34; x21+t21-x11<=T*(1-y12);x31+t31-x11<=T*(1-y13);x41+t41-x11<=T*(1-y14); x22+t22-x12<=T*(1-y12);x32+t32-x12<=T*(1-y13);x42+t42-x12<=T*(1-y14); x23+t23-x13<=T*(1-y12);x33+t33-x13<=T*(1-y13);x43+t43-x13<=T*(1-y14); x31+t31-x21<=T*(1-y23);x32+t32-x22<=T*(1-y23);x33+t33-x23<=T*(1-y23); x41+t41-x21<=T*(1-y24);x42+t42-x22<=T*(1-y24);x43+t43-x23<=T*(1-y24); x41+t41-x31<=T*(1-y34);x42+t42-x32<=T*(1-y34);x43+t43-x33<=T*(1-y34); @bin(y12);@bin(y13);@bin(y14);@bin(y23);@bin(y24);@bin(y34); end 方法二: model: sets: students;! 学生集三阶段面试模型; phases;! 阶段集; sp(students,phases): t,x; ss(students,students)|&1#LT#&2: y; endsets data: students=s1..s4; phases=p1..p3; t=131520,102018,201610,81015; enddata ns=@size(students);! 学生数; np=@size(phases);! 阶段数; ! 单个学生面试时间先后次序的约束; @for(sp(i,j)|j#LT#np: x(i,j)+t(i,j)<=x(i,j+1)); ! 学生间的面试先后次序保持不变的约束; @for(ss(i,k): @for(phases(j): x(i,j)+t(i,j)-x(k,j)<=200*y(i,k); x(k,j)+t(k,j)-x(i,j)<=200*(1-y(i,k)))); ! 目标函数; min=TMAX; @for(students(i): x(i,3)+t(i,3)<=TMAX); ! 把y定义0-1变量;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数模 实验 报告