商人安全过河问题a

合集下载

商人过河问题

商人过河问题

商人过河数学建模论文摘要4个商人带着4个仆人过河,过河的工具只有一艘小船,只能同时载两个人过河,包括划船的人。

在河的任何一边,只要仆人的数量超过商人的数量,仆人就会联合起来将商人杀死并抢夺其财物,问应如何设计过河顺序才能让所有人都安全地过到河的另一边。

经典的商人过河问题可以看做一个多步决策过程。

每一步由此岸到彼岸或彼岸到此岸船上的人员在安全的前提下(两岸的随从数不比商人多),经有限步使全体人员过河。

用状态变量表示某一岸的人员状况,决策变量表示船上的人员情况,可以找出状态随决策变化的规律。

问题就转换为在状态的允许变化范围内(即安全渡河条件),确定每一步的决策,达到安全渡河的目标。

分别建立两个模型:模型一采用穷举法,对各种过河的方案一一列举,然后根据商人们要安全过河为前提对各种进行了列举,经过层层筛选,最终求出商人安全的方案。

模型二采用图解法,利用图示表示说明该题的解法。

关键词:穷举法多步决策图解法安全渡河一、问题提出4个商人带着4个仆人过河,过河的工具只有一艘小船,只能同时载两个人过河,包括划船的人。

在河的任何一边,只要仆人的数量超过商人的数量,仆人就会联合起来将商人杀死并抢夺其财物,问应如何设计过河顺序才能让所有安全过河。

二、模型的假设和符号说明⑴模型假设:①过河途中不会出现不可抗力的自然因素②当仆人数大于商人数时,随从们不会改变杀人的计划③船很结实,不会发生任何的意外(2)符号的说明(A,B)表示商人和仆人的个数,A表示商人,B表示仆人三、模型的建立模型一(穷举法):这样如果商人回去,彼岸的商人就比仆人多了,如果仆人过去,此岸的仆人就会比商人多了。

所以无法达到(0,0)这样的最终结果。

1 / 2⑵模型二(图解法):四人过河模型图允许步骤数L是沿方格线移动1格或2格,L为奇数时向左.下方移动,L 为偶数时向右.上方移动,要确定一系列的L,使初始状态(4,4)最终变为(0,0),无论怎样走都必须经过中间点(2,2),然后奇数次到达Y轴,,而无论怎么变化人数都也只能到达此点后不能继续走下去,只能循环走,达不到最终的目标(0,0)。

商人过河问题数学建模

商人过河问题数学建模

