数学建模实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学建模实验报告

班级:信息81

学号:07052023

姓名:杨帆

实验一:

实验题目:

有3名商人各带一个仆人乘船渡河,小船只能容纳两个人,由他们自己划船。仆人们约定,在河的一岸,一旦仆人的人数比商人多,就杀人越货。但是如何乘船的大权掌握在商人们手里。问商人们怎样才能安全渡河?

实验过程:

问题分析:

这是是一个多步决策问题。每一步,即船由此岸驶向彼岸或从彼岸回到此岸,都要对船上的商人和仆人的个数作出决策。在保证安全的前提下,在有限步内使全部人员过河。采用状态变量表示某一岸的人员状况,决策变量表示船上人员状况。可以找出状态随决策变化的规律,问题转化为在状态允许范围内(安全渡河的条件),确定每一步的决策,达到安全渡河的条件

1.建立数学模型:

1)允许状态集合S:安全渡河条件下的状态集合为允许的状态集合,记作S,依次用二维向量表示商人仆人的状态,设第k次渡河前左岸的商人数为x k,仆人数为y k,k=1,2,…,则状态变量为(x k,y k),其中x k,y k取值为0,1,2,3。容易知道该集合为

S={(0,0),(0,1),(0,2),(0,3),(3,0),(3,1),(3,2),(1,1),(2,2),(3,3)} ——(1.1) S共10种状态。每种安全状态既要满足左岸安全,同时右岸也要安全。

2)允许决策集(划船方式)D

记第k次渡河船上的商人数为u k,仆人数为v k,则决策变量为d k=(u k,v k)。允许的决策集合记为D,由船的容量可知D的集合为D={(2,0),(0,2),(1,1),(1,0),(0,1)} ——(1.2)

每次有5种决策可供选择。由于k为奇数时船从左岸到右岸,k为偶数时船从右岸到左岸,因此状态s k随决策d k而变化的规律为

S0=(3,3)

S k=s k-1+(-1)k d k,k=1,2,3…——(1.3)

式(1.3)称为状态转移规律。则制定安全的渡河方案问题转化为:由初始状态(3,3)出发,经奇数次上述运算转化为状态(0,0)的过程。并且步数n要求尽量小。

2.具体实验过程:

模型求解:采用三维向量(x,y,z)来表示状态量。X表示左岸商人数(x=0,1,2,3),y表示左岸仆人数(y=0,1,2,3),z表示船在左岸还是右岸(z=1表示船在左岸,z=0表示船在右岸)。则总共有20个状态,可以建立20个顶点的图。利用穷举法意欲在计算机上求解,如果计算过程中出现循环,则说明无解。

用状态向量表示(只表示左岸状态)如下:

(3,3) (3,1) (3,2) (3,0) (3,1) (1,1) (2,2) (0,2) (0,3) (0,1) (0,2) (0,0)

或者为

(3,3) (2,2) (3,2) (3,0) (3,1) (1,1) (2,2) (0,2) (0,3) (0,1) (0,2) (0,0)

共有两种步数最少的渡河方法。

标号船在左岸船在右岸标号

1 (3,3,1) (3,3,0) 11

2 (3,2,1) (3,2,0) 12

3 (3,1,1) 13

4 (3,0,1) (3,0,0) 14

5 (2,2,1) 15

6 (1,1,1) (1,1,0) 16

7 (0,3,1) (0,3,0) 17

8 (0,2,1) 18

9 (0,1,1) (0,1,0) 19

10 (0,0,1) (0,0,0) 20

图2状态转移图

图3

编写matlab程序如下:

a=[0,0;0,1;0,2;0,3;3,0;3,1;3,2;3,3;1,1;2,2];

d=[0,2;2,0;1,1;0,1;1,0];

s1=[3,3];

s2=[3,3];

ld=0;%上次决策

posable=1;

k=1;

clc;

while sum(s2)~=0

if posable==1

disp(s2);

end

s1=s2;

posable=0;

ind=0;

for m=1:5

if ind==1

break;

else

%p=(-1)^k;

%k为偶数时候的决策不应该和上次的一样,否则会形成死循环 if mod(k,2)==0

if ld==m

dd=mod(ld,5)+1;

s2=s1+d(dd,:);

dm=dd;%本次采用第dm个决策

else

s2=s1+d(m,:);

dm=m;%本次采用第dm个决策

end

else

s2=s1-d(m,:);

dm=m;%本次采用第dm个决策

end % end if mod(k,2)==0

end %end if ind==1

for n=1:10

if (s2(1,1)==a(n,1)) & (s2(1,2)==a(n,2))

ld=dm;%本次采用的第dm个决策是个可行决策

s=strcat('第',num2str(k));

s=strcat(s,'次采用的可行决策:');

s=strcat(s,num2str(d(ld,:)));

disp(s);

k=k+1;%决策次数

ind=1;%指示跳出for m=1:5循环

posable=1;%s2 属于a

break;

end %end if s(k+1,1)==a(n,1) & s(k+1,2)==a(n,2)

end %end for n=1:10

end %end for m=1:5

end %end while sum(s(k,:))~=0

disp(s2);

实验二:

实验题目:草原鼠患问题

在我国的内蒙古大草原,由于各种人为因素对自然生态系统的破坏(如过度放牧、大量消灭草原上的狼群等),造成草原鼠患问题严重,并由此引发了严重的生态问题。

老鼠在草原上是家族式掘洞群居。它们食量巨大,每年都得在洞内外囤积大量牧草。以一个大沙鼠的洞为例,里面经常囤草25—40公斤之多。而且,老鼠的繁殖力强,在自然界堪称独一无二。老鼠对草原危害最大的莫过于它们挖掘洞穴的习性。由于挖掘造成的环境损失远远大于单纯的食草所造成的危害。所有鼠害发生的地方,洞道纵横,水土流失严重。有的甚至形成了大面积寸草不生的“鼠荒地”。

更糟糕的是至今我们尚未找到能有效控制进而消灭草原老鼠的

相关文档
最新文档