人猫鸡米渡河问题的数学模型

合集下载

人猫鸡米渡河问题的数学模型

人猫鸡米渡河问题的数学模型

重庆大学本科生数学模型作业报告人猫鸡米渡河问题的数学模型组员:唐新赵广志<指导教师:黄光辉人猫鸡米渡河问题的数学模型一、摘要:本文主要对数学建模基础模型跟“商人过河”类似简单问题:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

试设计一个安全过河方案,建立数学模型,并使渡河次数尽量地少。

模仿“商人过河”的模型设计出新的数学模型。

二、问题的重述人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

试设计一个安全过河方案,并使渡河次数尽量地少。

关键词:人不在场时猫要吃鸡、鸡要吃米,船需人划,穷举法三、模型假设不考虑外界其他影响,只考虑问题所述的条件:1、船除需要人划之外,至多能载猫、鸡、米三者之一2、当人不在场时猫要吃鸡、鸡要吃米四、符号说明五、问题分析安全过河问题可以看着是一个多部决策的过程。

每作出一步决策,都必须保证船、人、猫、鸡、米能满足题设条件。

否则,不仅难以实现过河的最优化,而且还容易出现事物的不安全性。

因此,在保证安全的前提下,即猫、鸡在一起时,人要在场,鸡、米在一起时,人也要在场,用状态变量s 表示某一岸的状况,决策变量d 表示是乘车方案,我们容易得到s 和d 的关系,其中问题的转化要在允许变化范围内,确定每一步的决策关系,从而达到渡河的最优目标。

六、模型建立与求解Ⅰ. 模型的建立:人、猫、鸡、米分别记为4,3,2,1=i ,当i 在此岸时记1=i x ,否则记0=i x ,则此岸的状态可用()4321,,,x x x x s =表示。

记s 的反状态为()4321'1,1,1,1x x x x s ----=,允许状态集合为()()()()(){}0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1=S (1) 以及他们的5个反状态。

决策为乘船方案,记作()4321,,,u u u u d =,当i 在船上时记1=i u ,否则记0=i u ,允许决策集合为()()()(){}0,0,0,1,1,0,0,1,0,1,0,1,0,0,1,1=D (2)记第k 次渡河前此岸的状态为k s ,第k 次渡河的决策为k d ,则状态转移律为()kd k k s k s 11-+=+, (3)设计安全过河方案归结为求决策序列,,,,21D d d d n ∈ ,使状态S s k ∈按状态转移律由初始状态()1,1,1,11=s 经n 步达到()0,0,0,01=+n s 。

人、猫、鸡、米过河的方案

人、猫、鸡、米过河的方案

数学建模作业1.招出安全可行的人、猫、鸡、米过河的方案。

2.探究鱼体重与身长、胸围的关系。

3.速度为V 的风吹在迎风面积为S 的风车上,空气密度为ρ。

用量纲分析方法确定风车获得的功率P 与V 、S 、ρ的关系。

1 解:(1)问题分析。

人不在时,猫和鸡、鸡和米任意一对都不能同时存在河的同岸。

(2)符号说明。

设人、猫、鸡、米分别对应1、2、3、4, Xi=1 为在河岸。

Xi=0 为在河对岸。

S=(X1,X2,X3,X4) 为河岸情况。

s=(1-X1.1-X2,1-X3,1-X4) 为河对岸情况。

Ai=1 为在船上。

Ai=0 为不在船上。

D=(A1,A2,A3,A4) 为渡河方式。

Sn 第n 次渡河后河岸情况。

Dn 第n 次渡河方式。

(3)建立模型。