做业1、2:之阳早格格创做商人过河一、问题沉述问题一:4个商人戴着4个随从过河,过河的工具惟有一艘小船,只可共时载二部分过河,包罗划船的人.随从们稀约, 正在河的任一岸, 一朝随从的人数比商人多, 便杀人越货.乘船渡河的规划由商人决断.商人们何如才搞仄安过河?问题二:假若小船不妨容3人,请问最多不妨有几名商人各戴一名随从仄安过河.二、问题分解问题不妨瞅搞一个多步计划历程.每一步由此岸到此岸或者此岸到此岸船上的人员正在仄安的前提下(二岸的随从数没有比商人多),经有限步使部分人员过河.用状态变量表示某一岸的人员情景,计划变量表示船上的人员情况,不妨找出状态随计划变更的顺序.问题便变换为正在状态的允许变更范畴内(即仄安渡河条件),决定每一步的计划,达到仄安渡河的目标.三.问题假设1. 过河途中没有会出现没有成抗力的自然果素.2. 当随从人数大于商人数时,随从们没有会改变杀人的计划.3.船的品量很佳,正在多次谦载的情况下也能仄常运做.4. 随从会听从商人的调动.四、模型形成x(k)~第k 次渡河前此岸的商人数 x(k),y(k)=0,1,2,3,4; y(k)~第k 次渡河前此岸的随从数 k=1,2,…..s(k)=[ x(k), y(k)]~历程的状态 S~允许状态集中 S={(x,y)|x=0,y=0,1,2,3,4; x=4,y=0,1,2,3,4;x=y=1,2,3} u(k)~第k 次渡船上的商人数 u(k), v(k)=0,1,2;v(k)~ 第k 次渡船上的随从数 k=1,2…..d(k)=( u(k), v(k))~历程的计划 D~允许计划集中 D={u,v|u+v=1,2,u,v=0,1,2}状态果计划而改变s(k+1)=s(k)+(-1)^k*d(k)~状态变化律供d(k)ÎD(k=1,2,….n),使s(k)ÎS 并按变化律s(k+1)=s(k)+(-1)^k*d(k)由(4,4)到达(0,0)数教模型: k+1kS =S +k k D (-1)(1)'4k k x x += (2)'4k k y y +=(3)k.k x y ≥ (4)''k k x y ≥(5)模型分解:由(2)(3)(5)可得化简得概括(4)可得k k x y =战 {}(,)|0,0,1,2,3,4k k k k k S x y x y ===(6) 还要思量{}'(',')|'0,'0,1,2,3,4k k k k k S x y x y === (7)把(2)(3)戴进(7)可得化简得{}(,)|4,0,1,2,3,4k k k k k S x y x y === (8)概括(6)(7)(8)式可得谦脚条件的情况谦脚下式 {}(,)|0,4,0,1,2,3,4;k k k k k k k S x y x y x y ====(9) 所以咱们知讲谦脚条件的面如上图所示:面移动由{}(,)|4,0,1,2,3,4k k k k k S x y x y === (8)到达{}(,)|0,0,1,2,3,4k k k k k S x y x y ===(6)时,不妨认为完毕渡河.果为移动的格数小于等于2,惟有核心面(2,2)到(6)面战(8)面的距离为2,所以核心面(2,2)成为渡河的闭键面.当咱们移动到(2,2)面时,便无法举止下去.故4个商人,4个随从,船容量为2人时,无法仄安渡河. 对付于问题二,咱们不妨修坐模型为:k+1k S =S +k k D (-1)(10)'k k x x M += (11)'k k y y M += (12)k.k x y ≥(13)''k k x y ≥ (14)u(k), v(k)=0,1,2,3; (15)通过类似于问题一的步调不妨知讲:坐标上的闭键面是(3,3),最多不妨五名商人戴五名随从往日.需要决定五名商人戴五名随从的规划可止再决定六名商人戴六名随从的规划没有成止1、五名商人戴五名随从的情况:(1)最先没有成能有三名商人先过河,二名商人一名随从过河,一名商人二名随从过河(2)三个随从先过河(5,2),回去一个随从(5,3),往日二个随从(5,1)回去一个随从(5,2),再往日三个商人(2,2),回去一个商人一个随从(3,3),再往日三个商人(0,3),回去一个随从(0,4),往日三个随从(0,1),回去一个随从(0,2)再往日二个随从(0,0)综上可知:五名商人戴五名随从,小船不妨载三部分不妨过河2、六名商人戴六名随从的情况:(1)最先没有成能有三名商人先过河,二名商人一名随从过河,一名商人二名随从过河(2)三个随从先过河(6,3),回去一个随从(6,4),往日二个随从(6,2)回去一个随从(6,3),往日三个商人(3,3),此时二岸皆是(3,3),由坐标法分解知,那是最交近末面的临界面,然而是如果回去的时间一定是回去一个商人战一个随从,如果那一步可止,后里便举止没有去综上所述,六个商人戴六个随从,小船载三部分的情况下没有克没有及渡河分离1、2知,当小船最多载三部分的时间,最多五名商人各戴一个随从不妨过河.五、模型的考验取评介由少量人的过河问题推广到了更普遍人的过河问题,使得问题变得明白有顺序.六、参照文件[1]章胤,2014年燕山大教世界大教死数教修模竞赛训练ppt,2014年4月17日。

动态规划第7讲 - 商人过河问题

动态规划第7讲 - 商人过河问题

8.7 动态规划:商人过河问题问题提出三名商人各带一个随从乘船渡河(A岸到B岸)。

现此岸有一小船只能容纳两人,由他们自己划行。

若在河的任一岸随从人数比商人多,他们就可能杀人越货。

不过如何乘船渡河的大权由商人们掌握。

商人们怎样才能安全过河呢?模型建立此问题可视为一个多步决策模型建立决策变量:(a,b)a------船上的商人数b ------船上的随从数a,b的取值范围:{0,1,2}且满足a+b<=2,且均为整数。

