商人过河优化模型

合集下载

数学建模:研究商人过河问题

数学建模:研究商人过河问题

数学建模实验一报告实验题目:研究商人过河问题一、实验目的:编写一个程序(可以是C,C++或Mathlab )实现商人安全过河问题。

二、实验环境:Turbo c 2.0、Microsoft Visual C++ 6.0、Matlab 6.0以上 三、实验要求:要求该程序不仅能找出一组安全过河的可行方案,还可以得到所有的安全过河可行方案。

并且该程序具有一定的可扩展性,即不仅可以实现3个商人,3个随从的过河问题。

还应能实现 n 个商人,n 个随从的过河问题以及n 个不同对象且每个对象有m 个元素问题(说明:对于3个商人,3个随从问题分别对应于n=2,m=3)的过河问题。

从而给出课后习题5(n=4,m=1)的全部安全过河方案。

四、实验步骤:第一步:问题分析。

这是一个多步决策过程,涉及到每一次船上的人员以及要考虑此岸和彼岸上剩余的商人数和随从数,在安全的条件下(两岸的随从数不比商人多),经有限步使全体人员过河。

第二步:分析模型的构成。

记第k 次渡河前此岸的商人数为k x ,随从数为k y ,2,1=k ,n y x k k 2,1,=,(具有可扩展性),将)(k k y x ,定义为状态,状态集合成为允许状态集合(S )。

S={2,1;3,2,1,0,3;3,2,1,0,0|,======y x y x y x y x )(}记第k 次渡船的商人数为k u ,随从数为k v ,决策为),(k k v u ,安全渡河条件下,决策的集合为允许决策集合。

允许决策集合记作D ,所以D={2,1,0,,21|,=<+<v u v u v u )(|1<u+v<2,u,v=0,1,2},因为k 为奇数时船从此岸驶向彼岸,k 为偶数时船由彼岸驶向此岸,所以状态k s 随决策k d 变化的规律是k k k k d s s )1(1-+=-,此式为状态转移律。

制定安全渡河方案归结为如下的多步决策模型:求决策)2,1(n k D d k =∈,使状态S s k ∈按照转移律,由初始状态)3,3(1=s 经有限n 步到达)0,0(1=+n s第三步:模型求解。

实验报告

实验报告

学号:20092122103 姓名:郑少钊数学实验作业实验一商人们怎样安全过河有3个商人带着随从要过一条河。

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

但是乘船渡河的方案由商人决定,商人们怎样才能安全过河。

假设每人都会划船,小船一次只能容纳2人,且船载起始岸边。

请给出安全过河的最佳方案。

解:模型建立:用三元组(x,y,z)表示渡河过程中的某个状态x-----起始岸边上商人的个数y-----起始岸边随从的个数z-----小船的位置(z为1时,表示小船在起始岸边,为0时,表示小船在目的的岸边)其中一种方案:(3,3,0)---(2,2,1)---(3,2,0)---(3,0,1)---(3,1,0)---(1,1,1)---(2,2,0)---(0,2,1)---(.0,3,0)---(0,1,1)---(0,2,0)---(0,0,1)实验四最短总航线问题下表给出世界六大城市(伦敦、墨西哥城、纽约、巴黎、北京和东京)之间的航线距离(以英里为单位),试确定连通这六大城市的最短总航线。

解:由上表可得图如下:A:伦敦;B:墨西哥城;C:纽约;D:巴黎;E:北京;F:东京用MATLAB软件求解,代码如下:(Prim算法)cleara=[0 5558 3469 214 5074 5959;5558 0 2090 5725 7753 7035;3469 2090 0 3636 6844 6757;214 5725 3636 0 5120 6053;5074 7753 6844 5120 0 1307;5959 7035 6757 6053 1307 0;]T=[];c=0;v=1;n=6;sb=2:n;for j=2:nb(1,j-1)=1;b(2,j-1)=j;b(3,j-1)=a(1,j);endwhile size(T,2)<n-1[tmin,i]=min(b(3,:));T(:,size(T,2)+1)=b(:,i)c=c+b(3,i);v=b(2,i);temb=find(sb==b(2,i));sb(temb)=[];b(:,i)=[];for j=1:length(sb)d=a(v,b(2,j));if d<b(3,j)b(1,j)=v;b(3,j)=d;endendendT,c结果如下:T =1 1 3 1 54 3 25 6214 3469 2090 5074 1307c =12154因此,上图的最小生成树的边集合为{(1,4),(1,3),(3,2),(1,5),(5,6) },最短总航线为12154.实验一求最短路问题求图14.9所示的有向网络中点1到点6的最短有向路。

第五章 离散模型

第五章 离散模型
由假设,

p11 0.8, p12 0.2, p21 0.7, p22 0.3,
再由于投保人处于健康状态,即 0 1 1, 0 2 0. 由此得到
n
0
1
2
3
4


n 1 1 0.8 0.78 0.778 0.7778 7 / 9. n 2 0 0.2 0.22 0.222 0.2222 2 / 9

x, y x y 1, 2.
y
2 1
o
1
2
3
x
在上图中, 实点即表示为容许状态的集合. 乘船的方案称为决策,仍然用向量
x, y 来表示,
即 x名商人和 y 名随从同坐一条船. 在这些决策中, 有
是符合条件的,称为容许决策。容许决策的全体组成集 合构成容许决策的集合,记为 D. 在这个问题中,容许决策的集合为
若投保人在开始时处于疾病状态,即0 1 0, 0 2 1. 则有
n
0
1
2
3
4


n 1 0 0.7 0.77 0.777 0.7777 7 / 9. n 2 1 0.3 0.23 0.223 0.2223 2 / 9
从两张表中可以看到,无论投保人在初始时处于什么 状态,当时间趋于无穷大时,该时刻的状态趋于稳定, 且与初始值无关。即
9
10 11 12
2, 2 0, 2 0,3 0,1 0, 2 0,0
2,0 0,1 0, 2 0,1 0, 2
分析
从上表中可以看到,该方案是可行的。
二、马氏链及其应用
1.一个简单的例子 我们知道,人寿保险公司最为关心的是投保人的健康

数学建模 商人过河

数学建模 商人过河

数学建模课程作业论文题目:对商人过河问题的研究指导教师:黄光辉小组成员:黄志宇(20156260)车辆工程04班牛凯春(20151927)电气工程05班文逸楚(20150382)工商管理02班一、问题重述3名商人带3名随从乘一条小船过河,小船每次只能承载至多两人。

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

乘船渡河的方案由商人决定,商人们如何才能安全渡河呢?二、问题分析本题针对商人们能否安全过河问题,需要选择一种合理的过河方案。

对该问题可视为一个多步决策模型,通过对每一次过河的方案的筛选优化,最终得到商人们全部安全过到河对岸的最优决策方案。

对于每一次的过河过程都看成一个随机决策状态量,商人们能够安全到达彼岸或此岸我们可以看成目标决策允许的状态量,通过对允许的状态量的层层筛选,从而得到过河的目标。

三、模型假设1.过河途中不会出现不可抗力的自然因素。

2.当随从人数大于商人数时,随从们不会改变杀人的计划。

3.船的质量很好,在多次满载的情况下也能正常运作。

4.随从会听从商人的调度,所有人都到达河对岸。

四、符号说明第k次渡河前此岸的商人数第k次渡河前此岸的随从数过程的状态向量允许状态集合第k次渡船上的商人数第k次渡船上的随从数决策向量允许决策集合x y 3322110s 1s n +1d 1d 11五、模型建立本题为多步决策模型,每一次过河都是状态量的转移过程。

用二维向量表示过程的状态,其中分别表示对应时刻此岸的商人,仆人数以及船的行进方向,其中则允许状态集合:=又将二维向量定义为决策,则允许的决策合集为:因为k 为奇数时船从此岸驶向彼岸,k 为偶数时船从彼岸驶向此岸,所以状态随决策的变化规律是该式称为状态转移律。

求决策,使,并按照转移律,由经过有限步n 到达状态六、模型求解本模型使用MATLAB 软件编程,通过穷举法获得决策方案如下(完整matlab 程序详见附录):初始状态:可用图片表示为:X0=33状态为:S =3132303111220203010200决策为:D =0201020120112001020102七、模型推广该商人和随从过河模型可以完美解决此类商人过河的决策问题,并且该模型还可推广至解决m个商人和n个随从过河,以及小船的最大载重人数改变时的问题,只需适当地改变相关的语句即可轻松实现模型的转换。

日常生活中的数学建模

日常生活中的数学建模

改进模型:
l1: 鱼的有效长度 A1:横截面积
V l1 A 1
l1 l
2 A s 1
W kls
2
W V
数学建模
模型检验
在钓鱼比赛期间收集了有关数据:
第i条鱼 长度li
腰围si
所钓鱼的长度、腰围与重量 cm, g
1 36.83
2 31.75
3

5 32.07
6
7
8 32.07
决策 ~ 每一步(此岸到彼岸或彼岸到此岸)船上的人员 要求 ~ 在商人安全的前提下(两岸的随从数都不比商人多), 经有限步使全体人员过河。
数学建模
模型建立及求解
xk~第k次渡河前此岸的商人数 xk, yk=0,1,2,3; 设 yk~第k次渡河前此岸的随从数 k=1,2, sk=(xk , yk)~过程的状态,S ~允许状态集合 S={(x , y) x=0, y=0,1,2,3; x=3, y=0,1,2,3; x=y=1,2}
态转方程,由 s1=(3,3)到达 sn+1=(0,0)。
数学建模
模型求解
穷举法 ~ 编程上机 图解法
状态s=(x,y) ~ 16个格点
3 2
y
s1
d1
S={(x , y) x=0, y=0,1,2,3;
x=3, y=0,1,2,3; x=y=1,2} 允许状态 ~ 10个 点
1
d11 0sn+1 1 2 3 x
sk+1=sk+(-1)k dk
~状态转移方程
uk~第k次渡船上的商人数 uk, vk=0,1,2; vk~第k次渡船上的随从数 k=1,2, D={(u , v) u+v=1, 2} ~允许决策集合

数学建模案例精选知到章节答案智慧树2023年济南大学

数学建模案例精选知到章节答案智慧树2023年济南大学

数学建模案例精选知到章节测试答案智慧树2023年最新济南大学第一章测试1.在商人过河问题中,如果设彼岸的人数情况为案例中的变量,则状态转移函数变为()参考答案:s k+1=s k +(-1)k+1 d k2.下面哪一个不是商人过河允许的状态()参考答案:(2,1)3.关于商人过河问题,下面说法错误的是()参考答案:商人过河要保证每一岸的商人数和随从数一样多4.关于路障间距设计问题,说法不正确的()参考答案:不可以假设汽车做匀速运动5.关于机理分析说法不正确的是()参考答案:将研究对象看做一个黑箱第二章测试1.Lingo软件不可以直接求解哪一类优化模型().参考答案:多目标规划2.在露天矿生产的车辆安排问题中,已知铲位1到岩石漏距离为5.26km,车辆平均速度为28km/h,请问这条线路上运行一个周期平均所需时间Tij为()(请保留两位小数).参考答案:8.38;30.54;19.273.在露天矿生产的车辆安排问题中,基本假设不变,若某天线路上的T ij=19分钟,车辆开始工作的时间可以不同,工作后车辆不会发生等待,则该线路上最多可以安排()辆卡车?参考答案:44.在露天矿生产的车辆安排问题中,基本假设不变,若某天线路上的Tij=17分钟,安排3辆车在该线路上工作,开始工作的时间可以不同,开始工作后车辆不会发生等待,则三辆车在一个班次内的最大运算趟数是()?参考答案:28,27,275.在露天矿生产的车辆安排问题中,基本假设不变,车辆开始工作的时间可以不同,开始工作后车辆不会发生等待,若可以安排3辆车在同一条线路上工作,则三辆车在一个班次(8小时)内的工作时间(分钟)不可能是().参考答案:479,471,474第三章测试1.假设快速喝下1瓶啤酒,酒精从肠胃向体液的转移速度与胃肠中的酒精含量x成正比,比例系数为k,则得到的微分方程为?()。

参考答案:2.模型中有未知参数,给定了测试数据,确定参数的最佳方法为()。

案例-商人过河

案例-商人过河
s 3 = ( 3 , 2 ) 故 s 2 = {( 2 , 2 ), ( 3 , 1 )} 且 s 3 = ( 3 , 2 )
穷举法适宜编程上机运算
问题分析
这是一类智力游戏问题, 这是一类智力游戏问题,可经过一番逻辑 推理求解。当然也可视为一个多步决策问题 多步决策问题, 推理求解。当然也可视为一个多步决策问题, 每一步(此岸到彼岸或彼岸到此岸) 每一步(此岸到彼岸或彼岸到此岸)都要对船 上的人员作出决策,在保证安全的前提下( 上的人员作出决策,在保证安全的前提下(两 岸的随从数不比商人多) 岸的随从数不比商人多)经有限步使全体人员 过河
S = {( 0 , 0 ), ( 0 , 1 ), ( 0 , 2 ), ( 0 , 3 ), ( 1 , 1 ), ( 2 , 2 ) ( 3 , 0 ), ( 3 , 1 ), ( 3 , 2 ), ( 3 , 3 )}
记 第k次渡船上的商人数为 uk ,随从数 为过程中的决策。 为 vk ,而 d k = ( uk , vk ) 为过程中的决策。
sk +1 = sk + ( −1)k d k
多步决策问题模型: 多步决策问题模型: 转移律由 求 d k ∈ D 使 s k ∈ S 并按转移律由 s1 = ( 3, 3) 到达 sn+1 = (0,0)
模型求解
• 图解法
y 3 2
16个格点 状态s=(x,y)为16个格点 允许状态为10个点 允许状态为10个点 10 允许决策为移动1 允许决策为移动1或2格; k为奇数时,向左、下移; 奇数时,向左、下移; k为偶数时,向右、上移. 偶数时,向右、上移.
安全渡河条件下的决策称为允许决策, 安全渡河条件下的决策称为允许决策,全 允许决策 体允许决策构成的集合记为 D

【数学模型】商人们怎样过河?

【数学模型】商人们怎样过河?

问题引出问题:三名商人各带一个随从过河,一只小船只能容纳两个人,随从们约定,只要在河的任何一岸,一旦随从人数多于商人人数就杀人越货,但是商人们知道了他们的约定,并且如何过河的大权掌握在商人们手中,商人们该采取怎样的策略才能安全过河呢?这次的问题是一个很经常遇到的过河问题,其实对于该类问题,我们经过逻辑思考就可以得到答案。

但是通过数学模型的建立,我们可以得到一个通用的解答,并且通过计算机的计算我们可以大大扩大问题的规模。

问题分析因为这个问题已经理想化了,所以我们无需对模型进行假设,该问题可以看作一个多步决策问题。

每一步,船由此岸划到彼岸或者由彼岸划回此岸,都要对船上的人员进行决策(此次渡河船上可以有几名商人和几名随从),在保证安全(两岸的随从都不比商人多)的前提下,在有限次的决策中使得所有人都到对岸去。

因此,我们要做的就是要确定每一步的决策,达到渡河的目标。

建立模型记第k 次过河前此岸的商人数为x k , 随从数为y k, k = 1, 2, 3…, x k ,yk = 0, 1, 2, 3定义状态:将二维向量s k = ( x k , y k ) 定义为状态将安全渡河状态下的状态集合定义为允许状态集合,记为S = {(x,y) | x=0,y=0,1,2,3; x=y=1; x=y=2; x=3,y=0,1,2,3}记第k 次渡河船上的商人数为u k,随从数为v k定义决策:将二维向量d k = (u k , v k) 定义为决策允许决策集合记作D = {(u,v) | 1 ≤ u+v ≤ 2, u,v = 0,1,2}因为小船容量为2,所以船上人员不能超过2,而且至少要有一个人划船,由此得到上式。

由我们定义的状态s k和决策d k,我们可以发现它们之间是存在联系的:•k 为奇数是表示船由此岸划向彼岸,k 为偶数时表示船由彼岸划回此岸••状态s k是随着决策d k变化的,规律为:•s k+1 = s k + (-1)k d k我们把上式称为状态转移律,因此渡河方案可以抽象为如下的多步决策模型:求决策d k∈D(k = 1,2,…,n) , 使状态s k∈S 按照转移率,初始状态s1 = (3,3) 经有限步n 到达状态s n+1= (0,0)到这里,整个数学模型就已经非常清晰了,接下来要做的就是求解模型得出结果。

商人过河问题数学建模

商人过河问题数学建模

商人过河一、问题重述问题一: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;k(1) kv(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)随从 y商人 x数学模型:S k+1=S +(-1)D kx + x ' = 4kky + y ' = 4k k(2)(3)x ≥ y k.k (4)x ' ≥ y 'kk模型分析:由(2)(3)(5)可得(5)4 - x ≥ 4 - ykk化简得(( ( (( ( k(10) k综合(4)可得x = yk还要考虑x ≤ ykkk 和 S k = { x k , y k ) | x k = 0, y k = 0,1,2,3,4 }(6)S ' = { x ', y ') | x ' = 0, y ' = 0,1,2,3,4 }kkkkk(7)把(2)(3)带入(7)可得S = {(4 - x ,4 - y ) | 4 - x = 0,4 - y = 0,1,2,3,4 }kk k k k化简得S = { x , y ) | x = 4, y = 0,1,2,3,4 }kk k k k综合(6)(7)(8)式可得满足条件的情况满足下式S = { x , y ) | x = 0,4, y = 0,1,2,3,4; x = ykkkkk k k所以我们知道满足条件的点如上图所示:点移动由}(8)(9)S = { x , y ) | x = 4, y = 0,1,2,3,4 }kkkkk(8)到达S = { x , y ) | x = 0, y = 0,1,2,3,4 }kkkkk(6)时,可以认为完成渡河。

商人渡河模型

商人渡河模型

商人渡河模型一:问题描述三名商人各带一个仆人乘船渡河,—只小船只能容纳二人,仆人们密约,在河的任一岸,一旦仆人的人数比商人多,就杀人越货.但是如何乘船渡河的大权掌握在商人们手中。

商人们怎样才能安全渡河呢?二:问题分析:安全渡河问题可以视为一个多步决策过程(多步决策:决策过程难以一次完成,而要分步优化,最后获取一个全局最优方案的决策方法)。

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

三:模型建立:a)定义允许状态集合记第k次渡河前此岸的商人数为X k,仆人数为Y k,k=1,2,3…..;X k,Y k取值0,1,2,3。

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

定义安全渡河允许状态集合:S = {(X,Y)|X=0,Y=0,1,2,3;X=Y=1,2;X=3,Y=0,1,2,3}b)定义允许决策集合记第k次船上的商人数为U k,仆人数为V k,k=1,2,3…..;定义二维向量:D k =(U k,V k)为决策。

定义允许决策集合:D={(U,V)|1=<U+V<=3,u,v=0,1,2}c)人数变化规律当渡河次数k为奇数时,船从此岸驶向彼岸,k为偶数时,船由彼岸驶向此岸,此时状态S k和D k的变化规律为:S k+1 = S +(-1)K D Kd) 问题转化经过分析,问题可转化为求决策D k,使状态S k按照人数变化规律变化,由初始状态S k=(3,3)经过有限步N到达状态S N+1=(0,0)。

四:模型求解1)图解法:在Oxy 平面坐标系中画出图(1)类型的方格,方格点表示状态s=(x,y),允许的状态集合S用圆点标出。

商人们怎样安全过河的数学模型

商人们怎样安全过河的数学模型

商人们怎样安全过河的数学模型示例文章篇一:话说啊,商人们遇到了一个棘手的问题:他们得带着随从们一起过河,但随从们可不是省油的灯,一有机会就想着害商人抢货。

这河又不宽不窄,一只小船每次只能载两个人,怎么过河才能确保安全呢?咱们来聊聊这个问题吧。

首先,商人们得明白,随从们人多势众,要是他们比商人多了,那可就危险了。

所以,商人们得想个法子,让随从们没法儿耍花招。

其实啊,这个问题可以变成一个数学模型。

想象一下,我们把每次过河的人都看成是一个状态,就像打游戏一样,每过一次河就是进入了一个新的关卡。

在这个关卡里,商人们得保证自己的人数不能少于随从们。

那具体怎么做呢?咱们得先设定一些规则。

比如说,每次过河的人数只能是两个,这是小船的容量决定的。

然后,商人们得选择让哪些人过河,这就得靠他们的智慧和策略了。

想象一下这个场景:商人们先让两个随从过河,然后一个商人再带一个随从回来。

这样,河对岸的随从人数虽然多了,但商人这边还有足够的人手可以应对。

接下来,两个商人再过河,这样河对岸的商人数就比随从数多了,安全就得到了保障。

然后,再让一个商人带一个随从回来,这样河这边也有足够的商人保护随从不敢造次。

最后,两个随从再过河,问题就解决了。

这个数学模型虽然简单,但却非常实用。

它告诉我们,在面对困难和挑战时,只要我们善于运用智慧和策略,就一定能够找到解决问题的方法。

所以,商人们要想安全过河,就得靠他们的智慧和勇气了。

示例文章篇二:话说啊,有这么一个古老的谜题,叫做“商人过河”。

话说有三名聪明的商人,他们各自带着一个狡猾的随从,准备乘船过河。

这船啊,一次只能载两个人,问题就在于,这些随从们心里都有个小九九,他们密谋着,只要到了河的对岸,随从人数多于商人人数,就立马动手抢货。

这商人们也不是吃素的,他们知道随从们的阴谋,但他们毕竟都是聪明人,于是就想出了一个绝妙的策略。

咱们来想想啊,这过河其实就是一个多步决策的过程。

每次渡河,船上的人员选择都至关重要。

商人过河问题

商人过河问题

商人过河问题摘要:为了求解3个商人和3个随从的过河问题,用数学分析方法,建立数学模型,并且加以求解,展示动态规划思想的应用步骤。

最后利用计算机编程进行求解,获得过河问题的完整求解过程;有效地求解类似多步决策问题的作用。

关键词:多步决策计算机求解状态转移律图解法 MATLAB程序一.问题提出S个商人各带一个随从乘船过河,一只小船只能容纳K人,由他们自己划船。

商人们窃听到随从们密谋,在河的任意一岸上,只要随从的人数比商人多,就杀掉商人。

但是如何乘船渡河的决策权在商人手中,商人们如何安排渡河计划确保自身安全?二.问题的关键解决的关键集中在商人和随从的数量上,以及小船的容量上,该问题就是考虑过河步骤的安排和数量上。

各个步骤对应的状态及决策的表示法也是关键。

三.问题的分析在安全的前提下(两岸的随从数不比商人多),经有限步使全体人员过河。

由于船上人数限制,这需要多步决策过程,必须考虑每一步船上的人员。

动态规划法正是求解多步决策的有效方法。

它要求把解的问题一层一层地分解成一级一级、规模逐步缩小的子问题。

直到可以直接求出其解的子问题为止。

分解成所有子问题按层次关系构成一棵子问题树.树根是原问题。

原问题的解依赖于子问题树中所有子问题的解。

四.模型假设记第k次过河前A岸的商人数为XK,随从数为YK k=1,2,⋯ XK ,YK=0,1,2,3,将二维向量SK=(XK,YK)定义为状态.把满足安全渡河条件下的状态集合称作为允许状态集合。

记作S。

则 S={(XK ,YK)|(XK =0,YK =0,1,2,3),(XK =3,YK =0,1,2,3),(XK =YK =1)(XK =YK =2)}记第k次过河船上的商人数为UK,随从数为VK将二维向量DK=(UK ,VK)定义为决策。

由小船的容量可知允许决策集合(记作D)为D={(UK ,VK)|UK +VK=l,2}={(O,1);(O,2);(1,O);(1,1);(2,O)}五.模型建立:动态规划法正是求解多步决策的有效方法。

商人过河模型

商人过河模型

商人过河模型状态集合决策集合平面坐标图解法算法一、问题提出问题:三名商人各带一个随从过河,一只小船只能容纳两个人,随从们约定,只要在河的任何一岸,一旦随从人数多于商人人数就杀人越货,但是商人们知道了他们的约定,并且如何过河的大权掌握在商人们手中,商人们该采取怎样的策略才能安全过河呢?二、问题分析这个问题已经理想化了,所以我们无需对模型进行假设,该问题可以看作一个多步决策问题。

每一步,船由此岸划到彼岸或者由彼岸划回此岸,都要对船上的人员进行决策(此次渡河船上可以有几名商人和几名随从),在保证安全(两岸的随从都不比商人多)的前提下,在有限次的决策中使得所有人都到对岸去。

因此,我们要做的就是要确定每一步的决策,达到渡河的目标。

三、模型假设与建立记第次过河前此岸的商人数为, 随从数为,,定义状态:将二维向量定义为状态,将安全渡河状态下的状态集合定义为允许状态集合,记为记第次渡河船上的商人数为,随从数为、定义决策:将二维向量定义为决策;允许决策集合记作:因为小船容量为2,所以船上人员不能超过2,而且至少要有一个人划船,由此得到上式。

由我们定义的状态和决策,我们可以发现它们之间是存在联系的:为奇数是表示船由此岸划向彼岸,为偶数时表示船由彼岸划回此岸状态是随着决策变化的,规律为:我们把上式称为状态转移律,因此渡河方案可以抽象为如下的多步决策模型:求决策, 使状态按照转移率,初始状态经有限步后到达状态。

到这里,整个数学模型就已经非常清晰了,接下来要做的就是求解模型得出结果。

四、模型求解在这个模型的求解中,我将会使用两种方法,一种是数学图解法,用于解决和当前题目一样的规模比较小的问题,优点是比较简便,但是对于规模比较大的问题就无能为力了,比如说有50个商人携带50个随从过河,第二种方法是通过计算机编程,使用程序来解决该问题,即使问题规模增大,我们也可以利用计算机强大的计算能力来解决。

4、1数学图解法我们首先在平面坐标系中画出如下方格,方格中的点表示状态起始状态(下图绿色点) , 终止状态(下图红色点)允许决策表示的是在方格中的移动,根据允许决策的定义,它每次的移动范围为1~2格,并且为奇数时向左或下方或左下方移动,位偶数时向右或上方或右上方移动。

数学建模—商人们怎样安全过河

数学建模—商人们怎样安全过河

乙至甲
8:09
8:19
8:00 x 8:10
8:20
8:30
X-8:00=0:09 x=8:09
甲至乙
5 一男孩和一女孩分别在离家 2 km 和 1 km 且方 向相反的两所学校上学,每天同时放学后分别 以4 km/h和 2 km/h 的速度步行回家。一小狗以 6 km/h的速度由男孩处奔向女孩,又从女孩处 奔向男孩,如此往返直至回到家中。问小狗奔 波了多少路程?
•一般思维:
36 18 10 4 2 1 18 9 5 2 11 36 2 2 2 22
•逆向思维:
每场比赛淘汰一名失败球队,只有一名冠军,即 就是淘汰了36名球队,因此比赛进行了36场。
3 某人家住T市在他乡工作,每天下班后乘火车于 6时抵达T市车站,它的妻子驾车准时到车站接他 回家。一日他提前下班搭早一班火车于5时半抵达 T市车站,随即步行回家,它的妻子像往常一样驾 车前来,在半路上遇到他接回家时,发现比往常 提前了10分钟。问他步行了多长时间?
河 小船(至多2人)
但是乘船渡河的方案由商人决定.
商人们怎样才能安全过河?
问题分析
多步决策过程
3名商人 3名随从
决策~ 每一步(此岸到彼岸或彼岸到此岸)船上的人员
要求~在安全的前提下(两岸的随从数不比商人多),经有限 步使全体人员过河.
模型构成
xk~第k次渡河前此岸的商人数 yk~第k次渡河前此岸的随从数 sk=(xk , yk)~过程的状态
y
状态s=(x,y) ~ 16个格点
3
允许状态 ~ 10个 点
允许决策 ~ 移动1或2格;
2
s1
d1
k奇,左下移; k偶,右上移.
d1,

数学建模作业_商仆过河

数学建模作业_商仆过河

不难说明,当商仆对数为 4 或 5 时,所需的最小船容量为 3。综上,使问题 有解的商仆对数与船容量之间的关系如下:
表 1 商仆对数与船容量的关系
商仆对数 1、2、3 4、5 ≥6
小船容量 ≥2 ≥3 ≥4
5.模型评价与改进
BFS 算法是最经典也是最简单的图搜索算法之一,对于状态空间规模很大, 但目标状态距离初始状态并不很远的问题有较好的求解能力,且保证求得最优 解。实际使用主流 PC 机测试问题规模为 101 数量级时的求解时间均为 0ms,即 使在 1000 对商仆, 船容量 200 人时的求解时间亦仅为 1592ms,此求解速度是完
6
可行状态
5
4
3
2
1
0
0
1
2
3
4
5
6
图 5
6 对商仆时的状态空间
此时状态中心(3,3)距离边界状态(6,3)的距离为 3,船容量至少为 4 才可
4
避免状态转移沿对角线下行,而船容量为 4 已经是状态转移沿对角线移动的条 件,即当商仆对数大于等于 6 时,船容量至少为 4,问题有解。
图 6 11 对商仆、小船容量为 4 时的求解结果
数学建模作业
班级 姓名
交工 092 班 仙玉印 200900534 李善仕 200900534 姜 璞 200900549
0
摘要
本文将经典的 3 对商仆过河问题推广至商仆对数为任意值、小船容量也为任 意值的一般问题,建立一般化的数学模型,并采用 BFS 算法编程求解,得到了此 问题的一般解法。 本问题实际为一个 NP 的图搜索问题,BFS 算法是经典的图搜索算法,本文 通过对 BFS 算法进行适当改进,合理压缩状态空间,使算法的时间复杂度大幅减 少, 能够在有限的极短时间内求得过河方案,并保证方案所需的船只往返次数为 最少,即求得的方案为最优方案。11 对商仆,船容量为 6 人时的最优方案为: ( 11,11 )->( 11,6 ) ->( 11, 7 ) ->( 6, 6 )->( 7, 7 ) ->( 4, 4 ) ->( 5, 5 ) ->( 2, 2 ) ->( 3, 3 ) ->( 0, 0 ) 括号内数字分别为此岸商人数和此岸仆人数,最少需要行船 9 次。 进一步讨论给出了使商仆过河问题有解的商仆对数与小船容量之间的数量 关系: 商仆对数 1、2、3 4、5 ≥6 小船容量 ≥2 ≥3 ≥4

(完整word版)商人过河问题数学建模

(完整word版)商人过河问题数学建模

作业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+1k S =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)可得44kk x y -≥- 化简得k k x y ≤综合(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,4kk k k k S x y x y === (7) 把(2)(3)带入(7)可得{}(4,4)|40,40,1,2,3,4k k k k k S x y x y =---=-=化简得{}(,)|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)时,可以认为完成渡河。