由问题分析、符号说明知:两岸允许的状态为:河岸 河对岸 (1,1,1,1) (0,0,0,0) (1,1,1,0) (0,0,0,1) (1,1,0,1) (0,0,1,0) (1,0,1,1) (0,1,0,0) 可选择的渡河方式有:D={(1,1,0,0),(1,0,1,0),(1,0,0,1),(1,0,0,0)} 由状态转移律可得:DS S nnn n )1(1-+=+所以,安全的渡河方式即为在允许的渡河方案和河岸情况下,使得Sn 由初状态S1=(1,1,1,1)经过n 次得到Sn 1+=(0,0,0,0)(4)模型求解。

得到最优可行方案为:(1,1,1,1)-(1,0,1,0)+(1,0,0,0)-(1,1,0,0)+(1,0,1,0)-(1,0,0,1)+(1,0,0,0)-(1,0,1,0)=(0,0,0,0)最优方案需要7次渡河。

因此,解决问题的最优方案是:人先带鸡过河,然后回来带米过河,把鸡带回来,再把猫带到河对岸,最后回来把鸡带到河对岸。

2.解:(1)问题分析。

鱼的体重不能单独由身长或胸围决定,应由两者综合影响,故应在三者之间建立模型关系。

人猫鸡米过河问题[3]

人猫鸡米过河问题[3]

安全过河问题摘要:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

做出怎样的决策才能安全渡河且渡河次数最少。

问题的重述:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

试设计一个安全过河方案,并使渡河次数尽量地少。

模型假设:不考虑外界其他影响,只考虑问题所述的条件。

符号说明:i=1,2,3,4分别代表人,猫,鸡,米。

1=i x 在此岸,0=i x 在对岸,()4321,,,x x x x s =此岸状态,()4321'1,1,1,1x x x x s ----=对岸状态,()4321,,,u u u u d =乘船方案,1=i u 代表 i 在船上时,0=i u 代表i 不在船上问题分析:安全过河问题可以视为是一个多步决策过程。

每作出一步决策,都必须保证船、人、猫、鸡、米能满足题设条件。

否则,不仅难以实现过河的最优化,而且还容易出现事物的不安全性。

因此,在保证安全的前提下,即猫、鸡在一起时,人要在场,鸡、米在一起时,人也要在场,用状态变量s 表示某一岸的状况,决策变量d 表示是乘车方案,我们容易得到s 和d 的关系,其中问题的转化要在允许变化范围内,确定每一步的决策关系,从而达到渡河的最优目标。

模型建立与求解: 一. 模型的建立:人、猫、鸡、米分别记为4,3,2,1=i ,当i 在此岸时记1=i x ,否则记0=i x ,则此岸的状态可用()4321,,,x x x x s =表示。

记s 的反状态为()4321'1,1,1,1x x x x s ----=,允许状态集合为 ()()()()(){}0,1,0,1,1,1,0,1,1,0,1,1,0,1,1,1,1,1,1,1=S (1) 以及他们的5个反状态决策为乘船方案,记作()4321,,,u u u u d =,当i 在船上时记1=i u ,否则记0=i u ,允许决策集合为()()()(){}0,0,0,1,1,0,0,1,0,1,0,1,0,0,1,1=D (2)因为k 为奇数时船从此案驶向彼岸,k 为偶数时船由彼岸驶向此岸,所以状态ks随决策k d 变化的规律为()kd kk s k s11-+=+, (3) 设计安全过河方案归结为求决策,,,,21D d d d n ∈ ,使状态S s k ∈按转移律由初始状态()1,1,1,11=s 经有限步n 到达状态()0,0,0,01=+n s 。

2012-03-21-数学建模b实验题目人猫鸡米

2012-03-21-数学建模b实验题目人猫鸡米

人、猫、鸡、米安全过河问题摘要研究目的:本文主要对数学建模基础模型跟“商人过河”类似简单问题:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

试设计一个过河方案,建立数学模型,并使渡河次数尽量地少?模仿“商人过河”的模型设计出新的数学模型。

方法:用穷举法算出,用图形表述出过程及结果。

一、问题的提出模仿”商人过河”模型,做下面游戏:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

设计一个过河方案,建立数学模型,并使渡河次数尽量地少。

二、问题的分析因为这是个简单问题,研究对象少所以可以用穷举法,简单运算和图论即可解题。

从状态(1,1,1,1)经过奇数次运算变为状态(0,0,0,0)的状态转移过程为什么是奇数次?我们注意到过河有两种,奇数次的为从南岸到北岸,而偶数次的为北岸回到南岸,因此得到下述转移方程,所以最后应该是事件结束时状态转移数为奇数次。

三、基本假设:3,1假设船,划船的人外至多能载猫、鸡、米三者之一。

3,2当人不在场时,猫一定会吃鸡、鸡一定会吃米。

四、定义符号说明:我们将人,狗,鸡,米依次用四维向量中的分量表示,当一物在此岸时,相应分量记为1,在彼岸时记为0.如向量(1,0,1,0)表示人和鸡在此案,狗和米在彼岸,并将这些向量称为状态向量。

五、模型的建立:我们将人,狗,鸡,米依次用四维向量中的分量表示,!即(人,狗,鸡,米)。

5.1 状态向量:各分量取1表示南岸的状态,例如(1,1,1,1)表示它们都在南岸,(0,1,1,0)表示狗,鸡在南岸,人,米在北岸;由于问题中的限制条件,有些状态是允许的,有些状态是不允许的。

凡问题可以允许存在的状态称为可取状态。

对本问题来说,可取状态向量可以用穷举法列出来:(1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0);(,0,0,0,0),(0,0,0,1),(0,0,1,0),(0,1,0,0),(0,1,0,1).5.2 运算向量:将船的一次运载也可用向量表示,即运算向量。

数学模型试验

数学模型试验

重 庆 交 通 大 学 学 生 实 验 报 告 实验课程名称 数学建模B 开课实验室 数学实验室 学 院 ***** 院 10 级 水利 专业班 1 班 学 生 姓 名 倪** 学 号 ************ 开 课 时 间 2011 至 2012 学年第 2 学期实验一 人、猫、鸡、米安全过河问题一、摘要.本文研究的的是人带着猫、鸡、米过河问题,船除人划以外,至多可以载猫、鸡、米三者之一,但当人不在场时猫要吃鸡、鸡要吃米、需要设计一个安全过河方案,并使渡河次数尽量减少。

二、问题的重述人带着猫、鸡、米过河问题,船除人划以外,至多可以载猫、鸡、米三者之一,但当人不在场,时猫要吃鸡、鸡要吃米。

需要设计一个安全过河方案,并使渡河次数尽量减少。

三、基本假设与符号说明(一)基本假设1、人必须划船。

2、船载猫、鸡、米三者之一。

3、当人不在场,时猫要吃鸡、鸡要吃米。

(二)符号说明我们将人,狗,鸡,米依次用四维向量1234(,,,)s x x x x 中的分量表示,当一物在此岸时,相应分量记为1i x =,在彼岸时记为0i x =.如向量(1,1,1,1)表示人,猫,鸡,米四者都在此岸,彼岸什么也没有。

四、问题的分析这个问题与商人怎样安全过河一样,问题比较简单,研究对象少。

所以可以用穷举法,简单运算和图论即可解题。

五、模型的建立人、猫、鸡、米分别记为i=1、2、3、4.当在此岸是记为1i x =,在彼岸是记为0i x =,因此,在此岸的状态为1234(,,,)s x x x x =,在彼岸的状态为'1234(1,1,1,1)s x x x x =----,允许状态集合为{(1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0)}以及它的5个反状态。

决策为乘船方案:记为1234(,,,)d u u u u =当i 在船上是记为1i u =,否则即为0i u =,允许决策集合为{(1,1,0,0),(1,0,1,0),(1,0,0,1),(1,0,0,0)}。

数学模型试验

数学模型试验

数学模型试验 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN重庆交通大学学生实验报告实验课程名称数学建模B开课实验室数学实验室学院 ***** 院 10 级水利专业班 1 班学生姓名倪** 学号 ************开课时间 2011 至 2012 学年第 2 学期实验一 人、猫、鸡、米安全过河问题一、摘要.本文研究的的是人带着猫、鸡、米过河问题,船除人划以外,至多可以载猫、鸡、米三者之一,但当人不在场时猫要吃鸡、鸡要吃米、需要设计一个安全过河方案,并使渡河次数尽量减少。

二、问题的重述人带着猫、鸡、米过河问题,船除人划以外,至多可以载猫、鸡、米三者之一,但当人不在场,时猫要吃鸡、鸡要吃米。

需要设计一个安全过河方案,并使渡河次数尽量减少。

三、基本假设与符号说明(一)基本假设1、人必须划船。

2、船载猫、鸡、米三者之一。

3、当人不在场,时猫要吃鸡、鸡要吃米。

(二)符号说明我们将人,狗,鸡,米依次用四维向量1234(,,,)s x x x x =中的分量表示,当一物在此岸时,相应分量记为1i x =,在彼岸时记为0i x =.如向量(1,1,1,1)表示人,猫,鸡,米四者都在此岸,彼岸什么也没有。

四、问题的分析这个问题与商人怎样安全过河一样,问题比较简单,研究对象少。

所以可以用穷举法,简单运算和图论即可解题。

五、模型的建立人、猫、鸡、米分别记为i=1、2、3、4.当在此岸是记为1i x =,在彼岸是记为0i x =,因此,在此岸的状态为1234(,,,)s x x x x =,在彼岸的状态为'1234(1,1,1,1)s x x x x =----,允许状态集合为{(1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0)}以及它的5个反状态。

决策为乘船方案:记为1234(,,,)d u u u u =当i 在船上是记为1i u =,否则即为0i u =,允许决策集合为{(1,1,0,0),(1,0,1,0),(1,0,0,1),(1,0,0,0)}。

安全过河问题

安全过河问题

安全过河
一、问题提出
人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

试设计一个安全过河方案,并使渡河次数尽可能少。

二、模型假设
不考虑外界其他影响,只考虑问题所述的条件。

符号说明:
三、模型的建立
人、猫、鸡、米分别记为i=1,2,3,4,当i在此岸时记为x i=1,否则记x i=0,则此岸的状态可用S=(x,1x2,x3,x4)表示。

记s的反状态为s'=(1-x,11-x2,1-x3,1-x4),允许状态集合为D={(1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0)} (1)
以及他们的5个反状态决策为乘船方案,记作d=(u,1u2,u3,u4),当i在船上时记作u i=1,否则记为u i=0,允许决策集合为D={(1,1,0,0),(1,01,0),(1,0,0,1),(1,0,0,0)} (2)
记第k次渡河前的此岸的状态为s k,第k次渡河的决策为d k,则状态转移律为s k1+=s k+()1-k d k,(3)
设计安全过河方案归结为求决策序列d1,d2,···,d k∈D,使状态s k∈S按状态转移律由初始状态s1=(1,1,1,1)经n步达到s n1+=(0,0,0,0)。

四、模型的求解
从而我们得到一个可行的方案如下:
因此,该问题的最优方案是:1、人先带鸡过河,然后人再回来,把米带过河,然后把鸡运回河岸,人再把猫带过河,最后人回来把鸡带过去。

人猫鸡米渡河问题的matlab求解法

人猫鸡米渡河问题的matlab求解法

摘要:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米,试通过数学建模,运用计算机给出一个安全渡河方案,并使渡河次数尽量少。

一、问题分析:此问题是从状态向量A (1,1,1,1)经过奇数次运算向量B 变为状态向量A (0,0,0,0)的状态。

转移过程为什么是奇数次?我们注意到过河有两种,奇数次的为从左岸到右岸,而偶数的为右岸回到左岸,因此得到下述转移过程,所以最后应该是过河完成时状态转移数为奇数次。

二、模型假设:1.假设船除了载人之外,至多只能载猫、鸡、米三者之一。

2.当人不在场时,猫一定会吃鸡、鸡一定会吃米。

我们将人,猫,鸡,米依次用四维向量中的分量表示,当一物在左岸时,相应的分量记为1,在右岸时记为0.如向量(1,0,1,0)表示人和鸡在左岸,猫和米在右岸,并将这些向量称为状态向量。

例如(1,1,1,1)表示它们都在左岸,(0,1,1,0)表示猫,鸡在左岸,人,米在右岸;由于问题中的限制条件,有些状态是允许的,有些状态是不允许的。

凡问题可以允许存在的状态称为可取状态。

A 向量定义为状态变量。

比如()11,0,1,0A 是一个可取状态向量,但()20,0,1,1A 是一个不可取状态向量。

此外,B 向量定义为运载变量。

把每运载一次也用一个四维向量来表示。

如()11,1,0,0B 表示人和猫在船上,而鸡和米不在船上,这自然是可取的运载,因为船可载两物,而()21,0,1,1B 则是不可取运载,依此规律类推。

三、模型建立:由上可知,可取状态向量A共有10个,即:()0,0,0,01,1,1,1()()0,0,0,11,1,1,0()()0,0,1,01,1,0,1()()0,1,0,01,0,1,1()()1,0,1,0()0,1,0,1可取运载B有4个:(1,1,0,0)、(1,0,1,0)、(1,0,0,1)、(1,0,0,0)。

四、算法设计:1、规定A和B的每一分量相加时按二进制法则进行,这样一次渡河就是一个可取状态和一个可取运载相加,在判断和向量是否属于可取状态即可。

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

人猫鸡米渡河问题的数学模型摘要:人带着猫、鸡、米过河,从左岸到右岸,船除了需要人划之外(船除了要载人外),只能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

本文将设计一个安全过河方案,使渡河次数尽量地少。

模仿“商人过河”的模型设计出新的数学模型。

关键字:穷举法,Matlab运算求解。

一、问题的提出课本P19.T5:模仿“商人过河”模型,做下面游戏:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。

设计一个过河方案,建立数学模型,并使渡河次数尽量地少。

二、问题的分析因为这是个简单问题,研究对象少,所以可以用穷举法,简单运算即可解题。

此问题是从状态向量A(1,1,1,1)经过奇数次运算向量B变为状态向量A(0,0,0,0)的状态。

转移过程为什么是奇数次?我们注意到过河有两种,奇数次的为从左岸到右岸,而偶数的为右岸回到左岸,因此得到下述转移过程,所以最后应该是过河完成时状态转移数为奇数次。

三、问题的假设1.1:假设船除了载人之外,至多只能载猫、鸡、米三者之一。

1.2:当人不在场时,猫一定会吃鸡、鸡一定会吃米。

四、定义符号说明:我们将人,猫,鸡,米依次用四维向量中的分量表示,当一物在左岸时,相应的分量记为1,在右岸时记为0.如向量(1,0,1,0)表示人和鸡在左岸,猫和米在右岸,并将这些向量称为状态向量。

例如(1,1,1,1)表示它们都在左岸,(0,1,1,0)表示猫,鸡在左岸,人,米在右岸;由于问题中的限制条件,有些状态是允许的,有些状态是不允许的。

凡问题可以允许存在的状态称为可取状态。

A 向量定义为状态变量。

比如()11,0,1,0A 是一个可取状态向量,但()20,0,1,1A 是一个不可取状态向量。

此外,B 向量定义为运载变量。

把每运载一次也用一个四维向量来表示。

如()11,1,0,0B 表示人和猫在船上,而鸡和米不在船上,这自然是可取的运载,因为船可载两物,而()21,0,1,1B 则是不可取运载,依此规律类推。

五、模型的建立对于这个问题我们用穷举的方法来解决,首先将此问题化为状态转移问题来解决。

对本问题来说:5.1、 可取状态向量A 共有10个,可以用穷举法列出来:()1,1,1,1 ()0,0,0,0()1,1,1,0 ()0,0,0,1()1,1,0,1 ()0,0,1,0()1,0,1,1 ()0,1,0,0()1,0,1,0 ()0,1,0,1右边5个正好是左边5个的相反状态。

5.2、 可取运载B 共有4个:()1,1,0,0 ()1,0,1,0()1,0,0,1 ()1,0,0,05.3、可取运算:规定A 与B 相加时对每一分量按二进制法则(异或运算)进行()000,10011,110+=+=+=+=。

这样,一次渡河就是一个可取状态向量与一个可取运载向量相加,可取状态经过加法运算仍是一个可取状态,这种运算称为可取运算。

在上述规定下,问题转化为:从初始状态()1,1,1,1至少经过多少次(奇数次)可取运算才能转化为状态()0,0,0,0。

如果一个状态是可取的就打∨,否则就打⨯,虽然可取但已重复就打∧,于是问题可用穷举法解答如下:1)()()()()()()()()()1,0,1,00,1,0,11,1,0,00,0,1,11,1,1,11,0,0,10,1,1,01,0,0,00,1,1,1∨⎧⎧⎪⎪⨯⎪⎪+→⎨⎨⨯⎪⎪⎪⎪⨯⎩⎩(2)()()()()()()()()()1,0,1,01,1,1,11,1,0,01,0,1,10,1,0,11,0,0,11,1,0,01,0,0,01,1,0,1∧⎧⎧⎪⎪⨯⎪⎪+→⎨⎨⨯⎪⎪⎪⎪∨⎩⎩(3)()()()()()()()()()1,0,1,00,1,1,11,1,0,00,0,0,11,1,0,11,0,0,10,1,0,01,0,0,00,1,0,1⨯⎧⎧⎪⎪∨⎪⎪+→⎨⎨∨⎪⎪⎪⎪∧⎩⎩ (4)()()()()()()()()()11,0,1,01,0,1,11,1,0,01,1,0,10,0,0,11,0,0,11,0,0,01,0,0,01,0,0,1∨⎧⎧⎪⎪∧⎪⎪+→⎨⎨⨯⎪⎪⎪⎪⨯⎩⎩ (4)()()()()()()()()()21,0,1,01,1,1,01,1,0,01,0,0,00,1,0,01,0,0,11,1,0,11,0,0,01,1,0,0∨⎧⎧⎪⎪⨯⎪⎪+→⎨⎨∧⎪⎪⎪⎪⨯⎩⎩ (5) (5)(6)()()()()()()()()()1,0,1,01,0,0,01,1,0,01,1,1,00,0,1,01,0,0,11,0,1,11,0,0,01,0,1,0⨯⎧⎧⎪⎪∧⎪⎪+→⎨⎨∧⎪⎪⎪⎪∨⎩⎩ (7)()()()()()()()()()1,0,1,00,0,0,01,1,0,00,1,1,01,0,1,01,0,0,10,0,1,11,0,0,00,0,1,0∨⎧⎧⎪⎪⨯⎪⎪+→⎨⎨⨯⎪⎪⎪⎪∧⎩⎩ 第7步已经出现了()0,0,0,0状态,说明经7次运载即可,其过程为:()()()()()()(),,,,→→→→→→→去回去回去回去人鸡人人猫(或米)人,鸡人米(或猫)人人鸡 因此,该问题的最优方案有2种:1、人先带鸡过河,然后人再回来,把米带过河,然后把鸡运回河岸,人再把猫带过河,最后人回来把鸡带过去。