允许决策集合:D={(a,b)|a+b=1,2}={(0,1), (0,2), (1,1), (1,0), (2,0)}模型求解这样问题要求由(3,3,1)变到(0,0,0)的一条道路。

根据题意,状态转移时要满足一定的规则:1. Z从1变为0与从0变为1交替进行(船在哪个岸);2. 当Z从1变为0时,即船从A岸到B岸,A岸人数减少1或2个;即(x,y,1)→(u,v,0)时, u≤x, v≤y, u+v=x+y-1 oru+v=x+y-23. 当Z从0变为1时,即船从B岸到A岸,A岸人数增加1或2个;即(x,y,0)→(u,v,1)时, u≥x, v≥y,u+v=x+y+1 oru+v=x+y+24. 不重复已出现过的状态,如(3,3,1)→(3,1,0)→(3,3,1);按照以上规则,求解过程如下从(3,2,0)只能到达(3,3,1)/*不必考虑*/从(3,3,1)出发(3,2,0)(3,1,0)如右图(2,2,0)(3,3,1)(3,2,0)(3,1,0)(2,2,0)从(3,1,0)出发(3,3,1) /*不必考虑*/(3,2,1)/*可取*/从(2,2,0)出发(3,3,1) /*不必考虑*/(3,2,1)/*可取*/模型求解如下图所示:逐步求解,可得:模型求解由此可得到渡河策略:(3,3,1) (3,2,1)→(3,0,0)→(3,1,1)→(1,1,0)→(2,2,1)→(0,2,0)→(0,3,1)→(0,1,0) (0,0,0)(2,2,0)(3,1,0)(1,1,1)(0,2,1)模型求解思考(1) 夫妻过河问题有三对夫妻要过河,船最多可载两人。

商人过河模型问题的求解

商人过河模型问题的求解

《数学建模实验》课程考试试题----商人安全过河数学建模与求解一.问题提出:4名商人带4名随从乘一条小船过河,小船每次自能承载至多两人。

随从们密约, 在河的任一岸, 一旦随从的人数比商人多, 就杀人越货.乘船渡河的方案由商人决定,商人们如何才能安全渡河呢二.模型假设:商人和随从都会划船,天气很好,无大风大浪,且船的质量很好,可以保证很多次安全的运载商人和随从。

三.问题分析:商随过河问题可以视为一个多步决策过程,通过多次优化,最后获取一个全局最优的决策方案。

对于每一步,即船由此岸驶向彼岸或由彼岸驶向此岸,都要对船上的人员作出决策,在保证两岸的商人数不少于随从数的前提下,在有限步内使全部人员过河。

用状态变量表示某一岸的人员状况,决策变量表示船上的人员状况,可以找出状态随决策变化的规律,问题转化为在状态的允许变化范围内(即安全渡河条件),确定每一步的决策,达到安全渡河的目标。