数学建模作业(商人过河问题)

数学建模作业(商人过河问题)

数学建模作业(四)——商人过河问题一.问题描述有四名商人各带一名仆人过河,但船最多能载二人,商人已获得仆人的阴谋:在河的任一岸,只要仆人数超过商人数,仆人会将商人杀死并窃取财物且安排如何乘船的权力掌握在商人手中。

试为商人制定一个安全过河的方案。

二.解决方案用递归的源程序如下:开始时商人,强盗所在的河的这边设为0状态,另一边设为1状态(也就是船开始时的一边设为0,当船驶到对岸是设为1状态,在这两个状态时,都必须符合条件)#include <stdlib.h>struct node /*建立一个类似栈的数据结构并且可以浏览每一个数据点*/ {int x;int y;int state;struct node *next;};typedef struct node state;typedef state *link;link PPointer1=NULL;link PPointer2=NULL;int a1,b1;int a2,b2;/*栈中每个数据都分为0,1状态*/void Push(int a,int b,int n){link newnode;newnode=(link)malloc(sizeof(state));newnode-> x=a;newnode-> y=b;newnode-> state=n;newnode-> next=NULL;if(PPointer1==NULL){PPointer1=newnode;PPointer2=newnode;}else{PPointer2-> next=newnode;PPointer2=newnode;}}void Pop()/*弹栈*/{link pointer;if(PPointer1==PPointer2){free(PPointer1);PPointer1=NULL;PPointer2=NULL;}pointer=PPointer1;while(pointer-> next!=PPointer2)pointer=pointer-> next;free(PPointer2);PPointer2=pointer;PPointer2-> next=NULL;}int history(int a,int b,int n) /*比较输入的数据和栈中是否有重复的*/ {link pointer;if(PPointer1==NULL)return 1;else{pointer=PPointer1;while(pointer!=NULL){if(pointer-> x==a&&pointer-> y==b&&pointer-> state==n)return 0;pointer=pointer-> next;}return 1;}}int judge(int a,int b,int c,int d,int n)/*判断这个状态是否可行,其中使用了history函数*/{if(history(a,b,n)==0) return 0;if(a> =0&&b> =0&&a <=3&&b <=3&&c> =0&&d> =0&&c <=3&&d <=3&&a+c==3&&b+d==3){switch(n){case 1:{if(a==3){Push(a,b,n);return 1;}else if(a==0){Push(a,b,n);return 1;}else if(a==b){Push(a,b,n);return 1;}else return 0;}case 0:{if(a==3){Push(a,b,n);return 1;}else if(a==0){Push(a,b,n);return 1;}else if(a> =b){Push(a,b,n);return 1;}else return 0;}}}else return 0;}int Duhe(int a,int b,int n)/*递归法解决商人渡河问题,如果这一个状态符合*/ {/*则判断下一个状态,直至问题解决*/ if(a==0&&b==0) return 1;if(n==0)/*判断0状态时,商匪状态是否符合要求*/{if(judge(a-1,b-1,4-a,4-b,1)){if(Duhe(a-1,b-1,1)==1)return 1;}if(judge(a,b-2,3-a,5-b,1)){if(Duhe(a,b-2,1)==1)return 1;}if(judge(a-2,b,5-a,3-b,1)){if(Duhe(a-2,b,1)==1)return 1;if(judge(a-1,b,4-a,3-b,1)){if(Duhe(a-1,b,1)==1)return 1;}if(judge(a,b-1,3-a,4-b,1)){if(Duhe(a,b-1,1)==1)return 1;}else{Pop(0);return 0;}}if(n==1)/*判断0状态时,商匪状态是否符合要求*/{if(judge(a+1,b+1,2-a,2-b,0)){if(Duhe(a+1,b+1,0)==1)return 1;}if(judge(a,b+2,3-a,1-b,0)){if(Duhe(a,b+2,0)==1)return 1;}if(judge(a+2,b,1-a,3-b,0)){if(Duhe(a+2,b,0)==1)return 1;}if(judge(a+1,b,2-a,3-b,0)){if(Duhe(a+1,b,0)==1)return 1;}if(judge(a,b+1,3-a,2-b,0))if(Duhe(a,b+1,0)==1)return 1;}else{Pop(1);return 0;}}return 0;}main(){link pointer;Push(3,3,0);Duhe(3,3,0);pointer=PPointer1;while(pointer!=NULL){printf( "%d,%d---%d\n ",pointer-> x,pointer-> y,pointer-> state);pointer=pointer-> next;}getch();}。

