《数学模型实验》实验报告
姓名:王佳蕾学院:数学与信息科
学学院
地点:主楼402
学号:055专业:数学类时间:2017年4 月16日
实验名称:
商人和仆人安全渡河问题的matlab实现
实验目的:
1.熟悉matlab基础知识,初步了解matlab程序设计;
2.研究多步决策过程的程序设计方法;
3.(允许)状态集合、(允许)决策集合以及状态转移公式的matlab表示;实验任务:
只有一艘船,三个商人三个仆人过河,每一次船仅且能坐1-2个人,而且任何一边河岸上仆人比商人多的时候,仆人会杀人越货。
怎么在保证商人安全的情况下,六个人都到河对岸去,建模并matlab实现。
要求:代码运行流畅,结果正确,为关键语句加详细注释。
实验步骤:
1.模型构成
2.求决策
3.设计程序
4.得出结论(最佳解决方案)
实验内容:
(一)构造模型并求决策
设第k次渡河前此岸的商人数为xk,随从数为yk,k=1,2,...,xk,yk=0,1,2,3.将二维向量sk=(xk,yk)定义为状态,安全渡河条件下的状态集合称为允许状态集合,记作S,S 对此岸和彼岸都是安全的。
S={(x,y)|x=0,y=0,1,2,3;x=3,y=0,1,2,3;x=y=1,2}
设第k次渡船上的商人数为uk,随从数vk,将二维变量dk=(uk,vk)定义为决策,允许决策集合记为D,由小船的容量可知,
D={(u,v)|1<=u+v<=2,u,v=0,1,2}
k为奇数时,船从此岸驶向彼岸,k为偶数时,船从彼岸驶向此岸,状态sk随决策变量dk的变化规律为sk+1=sk+(-1)^k*dk(状态转移律)
这样制定安全渡河方案归结为如下的多步决策模型:
求决策dk∈D(k=1,2,...,n),使状态sk∈S,按照转移律,由初始状态s1=(3,3)经有限步n到达状态sn+1=(0,0)。
(二)程序设计
(三)运行结果
、
结论体会:
安全渡河问题可以看成一个多步决策过程。
每一步,即船由此岸驶向彼岸或从彼岸驶回此岸,都要对船上的人员(商人随从各几人)作出决策,在保证安全的前提下(两岸的商人数都不比随从数少),在有限步内使人员全部过河。
用状态(变量)表示某一岸的人员状况,决策(变量)表示船上的人员状况,可以找出状态随决策变化的规律。
问题转化为在状态的允许变化范围内(即安全渡河条件),确定每一步的决策,达到渡河的目的。