- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数学建模人狼羊菜问题
一,论文题目 人,狼,羊,菜渡河问题
二,摘要
将人狼羊菜依次用一个四维向量表示,对每一分量按二进制法则进行运算,将可行状态与转移状态表示出来,将这种运算方法设计为Matlab语言,进行计算机的计算,最终求得所得结果。
三,问题的重述
一个摆渡人希望用一条小船把一只狼,一只羊和一篮白菜从一条河的左岸渡到右岸去,而船小只能容纳人,狼,羊,菜中的两个,绝不能在无人看守的情况下,留下狼和羊或羊和白菜在一起,求应怎样渡河才能把狼羊白菜都运过去?
四,模型的假设、符号约定和名词解释
我们可以用四维向量来表示状态,其中第一分量表示人,第二分量表示狼,第三分量表示羊,第四分量表示菜;当人或物在此岸时相应分量取1,在对岸时则取0。
根据题意,人不在场时,狼要吃羊,羊要吃菜,因此,人不在场时,不能将狼与羊,羊与菜留在河的任一岸。例如,状态(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,1,0,1),(0,1,0,0),(0,0,1,0),(0,0,0,1),(0,0,0,0)
可行状态共有十种。每一次的渡河行为改变现有的状态。
用1 表示过河,0 表示未过河。例如,(1,1,0,0)表示
人带狼过河。状态转移只有四种情况,用如下的向量表示。
(1,0,0,0),(1,1,0,0),(1,0,1,0),(1,0,0,1)
五,模型的建立、模型求解、模型的结果和检验
将可取状态及可取运载分别编成矩阵。共分为五个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,姜启源、谢金星、叶俊《数学模型》(第三版),北京:高等教育出版社.
八,程序代码
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:h
for i=1:4
C=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)==1
print(B(i,:),C,s);
S=[L;C];
if Panduan(S)==1
duhe(S,B,M,s+1);
else
fprintf(此渡河方案不可行\n\n);
end
end
end
end
end
3、 fuhe.m文件
function y=fuhe(C,M)
y=0;
for i=1:8
if(C==M(i,:))
y=1;
break;
end
end
4、 Pan
您可能关注的文档
最近下载
- (2024秋新版)人教版七年级数学上册全册PPT课件.pptx
- dixell帝思 xc15cx-xc35cx 调试维修参数设置资料.pdf
- transcad交通需求模型手册_chapter12公交分配.pdf VIP
- 高校后勤餐饮经营发展探究——以浙江树人大学为例.pdf VIP
- 幼儿园教室环创培训.pptx VIP
- 2023辽宁沈阳市铁西区面向全区招聘社区残疾人工作专职干事8人考试备考题库及答案解析.docx VIP
- 2025年安徽省池州市辅警协警笔试笔试预测试题(附答案).docx VIP
- 《追求理解的教学设计》读书心得.docx VIP
- 糖皮质激素诱导骨质疏松诊治专家共识.pptx VIP
- 2025内蒙古巴彦淖尔市能源(集团)有限公司第二批招聘55人笔试模拟试题及答案解析.docx VIP
文档评论(0)