商人过河问题

商人过河问题

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

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

如果我们把每一种安全状态看成一个点, 又如果存在某种过河方式使状态 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) n⑵在两岸的安全状态之间, 如存在一种渡河方法能使一种状态变为另一种安 全状态,则在这两种状态之间连一条边。

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

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

⑶观察发现此岸的状态 (0,0) , (3,0) 和彼岸的状态 (0,3) , (3,3) 都是孤立点,标号。

(3,3) O (3,2) ② (3,1) ④ (3,0) ⑥ (1,1) ⑧ (2,2) ⑩(0,3)O (0,2) O 12 (0,3) O 14 (0,0)O 16① ③ ⑤ O ⑦ ⑨ O 11 O 13 O 15 O(3,3) (3,2) (3,1) (3,0) (1,1) (2,2) (0,3) (0,2) (0,3) (0,0) 两岸的点用1,2, ..... , 16 重新(图 1) 在求最短路的过程中不涉及这些点, 把它们删去。

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

2011高教社杯全国大学生数学建模竞赛承诺书我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。

我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。

我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。

如有违反竞赛规则的行为,我们将受到严肃处理。

我们参赛选择的题号是(从A/B/C/D中选择一项填写): B我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):西京学院参赛队员(打印并签名) :1. 邹高永2. 张大伟3. 钱晓东指导教师或指导教师组负责人(打印并签名):日期:年月日赛区评阅编号(由赛区组委会评阅前进行编号):2011高教社杯全国大学生数学建模竞赛编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):赛区评阅记录(可供赛区评阅时使用):评阅人评分备注全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):商人过河摘要本文针对商人安全渡河的问题,采用多步决策的过程建立数学模型,求解得到了在随从没有杀人越货的情况下的渡河方案。