四.模型构成:k x ~第k 次渡河前此岸的商人数,k y ~第k 次渡河前此岸的随从数 k x , k y =0,1,2,3,4; k =1,2,… …k S =(k x , k y )~过程的状态,S ~ 允许状态集合,S={(x , y )| x =0, y =0,1,2,3,4; x =4 ,y =0,1,2,3,4; x =y =1,2,3} k u ~第k 次渡船上的商人数k v ~第k 次渡船上的随从数k d =(k u , k v )~决策,D={(u , v )| 21≤+≤v u ,k u , k v =0,1,2} ~允许决策集合 k =1,2,… …因为k 为奇数时船从此岸驶向彼岸,k 为偶数时船从彼岸驶向此岸,所以状态k S 随决策k d 的变化规律是1+k S =k S +k )1(-k d ~状态转移律求k d ∈D(k =1,2, …n), 使k S ∈S, 并按转移律由1S =(4,4)到达状态1+n S =(0,0)。

商人过河问题

商人过河问题

商人过河问题一、三名商人各带一名随从的情况1.问题(略)2.模型假设①当一边岸满足随从数大于商人数,但商人数为0时仍为一种安全状态;②小船至多可容纳2人,且渡河时由随从(或者商人)来划船。

3.分析与建模商人过河需要一步一步实现,比如第一步:两个仆人过河,第二步:一个仆人驾船回来,第三步:又是两个仆人过河,第四步:……其中每一步都使当前状态发生变化,而且是从一种安全状态变为另一种安全状态。

如果我们把每一种安全状态看成一个点,又如果存在某种过河方式使状态a变到状态b,则在点a和点b之间连一条边,这样我们把商人过河问题和图联系起来,有可能用图论方法来解决商人过河问题。

建模步骤:⑴首先要确定过河过程中的所有安全状态,我们用二元数组(,)x y 表示一个安全状态(不管此岸还是彼岸),其中x表示留在此岸的主人数,y表示留在此岸的随从数。

两岸各有十种安全状态:(0,0),(0,1),(0,2),(0,3),(2,2),(1,1),(3,0),(3,1),(3,2),(3,3)⑵在两岸的安全状态之间,如存在一种渡河方法能使一种状态变为另一种安全状态,则在这两种状态之间连一条边。

这样,得到如下一个二部图(图1),其中下方顶点表示此岸状态,上方顶点表示彼岸状态。

我们的目的是要找出一条从此岸(3,3)到彼岸(0,0)的最短路。

⑶观察发现此岸的状态(0,0),(3,0)和彼岸的状态(0,3),(3,3)都是孤立点,在求最短路的过程中不涉及这些点,把它们删去。

两岸的点用1,2, (16)新标号。

(3,3)(3,2)(3,1)(3,0)(1,1)(2,2)(0,3)(0,2)(0,3)(0,0)○②④⑥⑧⑩○○12○14○16①③⑤○⑦⑨○11○13○15○(3,3)(3,2)(3,1)(3,0)(1,1)(2,2)(0,3)(0,2)(0,3)(0,0)(图1)4.模型求解求最短路程的matlab程序如下:function route=sroute(G,opt)%求图的最短路的Dijkstra算法程序,规定起点为1,顶点连续编号%G是给定图的邻接矩阵或弧表矩阵,程序能够自动识别%当opt=0(或缺省)时求无向图的最短路,当opt=1时求有向图的最短路%d——标记最短距离%route是一个矩阵,第一行标记顶点,第二行标记1到该点的最短路,第三行标记最短路上该点的先驱顶点while 1 %此循环自动识别或由弧表矩阵生成邻接矩阵if G(1,1)==0A=G;breakelsee=Gn=max([e(:,1);e(:,2)]); %顶点数m=size(e,1); %边数M=sum(e(:,3)); %代表无穷大A=M*ones(n,n);for k=1:mA(e(k,1),e(k,2))=e(k,3);if opt==0A(e(k,2),e(k,1))=e(k,3); %形成无向图的邻接矩阵endendA=A-M*eye(n) %形成图的邻接矩阵endbreakendpb(1:length(A))=0;pb(1)=1;index1=1;index2=ones(1,length(A));d(1:length(A))=M;d(1)=0; %标记距离temp=1;while sum(pb)<length(A)tb=find(pb==0);d(tb)=min(d(tb),d(temp)+A(temp,tb)); %更新距离temp=find(d(tb)==min(d(tb))); %确定新最小距离点temp=tb(temp(1));pb(temp)=1;index1=[index1,temp];index=index1(find(d(index1)==d(temp)-A(temp,index1)));if length(index)>=2index=index(1);endindex2(temp)=index; %记录前驱顶点endroute=[1:n;d;index2];在matlab的命令窗口输入图(1)的弧表矩阵e:e=[1 2;1 4;1 10;3 4;3 6;3 10;5 6;5 8;7 14;7 16;9 8;9 12;11 12;11 14;13 14;13 16;15 16];e=[e,ones(17,1)]; %边权都设为1调用程序:route=sroute(e,0)运行结果:e =1 2 11 4 11 10 13 4 13 6 13 10 15 6 15 8 17 14 17 16 19 8 19 12 111 12 111 14 113 14 113 16 115 16 1route =1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 160 1 2 1 4 3 10 5 6 1 8 7 10 9 12 111 1 4 1 6 3 14 5 8 1 12 9 14 11 16 7这表示存在一条从1到16的长度为11的路:1 4 3 6 5 8 912 11 14 7 16,此路对应商人成功渡河的一个方案:(3,3)变为(3,1)变为(3,2)变为(3,0)变为(3,1)变为(1,1)变为(2,2)变为(0,2)变为(0,3)变为(0,1)变为(1,1)变为(0,0)即:两个仆人过河,一个仆人回来;有两个仆人过河,一个仆人回来;两个主人过河,一主一仆回来;有两个主人过河,一个仆人回来;两个仆人过河,一个仆人回来;最后两个仆人过河。

2010年下期《数学模型》考试试卷(A卷)参考答案

2010年下期《数学模型》考试试卷(A卷)参考答案

1、我们建立的“商人怎样安全过河”模型是( A )。

A.允许决策模型B.状态转移模型C.马氏链模型D.多步决策模型4、“公平合理的席位分配”模型中,以下说法错误的( D )。

A.参照惯例的席位分配结果是较合理的B.提出的相对不公平程度对席位分配有改进效果C. 席位分配一类问题的Q 值法是较公平的D.存在满足四个公平分配公理的分配方法 10、“层次分析模型”中成比对矩阵)(ij a A =如果满足如下( D )式,则称为一致阵。

A 、0>ij aB 、jiij a a 1=C 、11=∑=ni ijaD 、ik jk ij a a a =⋅二、填空题(2分/空×10空=20分)1、“商人怎样安全过河”模型中状态随决策变化的规律是k k k k d s s )1(1-+=+。

2、“公平的席位分配”模型中的Q 值法计算公式是)1(2+=i i i i n n p Q 。

7、“传染病模型”中SIS 模型是指被传染者康复以后,还有可能再次感染该传染病。

三、问答题(40分)1、请用简练的语言全面的描述数学建模的过程和数学模型的特点。

(10’)答:(1)建模过程:模型准备→模型假设→模型构成→模型求解→模型检验→模型应用。

(2)数学模型的特点:逼真性和可行性;渐进性;强健性;可转移性;非预制性;条理性;技艺性;局限性;2、某家具厂生产桌子和椅子两种家具,桌子售价50元/个,椅子销售价格30元/个,生产桌子和椅子要求需要木工和油漆工两种工种。

生产一个桌子需要木工4小时,油漆工2小时。

生产一个椅子需要木工3小时,油漆工1小时。

该厂每个月可用木工工时为120小时,油漆工工时为50小时。

问该厂如何组织生产才能使每月的销售收入最大?(建立模型不计算)(10’) 解:(1)确定决策变量:x1=生产桌子的数量x2=生产椅子的数量 4分 (2)确定目标函数:家具厂的目标是销售收入最大max z=50x1+30x2(3)确定约束条件:4x1+3x2<120(木工工时限制) 2x1+x2>50(油漆工工时限制)(4)建立的数学模型为:max S=50x1+30x2 s.t. 4x1+3x2<120 2x1+ x2>50 x1, x2 >03、有四个工人,要分别指派他们完成四项不同的工作,每人做各项工作所消耗的时间如下表所示,问应如何指派工作,才能使总的消耗时间为最少?(建立模型不计算)(10’) 解:令0,1,ij i j x i ⎧=⎨⎩指派第人完成第项工作不指折派第项工作目标函数:111231421222431323334414244min 1518212419231826171619192117Z x x x x x x x x x x x x x x =++++++++++++约束条件:1121314112223242132333431424344411..11x x x x x x x x st x x x x x x x x +++=⎧⎪+++=⎪⎨+++=⎪⎪+++=⎩4、结合自身的实际情况,谈谈数学建模的方法和自身能力的培训。

怎样安全渡河问题

怎样安全渡河问题

实验1 怎样安全过河问题一、问题3名商人各带1名随从乘船渡河,一只小船只能容纳2人,由他们自己划行。

随从们密约,在河的任一岸,一旦随从人数比商人多,就杀商人。

此密约被商人知道,如何乘船渡河的大权掌握在商人们手中,商人们怎样安排每次乘船方案,才能安全渡河呢?二、实验目的使学生进一步巩固和理解向量的定义、运算规则及多步决策理论及其应用。

三、预备知识向量定义及运算,多步决策理论。

四、实验内容与要求建立起商人安全渡河的数学模型,并给出商人们如何安全渡河的一个方案,使得渡河的次数尽量少。

五、思考问题在上述的约束条件下,若商人有4名时,问商人们是否能实现安全渡河?更一般地,若商人数是m,小船最多只能坐n(1〈n〈m〉人,m和n有何关系时,商人们才能实现安全渡河?问题解答一、问题分析与建立模型由于这个问题已经理想化了,所以不必再作假设。

这个问题可以看作一个多步决策的过程。

设第k次渡河前此岸的商人数为X K,随从数为Y K,k=1,2,…。

X K,Y K=0,1,2,3。

将二维向量S K=( X K,Y K)定义为状态。

安全渡河条件下的状态集合称为允许状态集合,记为S,则S={(x,y)|x=0或3,y=0,1,2,3;x=y=1,2} (1) 又设第k次渡船上的商人数为U K,随从数为V K,将二维向量D K=(U K,V K)定义为决策,则允许决策集合为:D={(u,v)|u+v=1,2} (2)因为k为奇数时船从此岸驶向彼岸,k为偶数时船由彼岸驶回此岸,所以状态S K随着决策D K变化的规律即状态转移规律是:S K+1=S K+(—1)K D K (3)这样,制定安全渡河方案归结为如下的多步决策问题:求决策D K∈D(k=1,2,…,n),使S K∈S按照转移律(3),由初始状态S1=(3,3)经有限步(设为n)到达状态S n+1=(0,0)。

二、计算过程下面通过Mathematica的程序给出这个多步决策问题的一个解,同时满足了渡河次数尽量少的条件。

1.3安全过河问题

1.3安全过河问题

3、模型建立
安全的状态有哪些? (3,0)(3,1)(3,2)(3,3) (0,0)(0,1)(0,2)(0,3) (1,1)(2,2)
4、模型求解
(一)搜索法
(二)作图法
5、模型的进一步讨论
如果是四名商人,四名仆人呢?能找到安 全渡河的方案吗?
练习题:如果是五名商人,四名仆人,有 安全渡河的方案吗?
用甲、乙、丙代表三个商人 a, b, c 代表三个仆人
问题的关键在哪里? 每次渡河小船上的人数情况?
1、模型假设
设渡河过程中不会发生翻船等意外事故 设河的此岸为A岸,彼岸为B岸,x为商人的 人数,y为仆人的人数,用(x,y)表示A岸的 商仆人数情况。
思考:
(1)若(x,y)为(3,2)、(0,0)、(2,1)、 (0,2)代表什么意思? (2)x,y之间需要满足什么条件,商人们才会安全? (3)设A岸的人数为(x,y),则B岸的商人仆人数分 别是?
第三次课:安全过河问题
1、问题陈述
三名商人各带一名随从和一些较珍贵的 货物要乘一条小船过河,但是小船一次最 多能容纳2人。仆人们商定一旦在河的任一 岸,如果仆人数比商人数多,就准备越货 杀人。商人们知道了这一消息,要设计渡 河方案才能从河的一边安全的到达河那边。 该怎么设计渡河方案?
为方便叙述问题:
ቤተ መጻሕፍቲ ባይዱ
问题:狗、鸡、白菜过河问题
一个人要把狗、鸡、白菜带过河。每次 渡河,船上只能带狗、鸡、白菜中的一样。 但当人不在时,狗要咬鸡、鸡要吃菜。 能设计一个渡河方案,使鸡吃不掉白菜, 狗咬不了鸡吗?
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

去2随从
(3商人1随从)
回1随从
(3商人2随从)
去2随从
(3商人)
回1随从
(3商人1随从)
去2商人
(1商人1随从)
回1商人1随从
(2 商 人 2随 从 )
去2商人
(2随从)
回1随从
(3随从)
去2随从
(1随从)
if(ML,CL,BL=1) then (ML-1,CL,BL-1) ——P10操作 if(ML,CL,BL=1) then (ML,CL-1,BL-1) ——P01操作 if(ML,CL,BL=1) then (ML-1,CL-1,BL-1)——P11操作 if(ML,CL,BL=1) then (ML-2,CL,BL-1) ——P20操作 if(ML,CL,BL=1) then (ML,CL-2,BL-1) ——P02操作 if(ML,CL,BL=0) then (ML+1,CL,BL+1) ——q10操作 if(ML,CL,BL=0) then (ML,CL+1,BL+1) ——q01操作 if(ML,CL,BL=0) then (ML+1,CL+1,BL+1)—q11操作 if(ML,CL,BL=0) then (ML+2,CL,BL+1) ——q20操作 if(ML,CL,BL=0) then (ML,CL+2,BL+1) ——q02操作
3. 这种适当设置状态和决策,并确定状态转移规律是有效地
解决很广泛的一类问题的建模方法。
4. 不易找到所有的解。
可以得出经过11步的渡河就能达到安全渡河的目标及满
足渡河次数尽量少的条件。这11步的渡河方案就是上面程序 运行结果中船上下面的那一列。渡河的整个过程如下所示:
(3商人3随从)
(3,3,1)
(0,0,0)
状态空间的总状态数为4×4×2=32,根据约束条件的 要求,可以看出只有20个合法状态。再进一步分析后,
又发现有4个合法状态是不可能达到的。因此实际的状态空间
仅由16个状态构成。下表列出分析结果:
(0,0,1)达不到 (0,1,1)
(0,2,1)
(0,3,1)
(1,0,1)不合法 (1,1,1)
从状态空间图看出解序列相当之多,但最短解序列只有4个, 均由11次操作构成。若给定其中任意两个状态分别作为初始状态 和目标状态,就可以立即找出对应的解序列来。在一般情况下, 求解过程就是对状态空间搜索出一条解路径的过程!
3、状态空间图求解
(3,3,1)
(2,2,0) (3,2,0) (3,1,0)
(3,2,1)
(3,3,1)
(3,0,0) (3,1,1) (1,1,0) (2,2,1) (0,2,0) (0,3,1) (0,1,0) (0,1,1) (0,0,0)
(3,3,1)
4、结果分析
状态空间图是一个有向图,其节点可表示问题的各种状态,节 点之间的弧线代表一些操作,它们可把一种状态导向另一种状态。 这样建立起来的状态空间图描述了问题所有可能出现的状态及状 态和操作之间的关系,因而可以较直观地看出问题的解路径及其 性质。实际上只有问题空间规模较小的问题才可能作出状态空间 图。
(2,1,0)不合法 (2,2,0)
(2,3,0)不合法
(3,0,0)
(3,1,0)
(3,2,0)
(3,3,0)达不到
2、规则集合:由摆渡操作组成。该问题主要有两种操作:pmc操 作(规定为从左岸划向右岸)和qmc操作(从右岸划向左岸)。 每次摆渡操作,船上人数有五种组合,因而组成有10条规则的 集合。
回1随从
(2随从)
去2随从
(渡河成功)
设N和K分别表示商人数目和随从数目,如下图所示, 图中L和R表示左岸和右岸,
LR
M3 0 C 30 B 10
LR
M3 0 C 30 B 10
1
有船
B= 0
无船
ST.
M≥C
M+C≤2
1、三维向量表示,即
(ML,CL,BL),其中 0≤ML,CL≤3 ,BL∈{0,1} 此时问题描述简化为
二、实验目的
1、使学生进一步巩固和理解向量的定义、运算规则、多 步决策理论、状态空间图及其应用。
2、增强编程知识和数学软件的应用。
三、预备知识
1、向量定义及运算,多步决策理论,状态空间图。 2、熟悉Mathematica、 Matlab等数学工具。
四、实验内容与要求
建立起商人安全渡河的数学模型,并给出商 人们如何安全渡河的一个或多个方案,使得渡河 的次数尽量少。
五、思考问题
在上述的约束条件下,若商人有4名时,问商 人们是否能实现安全渡河?更一般地,若商人数 是m,小船最多 只能坐n(1〈n〈m〉人,m和n有 何关系时,商人们才能实现安全渡河?
1、多步决策 2、状态空间
解题思路
一、问题分析与建立模型
由于这个问题已经理想化了,所以不必再作假设。这个问 题可以看作一个多步决策的过程。设第k次渡河前此岸的商人 数为XK,随从数为YK,k=1,2,…。XK,YK=0,1,2,3。将二维向 量SK=( XK,YK)定义为状态。安全渡河条件下的状态集合称为允 许状态集合,=0,1,2,3;x=y=1,2}
(1)
又设第k次渡船上的商人数为UK,随从数为VK,将二 维向量DK=(UK,VK)定义为决策,则允许决策集合为:
D={(u,v)|u+v=1,2}
(2)
因为k为奇数时船从此岸驶向彼岸,k为偶数时船由彼 岸驶回此岸,所以状态SK随着决策DK变化的规律即状态转 移规律是:
a[1]={0,0};a[2]={0,1};a[3]={0,2};a[4]={0,3};a[5]={3,0};
a[6]={3,1};a[7]={3,2};a[8]={3,3};a[9]={1,1};a[10]={2,2}; (* 以 上 两 行 表 示 给 出 十 个 允 许 的 状 态 . 而
{1,0},{1,2},{1,3},{2,0},{2,1},{2,3}六种状态是不可能出现的。*) d[1]={0,2};d[2]={2,0};d[3]={1,1};d[4]={0,1}; d[5]={1,0}; (*此行表示给出五个允许的状态,而{0,0},{1,2},{2,1},{2,2}是 不可能出现的*)
SK+1=SK+(—1)KDK
(3)
这样,制定安全渡河方案归结为如下的多步决策问题:
求决策DK∈D(k=1,2,…,n),使SK∈S按照转移 律(3),由初始状态S1=(3,3)经有限步(设为n)到达 状态Sn+1=(0,0)。
二、计算过程
下面通过Mathematica的程序给出这个多步决策问题的一个解, 同时满足了渡河次数尽量少的条件。
程序运算结果如下: 此岸 ———— 船上 ———— 对岸 {3,3} ———— {0,2} ———— {0,2} {3,1} ———— {0,1} ———— {0,1} {3,2} ———— {0,2} ———— {0,3} {3,0} ———— {0,1} ———— {0,2} {3,1} ———— {2,0} ———— {2,2} {1,1} ———— {1,1} ———— {1,1} {2,2} ———— {2,0} ———— {3,1} {0,2} ———— {0,1} ———— {3,0} {0,3} ———— {0,2} ———— {3,2} {0,1} ———— {0,1} ———— {3,1} {0,2} ———— {0,2} ———— {3,3}
l=Mod[i+1,2];m=l;u=0;
if[i+1>=3,
DO[If[s[i+1]==s[m],u=1,Break[]],{m,l,i-1,2}] ];
if[u==0,c[i+1]=d[j];Break[]] (*以上五行是保证状态不重复以满足渡河的次数尽
量少*)
,{j,1,5}]; If[t==0,Print[No Result];Break[]]; b[i+1]={3,3}—s[i+1]; Print[s[i],”————”,c[i+1],”————”,b[i+1]]; If[s[i+1]=={0,0},Break[]] ,{i,1,12}]
(1,2,1)不合法 (1,3,1)不合法 (2,0,1)不合法
(2,1,1)不合法 (2,2,1)
(2,3,1)不合法
(3,0,1)达不到 (3,1,1)
(3,2,1)
(3,3,1)
(0,0,0)
(0,1,0)
(0,2,0)
(0,3,0)达不到 (1,0,0)不合法 (1,1,0)
(1,2,0)不合法 (1,3,0)不合法 (2,0,0)不合法
三、结果分析
1 上述程序中五个允许的决策或十个允许的状态顺序进行整
时,可以得到不同的结果。例如把d[1]={0,2},d[3]={1, 1}调整成d[1]={1,1},d[3]={0,2}就会得到安全渡河的另 一个方案。需要注意的是进行调整时也可能得不到安全渡 河的方案。
2. 该模型求解方法有多种,例如可以利用动态规划的方法来 求解,也可以利用图解的方法来求解。
i=1;j=1;k=1;s[0]=s[1]={3,3};Print[“此岸————船 上————对岸”]; DO[
DO[s[i+1]=s[i]+(-1)^id[j];
t=0;
DO[if[s[i+1]==a[k];t=1]{k,1,10}];
if[t==0,Continue[]]; (*以上三行是保证状态属于允许的状态*)
实验1 怎样安全过河问题
相关文档
最新文档