商人过河问题数学建模
数学建模:研究商人过河问题
数学建模实验一报告
实验题目:研究商人过河问题
一、实验目的:编写一个程序(可以是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 变化的规律是
数学建模:研究商人过河问题
数学建模实验一陈说之吉白夕凡创作
实验题目:研究商人过河问题
一、实验目的:编写一个法式(可以是C,C++或Mathlab )实现商人平安过河问题.
二、实验环境:Turbo c 2.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-+=-, 此式为状态转移律.制定
商人过河问题数学建模(最新整理)
作业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…..
综合(4)可得 和
(6)
k k x y ={}(,)|0,0,1,2,3,4k k k k k S x y x y ===还要考虑 (7)
商人过河问题数学建模
作业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~允许决策集合
数学建模案例作业
数学建模案例作业
作业1 商人过河问题
三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行(六个人都会划船)。随从们密谋,无论何时,一旦随从的人数比商人多,就杀人越货。但是如何乘船渡河的决定权掌握在商人手中。商人们怎样才能安全渡河?
示意图如下: 随从:
商人: 一、状态变量
一次决策),(k k k y x S = 3,2,1=k 表示第k 次渡河时,此岸的商人数,随从数. 最初 )3,3(0=S 且为整数)3,0(≤≤k k y x
)}0,0(),1,0(),2,0(),3,0(),0,1(),1,1(),2,1(),3,1(),0,2(),1,2(),2,2(),3,2(),0,3(),1,3(),2,3(),3,3{(=S
要安全过河,需保证彼岸此岸都安全,及随从数不能大于商人数,所以安全的情况有10种,即)}0,0(),1,0(),2,0(),3,0(),1,1(),2,2(),0,3(),1,3(),2,3(),3,3{(=S ② 二、决策变量
设),(k k k v u d =2,0(≤≤k k v u 且)21≤+≤k k v u 表示第k 次渡河时,船上的商人数和随从数 )}1,0(),0,1(),2,0(),1,1(),0,2{(=D
与状态变量相结合,安全的情况有三种,即 )}1,0(),2,0(),1,1{((=D ③ 三、状态转移方程
奇数次(此案到彼岸)k k k d S S -=+1 偶数次(彼岸到此案)k k k d S S +=+1 即k k k k d S S )1(1-+=+ ① 数学建模:
数学建模作业(商人过河问题)
数学建模作业(四)——商人过河问题
一.问题描述
有四名商人各带一名仆人过河,但船最多能载二人,商人已获得仆人的阴谋:在河的任一岸,只要仆人数超过商人数,仆人会将商人杀死并窃取财物且安排如何乘船的权力掌握在商人手中。试为商人制定一个安全过河的方案。
二.解决方案
用递归的源程序如下:
开始时商人,强盗所在的河的这边设为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;
【数学模型】商人们怎样过河?
问题引出
问题:三名商人各带一个随从过河,一只小
船只能容纳两个人,随从们约定,只要在河
的任何一岸,一旦随从人数多于商人人数就
杀人越货,但是商人们知道了他们的约定,
并且如何过河的大权掌握在商人们手中,商
人们该采取怎样的策略才能安全过河呢?
这次的问题是一个很经常遇到的过河问题,其实对于该类问题,我们经过逻辑思考就可以得到答案。但是通过数学模型的建立,我们可以得到一个通用的解答,并且通过计算机的计算我们可以大大扩大问题的规模。
问题分析
因为这个问题已经理想化了,所以我们无需对模型进行假设,该问题可以看作一个多步决策问题。
每一步,船由此岸划到彼岸或者由彼岸划回此岸,都要对船上的人员进行决策(此次渡河船上可以有几名商人和几名随从),在保证安全(两岸的随从都不比商人多)的前提下,在有限次的决策中使得所有人都到对岸去。
因此,我们要做的就是要确定每一步的决策,达到渡河的目标。
建立模型
记第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; 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}
商人过河问题数学建模
商人过河
一、问题重述
问题一: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) k
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}
商人过河数学模型
商人过河数学模型
专业信息与计算科学班级113010102
姓名罗彪
学号11301010229
一、问题重述
3名商人各带一名随从乘船渡河,一只小船只能容纳二人,由他们自己划行。随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货。但是如何乘船渡河的大权掌握在商人们手中。商人们怎样才能安全过河呢?
二、问题分析
商随过河问题可以视为一个多步决策过程,通过多次优化,最后获取一个全局最优的决策方案。对于每一步,即船由此岸驶向彼岸或由彼岸驶向此岸,都要对船上的人员作出决策,在保证两岸的商人数不少于随从数的前提下,在有限步内使全部人员过河。用状态变量表示某一岸的人员状况,决策变量表示船上的人员状况,可以找出状态随决策变化的规律,问题转化为在状态的允许变化范围内(即安全渡河条件),确定每一步的决策,达到安全渡河的目标。
三、模型假设
1.每个商人和随从都会划船;
2.只有一条船,且每条船上最多只能乘坐两个人;
3.所有商人与随从之间没有矛盾,不会出现两人不愿意坐一条船的现象;
4.船在渡河的过程中不受外界环境的影响。
四、模型的建立与求解 1.模型建立
k x ~第k 次渡河前此岸的商人数,k y ~第k 次渡河前此岸的随从数
k x , k y =0,1,2,3; k =1,2,… …
k S =(k x , k y , c k )~过程的状态,
其中k x , k y , c k 分别表示对应时刻此岸的商人,仆人数以及船的行进方向,其中c 取值1表示即将向彼岸运行,为0表示即将向此岸运行
S ~ 允许状态集合,S={(x , y )| x =0, y =0,1,2,3; x =3 ,y =0,1,2,3; x =y =1,2}
商人过河问题数学建模
作业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~允许决策集合
商人过河问题数学建模
作业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…..
商人渡河数学模型
商人渡河数学模型
1、商人渡河数学模型
商人渡河是一类有趣的动态规划问题,其本质是一类路径规划问题,用数学模型可以描述为:
假设有n种物品,体积大小分别为W1,W2,……,Wn,以及一艘能承重V的船,每次船只能装载一些物品,要求在尽可能少的船次内,将物品搬运到对岸。
令Xij表示第i次船运载物品的状态,其中0≤Xij≤1,Xij=1表示船上装有第j个物品,Xij=0表示船上没有第j个物品,那么商人渡河问题就可以用下面的数学模型表示:
目标函数:
(1) Min Z=X11+X12+……+Xin
约束条件:
(2) W1X11+W2X12+……+WnXin≤V
(3) X11+X12+……+Xin=1
(4) 0≤Xij≤1
其中,约束条件(2)表示第i次船运的负载不超过容量V,约束条件(3)表示每次船运必须装一些物品,约束条件(4)表示每次船运的物品的数量限制在0与1之间。
商人过河案例建模
商人过河
设有三名商人,各带一个随从,欲乘一小船渡河,小船只能容纳两人,须由他们自己划行。随从们密约,在河的任何一岸,一旦随从的人数比商人多,就杀人越货。而如何乘船渡河的大权掌握在商人们的手中。商人们怎样才能安全渡河呢?
因这已经是一个相当清晰的理想化问题,所以直接讨论其模型描述以及模型求解。这里将其描述为一个动态决策问题:
记第k次渡河前此岸的商人数为,随从数为, k=1,…,n。将二维向量定义为状态,安全渡河条件下的状态集合称为允许状态集合,记作S, 。
记第k次渡船上的商人数为,随从数为, k=1,…,n。将二维向量
定义为决策。考虑小船载人数的限制,应满足
,而称
为允许决策集合。
因为k为奇数时,船从此岸驶向彼岸;k为偶数时,船从彼岸驶回此岸,所以状态随决策的变化规律是(状态转移规律)。
求决策,使状态按照状态转移规律,由初始状态
经有限步n到达状态。
接下来讨论模型的求解,设是某个可行的渡河方案所对应的状态序列,若存在某,且同为奇数或同为偶数,满足
,则称所对应的渡河方案是可约的。这时
也是某个可行的渡河方案所对应的状态序列。显然,一个有效的渡河方案应当是不可约的。
设渡河已进行到第k步,为当前的状态,记
,,为保证构造的渡河方案不可约,则当前的决策除了应满足:
1),且当k为奇数时,,当k为偶数时,
;
还须满足:
2)当k为奇数时,;当k为偶数时,。
通过作图,可以得到两种不可约的渡河方案,如下图:
思考题:
(1)四名商人各带一名随从的情况(小船同前)。
(2)n名商人各带n名随从的情况(小船同前)。
简单数学建模实例
03.05.2020
A
5
建模实例
在xoy坐标系上画出方格,方格点上的 坐标同时也表示状态
s = ( x , y ). 允许状态集是沿方格线移动1或2格,k 为奇数时向左、下方移动,k为偶数时 向右、上方移动。 要确定一系列的dk使由s1=(3,3)经过那 些点最终移至原点(0,0)
用状态变量表示某一岸的人员状况,决策变量表示 船上的人员状况,可以找出状态随决策变化的规律。 问题转化为在状态的充许变化范围内,确定每一步 的决策,达到渡河的目标
03.05.2020
A
2
建模实例
模型的生成过成: 记第k次渡河前此岸的商人数为xk,随从数为yk, k=1,2,……,xk , yk =0,1,2,3, 将二维向量sk=(xk,yk)定义为状态,安全渡河 条件下的状态集称为允许状态集合,记作S, 不难写出
因为k为奇数时船由此岸驶向彼岸, k为偶数时船由彼岸驶回此岸,所以 状态sk 随决策dk变化的规律是:
sk+1 = sk + (-1) k d k
03.05.2020
A
4
建模实例
求 决 策 dk∈D (k=1,2,……n) , 使 状 态 sk∈S , 按 照 转 移 规 律 , 由 初 始 状 态 s1=(3,3)经有限n步后到达状态sn+1=(0,0). 模型求解
根据生活中的数学实际问题,分类建模
根据生活中的数学实际问题,分类建模
例2 商人怎样安全过河?
三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自已划行,随从们密约,在河的一岸,一旦随从的人数比商人多,就杀人越货,但是如何乘船渡河大权掌握在商人手中,商人们怎样才能安全渡河呢?
这里是要用数学方法求解,一是为了给出建模的示例,二是因为这类模型可以解决相当广泛的一类问题,比逻辑思索的结果容易推广。
由于问题已经理想化了,所以不必再作假设。安全渡河问题可以视为一个多步决策过程。每一步即船由此岸驶向彼岸或从彼岸驶回此岸,都要对船上的人员作出决策,在保证安全的前题下,在有限步内使人员全部过河,
用状态变量表示某一岸的人员状况,决策变量表示船上的人员状况,可以找出状态随决策变化的规律。问题转化为在状态的充许变化范围内,确定每一步的决策,达到渡河的目标
模型的过成:
记第k次渡河前此岸的商人数为xk随从数为yk, k=1,2,……,xk , yk =0,1,2,3,将二维向量sk=(xk,yk)定义为状态,
安全渡河条件下的状态集称为允许状态集合,记作S,不难写出
S={(x,y)|x=0, y=0, 1, 2, 3; x=y=1,2} - (1)
记第k次渡船上的商人数为uk ,随从数为vk ,将二维向量dk = (uk,vk)定义为决策,允许决集合记作D,由小船的容量可知
D={(u,v)| u + v = 1 , 2 }- (2)
因为k为奇数时船由此岸驶向彼岸,k为奇数时船由彼岸驶回此岸,所以状态sk
随决策dk变化的规律是:
sk+1 = sk + (-1) k d k - (3)
(完整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~允许决策集合
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业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)可得
44k
k 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,4k
k 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)
时,可以认为完成渡河。
因为移动的格数小于等于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知,当小船最多载三个人的时候,最多五名商人各带一个随从可以过河。
五、模型的检验与评价
由少数人的过河问题推广到了更多数人的过河问题,使得问题变得明了有规律。