对于本题而言,在3名商人、3名随从、船的最大容量为2的情况下,首先定义了渡河前此岸的状态,并设安全渡河条件下的状态集定义为允许状态集合,接着得到渡河方案的允许决策集合,然后得到状态随渡河方案变化的规律,最后利用平面坐标分析法,并利用计算机进行了仿真,得到了一种商人安全渡河的方案。

但是,本文不仅仅是为了拼凑出一个可行方案,而是希望能找到求解这类问题的规律性,并建立数学模型,用以解决更为广泛的问题。

基于此目的,利用了dijkstra算法,得到最短路径的最优解。

但同时由于该算法遍历计算的节点很多,所以效率低,而且当有多个最短距离时,不能够将所有符合条件的情况逐一列出。

最后,从这类问题解得趣味性、合理性进行了深入讨论,得到了“传教士与野蛮人渡河”,“印度夫妻渡河”等问题通用的模型,并将其进行了推广。

这也是本文的一大特色。

关键词渡河问题状态集合决策集合平面坐标dijkstra算法1 问题重述三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行。

随从们密约,在河的任意一岸,一旦随从的人数比商人多,就杀人越货.但是如何乘船渡河的大权掌握在商人们手中。

商人们怎样才能安全渡河呢?同时,推广到四名商人带四名随从又如何?2 问题分析安全渡河问题可以看成一个多步决策过程。

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

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

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