2、人先带鸡过河,然后人再回来,把猫带过河,然后把鸡运回河岸,人再把米带过河,最后人回来把鸡带过去。

7.1、优点:本算法将研究对象用四维向量中的分量用0,1表示,运用穷举法找出所有可取状态向量再用一些基础可取运算方法将结果列出来再以图形表示出来。

模型简单,切合实际,易于理解,整个过程易懂合理。

7.2、缺点:由于问题的求解没有使用LINGO,LINDO或MATLAB软件,当状态和决策过多时,采用上述方法求解显得繁琐,容易出错,所以下面给出此问题的matlab求解过程。

7.3、推广:正如课本上的商人们安全过河问题,当商人和随从人数增加或小船的容量加大时,靠逻辑思考就有些困难了,而适当地设置状态和决策,确定状态转移率,建立多步决策模型,仍可方便有效地求解此类型问题。

八、mathlab求解过程8.1、模型假设与建立:8.1.1、由上可知,可取状态向量A共有10个,即:()0,0,0,01,1,1,1()()0,0,0,11,1,1,0()()1,1,0,1()0,0,1,0()0,1,0,01,0,1,1()()0,1,0,11,0,1,0()8.1.2、可取运载B有4个:(1,1,0,0)、(1,0,1,0)、(1,0,0,1)、(1,0,0,0)。

