人猫鸡米渡河问题的数学模型
人猫鸡米渡河问题的数学模型
![人猫鸡米渡河问题的数学模型](https://img.taocdn.com/s3/m/152579eabd64783e08122b4f.png)
重庆大学本科生数学模型作业报告人猫鸡米渡河问题的数学模型组员:唐新赵广志<指导教师:黄光辉人猫鸡米渡河问题的数学模型一、摘要:本文主要对数学建模基础模型跟“商人过河”类似简单问题:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
试设计一个安全过河方案,建立数学模型,并使渡河次数尽量地少。
模仿“商人过河”的模型设计出新的数学模型。
二、问题的重述人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
试设计一个安全过河方案,并使渡河次数尽量地少。
关键词:人不在场时猫要吃鸡、鸡要吃米,船需人划,穷举法三、模型假设不考虑外界其他影响,只考虑问题所述的条件: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 。
人、猫、鸡、米过河的方案
![人、猫、鸡、米过河的方案](https://img.taocdn.com/s3/m/a6d0b846f7ec4afe04a1df1b.png)
数学建模作业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]](https://img.taocdn.com/s3/m/1d94abe95ef7ba0d4a733b08.png)
安全过河问题摘要:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
做出怎样的决策才能安全渡河且渡河次数最少。
问题的重述:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
试设计一个安全过河方案,并使渡河次数尽量地少。
模型假设:不考虑外界其他影响,只考虑问题所述的条件。
符号说明: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实验题目人猫鸡米](https://img.taocdn.com/s3/m/eda7b337bdd126fff705cc1755270722192e596c.png)
人、猫、鸡、米安全过河问题摘要研究目的:本文主要对数学建模基础模型跟“商人过河”类似简单问题:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
试设计一个过河方案,建立数学模型,并使渡河次数尽量地少?模仿“商人过河”的模型设计出新的数学模型。
方法:用穷举法算出,用图形表述出过程及结果。
一、问题的提出模仿”商人过河”模型,做下面游戏:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
设计一个过河方案,建立数学模型,并使渡河次数尽量地少。
二、问题的分析因为这是个简单问题,研究对象少所以可以用穷举法,简单运算和图论即可解题。
从状态(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 运算向量:将船的一次运载也可用向量表示,即运算向量。
数学模型试验
![数学模型试验](https://img.taocdn.com/s3/m/2aa4011027d3240c8547ef42.png)
重 庆 交 通 大 学 学 生 实 验 报 告 实验课程名称 数学建模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)}。
数学模型试验
![数学模型试验](https://img.taocdn.com/s3/m/bf6046a0bb4cf7ec4afed0bd.png)
数学模型试验 -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)}。
安全过河问题
![安全过河问题](https://img.taocdn.com/s3/m/45182047be1e650e52ea9924.png)
安全过河
一、问题提出
人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
试设计一个安全过河方案,并使渡河次数尽可能少。
二、模型假设
不考虑外界其他影响,只考虑问题所述的条件。
符号说明:
三、模型的建立
人、猫、鸡、米分别记为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求解法](https://img.taocdn.com/s3/m/2f1c5545cf84b9d528ea7a16.png)
摘要:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米,试通过数学建模,运用计算机给出一个安全渡河方案,并使渡河次数尽量少。
一、问题分析:此问题是从状态向量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的每一分量相加时按二进制法则进行,这样一次渡河就是一个可取状态和一个可取运载相加,在判断和向量是否属于可取状态即可。
人猫鸡米过河模型
![人猫鸡米过河模型](https://img.taocdn.com/s3/m/fa51b46916fc700abb68fcd2.png)
人猫鸡米过河模型人、鸡、米、猫过河模型摘要研究目的:本文主要对数学建模基础模型跟“商人过河”类似简单问题:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
试设计一个过河方案,建立数学模型,并使渡河次数尽量地少?模仿“商人过河”的模型设计出新的数学模型。
关键词:过河模型、模仿、商人过河一.问题的提出模仿“商人过河”模型,做下面游戏:人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
设计一个过河方案,建立数学模型,并使渡河次数尽量地少。
二.模型的假设与符号说明假设:1、假设船,划船的人外至多能载猫、鸡、米三者之一。
2、当人不在场时,猫一定会吃鸡,鸡一定会吃米。
3、不考虑外界其他影响。
符号说明三、问题分析考虑到猫不能和鸡在一起,鸡不能和米在一起这个因素人每次只能带一样过去,且还得开船。
四、模型建立与求解Ⅰ. 模型的建立:人、猫、鸡、米分别记为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,,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 。
人、猫、鸡、米安全过河问题
![人、猫、鸡、米安全过河问题](https://img.taocdn.com/s3/m/67fef33431126edb6f1a10f9.png)
= +
由于最终决策为船从此岸划向彼岸,所以状态转移次数为奇数。一次过河就是一次状态和决策的加法,在加法运算中对每一分量采用二进制,即:0+0=0, 1+0=1, 0+1=1, 1+1=0。于是,人,猫,鸡,米过河问题就转化为:找出从状态(1,1,1,1)经过奇数次决策变为状态(0,0,0,0)的状态转移过程。
记第K次渡船运载的人, 猫, 鸡, 米的情况为 , 也可以用一个四维向量来表示,并将 定义为决策。当一物在船上时相应分量记为1,否则记为0,如(1,1,0,0)表示人和狗在船上,即人带狗过河。本问题的运算向量共有四个,即允许决策集合为:
D={(1, 1, 0, 0),(1, 0, 1, 0),(1, 0, 0, 1),(1, 0, 0, 0)}
过河的方式有两种过河次数为奇数时船从此岸划向彼岸过河次数为偶数时船从彼岸划向此岸所以状态随决策变化的规律为由于最终决策为船从此岸划向彼岸所以状态转移次数为奇数
人、猫、鸡、米安全过河问题
陈波
[摘要]:本文主要对人、猫、鸡、米安全过河问题,参考“商人过河”问题的解决方法,建立类似的状态转移模型,并利用穷举法和图示法对所建立的模型进行了求解。
因为这个问题简单,研究象少,所以可以用穷举法,简单运算和图论即可解题。
下面我们用图论方法解决这个问题,我们把这十个允许状态分别列出,当且仅当某个允许状态经过决策而仍为可取状态,就连一条线,从而构成图一所示。经过数次互相转换后出现(0,0,0,0)。于是,问题变为在图中找一条从顶点(1,1,1,1)到(0,0,0,0)的路径,每条路径就是一个解,从图二可知有二解,且这两解是等优的。
数学建模模拟试题及参考答案
![数学建模模拟试题及参考答案](https://img.taocdn.com/s3/m/366c3f54e2bd960590c677fc.png)
《数学建模》模拟试题一、(02')人带着猫、鸡、米过河,船除希望要人计划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米,设计一个安全过河方案,并使渡河次数尽量地少。
二、(02')雨滴的速度v 与空气密度ρ、粘滞系数μ和重力加速度g 有关,其中粘滞系数的定义是:运动物体在六题中受的摩擦力与速度梯度和接触面积的乘积成正比,比例系数为粘滞系数,用量纲分析方法给出速度v 的表达式。
三、(03')要在雨中从一处沿直线跑到另一处,若雨速为常数且方向不变,试建立数学,模型讨论是否跑都越快,淋雨量越少。
将人体简化成一个长方体,高m a 5.1=(颈部以下),宽m b 5.0=厚m c 2.0=,设跑步距离,1000m d =跑步最大速度s m v m /5=,雨速s m u /4= ,降雨量h cm w /2=,记跑步速度为v ,按以下步骤进行讨论;(1)不考虑雨的方向,设降雨淋遍全身,以最大速度跑步,估计跑完全程的总淋雨量(2)雨从迎面吹来,雨线与跑步方向在同一铅直平面内,且与人体的夹角为θ,如图1建立总淋雨量与速度v 及参数θ,,,,,,w u d c b a 之间的关系,问速度v 多大,总淋雨量最少,计算030,0==θθ时的总淋雨量。
(3))雨从背面吹来,雨线方向与跑步方向在同一铅直平面内,且与人体的夹角为∂,如图2建立总淋雨量与速度v 及参数∂,,,,,,w u d c b a 之间的关系,问速度v 多大,总淋雨量最少,计算030=θ时的总淋雨量。
四、(03')建立铅球掷远模型,不考虑阻力,设铅球初速度为v ,出手高度为h 出手角度为α(与地面夹角),建立投掷距离与α,,h v 的关系式,并在h v ,一定的条件下求最佳出手角度。
参考答案一、人、猫、鸡、米分别记为4,3,2,1=i ,当i 在此岸时记1=i x ,否则记0=i x ,则此岸的状态可用()4321,,,x x x x s =表示。
人猫鸡米渡河问题地数学模型
![人猫鸡米渡河问题地数学模型](https://img.taocdn.com/s3/m/27316362f01dc281e43af019.png)
人猫鸡米渡河问题的数学模型摘要:人带着猫、鸡、米过河,从左岸到右岸,船除了需要人划之外(船除了要载人外),只能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
本文将设计一个安全过河方案,使渡河次数尽量地少。
模仿“商人过河”的模型设计出新的数学模型。
关键字:穷举法,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 则是不可取运载,依此规律类推。
人猫鸡米过河问题--第十一组
![人猫鸡米过河问题--第十一组](https://img.taocdn.com/s3/m/b9cae74033687e21af45a989.png)
承诺书我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。
如有违反竞赛规则的行为,我们将受到严肃处理。
我们参赛选择的题号是(从A/B/C/D中选择一项填写): A我们的参赛报名号为(如果赛区设置报名号的话):J2202所属学校(请填写完整的全名):江西环境工程职业学院参赛队员(打印并签名) :1. 黄业平2. 李梅3. 方文俊指导教师或指导教师组负责人(打印并签名):教练组日期: 2012年 8月 8日赛区评阅编号(由赛区组委会评阅前进行编号):编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):安全过河问题一、问题的重述人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
试设计一个安全过河方案,并使渡河次数尽量地少。
关键词:人不在场时猫要吃鸡、鸡要吃米船需人划二、模型假设不考虑外界其他影响,只考虑问题所述的条件。
三、符号说明四、问题分析安全过河问题可以看着是一个多部决策的过程。
每作出一步决策,都必须保证船、人、猫、鸡、米能满足题设条件。
否则,不仅难以实现过河的最优化,而且还容易出现事物的不安全性。
因此,在保证安全的前提下,即猫、鸡在一起时,人要在场,鸡、米在一起时,人也要在场,用状态变量s表示某一岸的状况,决策变量d 表示是乘车方案,我们容易得到s 和d 的关系,其中问题的转化要在允许变化范围内,确定每一步的决策关系,从而达到渡河的最优目标。
数学建模过河
![数学建模过河](https://img.taocdn.com/s3/m/e1a2e0ef7c1cfad6195fa761.png)
一、模型假设由题中条件可解,不需假设其他外界条件二、模型构成记人、猫、鸡、米的数量分别为1x 、2x 、3x 、4x ,第k 次渡河前此岸的人、猫、鸡、米的数量分别为k S =(1x ,2x ,3x ,4x ),则彼岸的人、猫、鸡、米的数量分别为k S ’=(1-1x 、1-2x 、1-3x 、1-4x )由题中条件得在安全渡河条件下的允许状态合集S ={(1,1,1,1),(1,1,1,0),(1,1,0,1),(1,0,1,1),(1,0,1,0)}及其相对应的S ’。
不难验证,S 对此岸和彼岸都是安全的。
第k 次渡河时穿上的人、猫、鸡、米的数量分别为1u 、2u 、3u 、4u ,决策方案即为乘船方案k d =(1u ,2u ,3u ,4u ),允许决策合集为D ={(1,1,0,0),(1,0,1,0),(1,0,0,1),(1,0,0,0)}因为k 为奇数时船从此岸驶向彼岸,k 为偶数时船由彼岸驶回此岸,所以状态k S 随决策k d 变化的规律是()kd k k s k s 11-+=+ 求决策k d ∈D (k=1,2,...,n ),使状态k s ∈S 按照上式,由初始状态1s =(1,1,1,1)经有限步n 到达状态1+n s =(0,0,0,0)。
三、模型求解1.由于搭载对象总量较小,我们可以得出以下可行解:2.若使用MATLAB编程A向量定义为状态变量B向量定义为运载变量(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);(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'); endendendendEnd(3)、fuhe.m文件:function y=fuhe(C,M)y=0;for i=1:8if(C==M(i,:))y=1;break;endend(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;endendend(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');End四、模型分析该问题的最优方案是:①人先带鸡过河,然后人再回来,把米带过河,然后把鸡运回河岸,人再把猫带过河,最后人回来把鸡带过去。
人、猫、鸡、米如何安全过河
![人、猫、鸡、米如何安全过河](https://img.taocdn.com/s3/m/975bff1d6bd97f192279e95c.png)
人、猫、鸡、米如何安全过河一、摘要:本模型解决的是安全过河问题,属于数学模型中比较简单的一类。
对于解决这种类型的题目,需要从多维方向思考,从而得到更方便的最优解。
本题所解就属于这种类型的,在已知的条件范围内,即当人不在场的时候,避免猫和鸡在一起,鸡和米在一起,同时,也要尽量使渡船的次数最少。
关键词:渡河 小船 方案 人 猫 鸡 米二、问题的重述:一个人带着猫、鸡、米乘船渡河,一直小船最多只能容纳四个物种当中的两种。
其中,小船非自动,只能由人来划。
不管人如何计划,在河的任何一岸,在人不在场的情况下,猫要吃鸡,鸡要吃米。
人应该如何安排渡河计划,才使得自己的财务不会受到损失,同时也使得渡河的次数最少?三、基本假设与符号说明:1、假设船足够大,能够同时容纳人、猫、鸡、米。
2、假设河流相对平缓,船在行驶的途中不会遇到大浪,打翻小船。
3、假设人、猫、鸡、米只能通过乘船的方式才能过河。
假设1是合理的,但是不符合题目所给的客观条件。
假设2是合理的,因为如果河流湍急,人是不会带着猫、鸡、米渡河的。
假设3是合理的,因为在正常的情况下,乘船渡河是最为安全的。
四、问题分析:安全过河问题可以看着是一个多部决策的过程。
每作出一步决策,都必须保证船、人、猫、鸡、米能满足题设条件。
否则,不仅难以实现过河的最优化,而且还容易出现事物的不安全性。
人、猫、鸡、米过河,只有一艘只能容纳两种物体的小船,船只能由人在划。
根据生物链关系,当人不在场的时候,猫要吃鸡,鸡要吃米。
所以除非人在场,猫不能单独跟鸡在一起,鸡不能单独跟米在一起。
假如人不在场的时候,鸡既能被猫吃,又能吃米,所以鸡只能跟人待在一起或者单独留在此岸或彼岸。
因船的大小有限,只能同时容纳两个物体,所以,当k=1时,人必须先把鸡带到彼岸,在独自划船回到此岸载另外的猫(或者米)到彼岸,因为人在场,所以鸡不会被猫吃(或者鸡不会吃米)。
然后带着鸡划船回到此岸,把鸡单独留在此岸,带着米(或者猫)去彼岸,最后独自回来载鸡过河。
人猫鸡米渡河问题地数学模型
![人猫鸡米渡河问题地数学模型](https://img.taocdn.com/s3/m/c930822b10a6f524cdbf850b.png)
人猫鸡米渡河问题的数学模型摘要:人带着猫、鸡、米过河,从左岸到右岸,船除了需要人划之外(船除了要载人外),只能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米。
本文将设计一个安全过河方案,使渡河次数尽量地少。
模仿“商人过河”的模型设计出新的数学模型。
关键字:穷举法,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 则是不可取运载,依此规律类推。
数学模型——猫、鸡、米渡河问题
![数学模型——猫、鸡、米渡河问题](https://img.taocdn.com/s3/m/bd8b3227ccbff121dd368334.png)
实验报告实验目的通过解决简化的实际问题,学习初步的数学建模方法,培养建模意识。
实验内容1.Matlab使用练习;2. 人带着猫、鸡、米过河,船除需要人划之外,至多能载猫、鸡、米三者之一,而当人不在场时猫要吃鸡、鸡要吃米,试通过数学建模,运用计算机给出一个安全渡河方案,并使渡河次数尽量少。
实验过程一、问题分析:这个问题可以用递推方法解决,但我们可以将其转换为状态转移问题来解决。
二、模型假设与建立:可取状态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)。
可取运载B有4个(1,1,0,0)、(1,0,1,0)、(1,0,0,1)、(1,0,0,0)。
三、算法设计规定A和B的每一分量相加时按二进制进行,这样一次渡河就是一个可取状态和一个可取运载相加,在判断和向量是否属于可取状态即可。
可以将可取状态及可取运载分别编成矩阵。
共分为五个m文件,一个主文件xduhe.m数,分别为:1、duhe(L,B,M,s)函数。
用来实现渡河总思路。
思路为:将起始矩阵A分别与可取运载相加(使用二进制法则),判断相加后的矩阵C是否是(0,0,0,0),如果是,则渡河成功。
否则,用fuhe(C,M) 函数判断C是否是可取状态,如果是,则打印并将C与初始矩阵合并成新矩阵,继续调用duhe.m函数。
2、fuhe(C,M)函数。
判断和矩阵C是否属于矩阵M,如果是,则返回1,否则返回0.3、Panduan(S)函数。
判断S矩阵中是否有两个相同的状态,即行向量。
如果有,则返回0,否则返回1.4、print(K,C,s)函数。
打印相应的状态。
四、程序代码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);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');endendendendend3、fuhe.m文件function y=fuhe(C,M)y=0;for i=1:8if(C==M(i,:))y=1;break;endend4、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;endendend5、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'); end五、模型结论在matlab中运行,结果如下:从运行结果可以看出,共有两种运送方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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可以非常容易而且很直观地得出问题的解决方案,从而在不断深化对问题认识的同时,把问题普遍化。
但是这个问题的求解过程是请教了师姐才得以完成的。