此类智力问题经过思考,可以拼凑出一个可行方案。

但是,我们现在希望能找到求解这类问题的规律性,并建立数学模型,用以解决更为广泛的问题。

3 模型假设及符号说明3.1 模型假设(1)每个商人和随从都会划船;(2)只有一条船,且每条船上最多只能乘坐两个人;(3)所有商人与随从之间没有矛盾,不会出现两人不愿意坐一条船的现象;(4)船在渡河的过程中不受外界环境的影响。

3.2 符号说明A初始状态下,商人和随从所在的一岸;B初始状态下,商人和随从欲到达的一岸;x第k次渡河前,A岸的商人数;ky第k次渡河前,A岸的随从数;kS渡河前A岸商人与随从数的状态;kS 渡河前A 岸商人与随从数的允许状态的集合;k u 第k 次渡河时,船上的乘坐商人数; k v 第k 次渡河时,船上的乘坐随从数; k d 第k 次渡河方案的决策;D 渡河方案的允许决策集合k D 第k 次状态的转移4 模型的建立与求解4.1 模型的建立根据题意,可以作出商人渡河初始状态的示意图:渡河目的:A ——>B (选择A 岸为参考点)记第k 次渡河前A 岸的商人数为k x ,随从数为k y ,1,2,,k m = ,且,0,1,2,3k k x y =将二维向量(,)k k k S x y =定义为状态,安全渡河条件下的状态集定义为允许状态集合,记为S ,因此有:{},y |0,3; y 0, 1, 2, 31;y 0, 12;y 0, 1,2S x x x x =======()或或 (1) 记第k 次渡河时,船上的乘坐商人数为k u ,随从数为k v ,将二维向量(,)k k k d u v =定义为第k 次渡河方案的决策,渡河方案的允许决策集合记为D 根据题意可知,船的容量是一定的,因此,得{}(,)|+1,2D u v u v == (2)因为当21k n =-时,船由A 岸驶向B 岸;当2k n =时,船由B 岸驶向A 岸。