8.2、算法设计:8.2.1、规定A和B的每一分量相加时按二进制法则进行,这样一次渡河就是一个可取状态和一个可取运载相加,在判断和向量是否属于可取状态即可。

8.2.2、可以将可取状态及可取运载分别编成矩阵。

共分为五个m文件,一个主文件xduhe.m数,四个子文件分别为:8.2.2.1、duhe(L,B,M,s)函数:用来实现渡河总思路。

思路为:将起始矩阵A分别与可取运载相加(使用二进制法则),判断相加后的矩阵C是否是(0,0,0,0),如果是,则渡河成功。

否则,用fuhe(C,M) 函数判断C是否是可取状态,如果是,则打印并将C与初始矩阵合并成新矩阵,继续调用duhe.m函数。

8.2.2.2、fuhe(C,M)函数:判断和矩阵C是否属于矩阵M,如果是,则返回1,否则返回0.8.2.2.3、Panduan(S)函数:判断S矩阵中是否有两个相同的状态,即行向量。

如果有,则返回0,否则返回1.8.2.2.4、print(K,C,s)函数:打印相应的状态。

8.3、程序代码:8.3.1、xduhe.m文件:clear;clc;A=[1,1,1,1];B=[1,0,1,0;1,1,0,0;1,0,0,1;1,0,0,0];M=[1,1,1,0;0,0,0,1;1,1,0,1;0,0,1,0;1,0,1,1;0,1,0,0;1,0,1,0;0,1,0,1];duhe(A,B,M,1);8.3.2、duhe.m文件:function duhe(L,B,M,s);[h,l]=size(L);for k=s:hfor i=1:4C=mod(L(k,:)+B(i,:),2);if C==[0,0,0,0]print(B(i,:),C,s);fprintf('渡河成功\n\n');break;else if fuhe(C,M)==1print(B(i,:),C,s);S=[L;C];if Panduan(S)==1duhe(S,B,M,s+1);elsefprintf('此渡河方案不可行\n\n');endendendendend8.3.3、fuhe.m文件:function y=fuhe(C,M)y=0;for i=1:8if(C==M(i,:))y=1;break;endend8.3.4、Panduan.m文件:function z=Panduan(S)z=1;[m,n]=size(S);for p=1:mfor q=(p+1):mif S(p,:)-S(q,:)==[0,0,0,0]z=0;break;endendend8.3.5、print.m文件:function print(K,C,s)fprintf('第%d次渡河:',s);if K(1)==1fprintf('人, ');endif K(2)==1fprintf('猫, ');endif K(3)==1fprintf('鸡, ');endif K(4)==1fprintf('米, ');endif C(1)==0fprintf('从左岸到达右岸\n'); elsefprintf('从右岸回到左岸\n'); end8.4、模型结论在matlab中运行,结果如下:从运行结果可以看出,共有两种运送方案:1、人先带鸡过河,然后人再回来,把米带过河,然后把鸡运回河岸,人再把猫带过河,最后人回来把鸡带过去。

2、人先带鸡过河,然后人再回来,把猫带过河,然后把鸡运回河岸,人再把米带过河,最后人回来把鸡带过去。

8.5、收获与不足:复习和加深了对matlab的学习,见识了MATLAB 7.10.0(R2010a)的厉害,引发了我对数学建模的强大兴趣。

而且,利用 MATLAB可以非常容易而且很直观地得出问题的解决方案,从而在不断深化对问题认识的同时,把问题普遍化。

但是这个问题的求解过程是请教了师姐才得以完成的。

相关文档
最新文档