数模实验报告.docx

上传人:b****5 文档编号:27865698 上传时间:2023-07-05 格式:DOCX 页数:18 大小:137KB
下载 相关 举报
数模实验报告.docx_第1页
第1页 / 共18页
数模实验报告.docx_第2页
第2页 / 共18页
数模实验报告.docx_第3页
第3页 / 共18页
数模实验报告.docx_第4页
第4页 / 共18页
数模实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数模实验报告.docx

《数模实验报告.docx》由会员分享,可在线阅读,更多相关《数模实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

数模实验报告.docx

数模实验报告

 

数学建模与实验

实验报告

 

*******

院系:

仪器科学与工程学院

学号:

********

******

 

数学建模与实验实验报告

实验一

实验题目

(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模板 > 艺术创意

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1