所以状态k S 随着k d 的变化的规律为:1(1)k k k k S S d +=+- (3)这样,制定安全渡河方案归结为如下的多步决策问题:即:求决策(1,2,,)k d D k m ∈= ,使状态k S S ∈。

按照转移规律,由初始状态()13,3S =经有限m 步后到达状态1(0,0)m S +=。

4.2 模型的求解根据(1)(2)(3)式,通过利用matlab 编写一段程序来求解多步决策问题是可行的,但是当商人和随从数都不多的情况下还可以用平面坐标法解此模型更为方便。

接下来,我们先用平面坐标法求解此模型,最后再使用计算机仿真,对求解的结果进行验证,并给予推广。

4.2.1 平面坐标法设x 为商人数,y 为随从数。

在xoy 平面坐标系上作分析。

先标出此案的安全状态点。

起始点-----(3,3);最终点-----(0,0)即模型求解就是探求从状态(3,3)经过有限次转移之后到达状态(0,0)的方案。

设k D 为第k 次状态的转移,当21k n =-时,船由A 岸驶向B 岸,此时,x y 只能减少,不能增加。

故坐标点只能向左下方移动。

由于受船的容量的限制,x y +至多减少2,即至多只能向左下方移动两格。

如下图所示:从图中可以看出,在这种渡河方案中,时刻都能够确保“两岸安全”,不会出现随从们“杀人越货”。

4.2.2 计算机仿真通过利用matlab编写一段程序来求解这种多步决策问题[见附件:程序一],当我们将商人数与随从数以及船的容量按照题意输入时,便会得到商人们的渡河方案如下:表 1 4种可供商人选择的不同渡河方案经检验,结果与使用平面坐标法得到的结果完全一致。

通过计算机仿真,当题目中给定出任意数量的商人,随从,以及规定出任意船的容量,都可以判断出“商人们能否安全渡河?”以及解决“如果能,那么安全渡河的方案是什么?”的问题。

从而使这个模型更具有一定的推广价值。

5 模型的评价与改进5.1 模型的评价5.1.1 模型的优点(1)采用了较为成熟的数学理论建立模型,可行度比较高;(2)在讨论商人安全渡河的方案时,运用了图表,比较直观;(3)模型的求解运用了强大的matlab软件,结果可信度高,便于推广;(4)通过matlab程序,能判断出“当任意个商人﹑任意个随从﹑船的容量任意时,商人能否安全渡河?”及解决了“如果能,那么渡河方案又是什么?”的问题,使得所建模型更加全面。

5.1.2 模型的缺点(1)利用平面坐标法求解该模型时,出现了明显的遗漏,考虑的不够全面;(2)没有找到商人数﹑随从数及船的容量之间的数量关系;(3)没有考虑到实际生活中,在安全渡河的前提下,商人过河的优先级应高于随从。

5.2 模型的改进基于以上求解模型用到的方法,我们明显意识到了结果考虑到的不够全面。

为此,我们利用dijkstra算法,通过相应程序求解前面模型[见附件:程序二],得到最短路径的最优解。

但同时由于该算法遍历计算的节点很多,所以效率低。

而且当有多个最短距离时,不能够将所有符合条件的情况逐一列出。

综合以上的努力,我们与致力于研究出一套方案:即给出任意个商人与任意个随从以及船的容量任意的时候,都可以给出安全渡河的方案;并且在给出商人数、随从数、船的容量中任意两者,并要使其能够安全渡河情况下的第三者的取值范围,以及得到最优的渡河方案。

由于水平有限,我们只能提出这个美好的想法,用某种方法能把在所有安全状态集合和决策集合中,搜索出所有可能的解,从而从其中找出最优的解。

6 模型的推广“商人渡河”模型适合于解决很多问题,如“传教士与野蛮人渡河”,“印度夫妻渡河”等。

这些问题本质上都是相同或相似的,由此可见这个趣味问题流传的广泛性。

另外还有所谓“人狗鸡米过河”问题,也是颇有趣味的,人、狗、鸡、米均要过河,船需人划,而船上至多还可载一物,但若人不在时,狗会吃鸡,鸡会吃米,问如何设计安全过河方案。

我们完全可以仿照商人渡河问题建立一个多步决策模型,将上述算法稍作修改,就可以得到它的解。

这里就不再赘述了。

另外,用一定容积的若干油瓶倒出一定量的油的问题也属此类问题。

7 参考文献[1]数学建模案例分析白其峥主编北京:海洋出版社,2000[2]数模竞赛赛题简析与论文点评:西安交大近年参赛论文选编赫孝良等[选编] 西安:西安交通大学出版社,2002[3]百度百科文献访问日期 2011年8月25日[4]《数学模型精品课程》第四章/courses/sxmx/sm2/sm2252.htm网站制作日期2010年7月14日。

相关文档
最新文档