人狼羊蔬菜运输问题.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
人狼羊蔬菜运输问题

人、狼、羊、蔬菜运输问题 摘要 本文对人、狼、羊、蔬菜运输问题进行了分析,建立最短路模型。题目要求找运送次数最少的安全运输方案,即找到一个将所有的物体都运送过去的最短的路,要解决这一问题,本文先用四维向量来表示状态量,穷举出所有运输的可行共10种状态,然后运用matlab编程进而找出最短的路是:第一次运羊,人独自返回;第二次运菜,带羊返回;第三次运狼,人独自返回;第四次运羊。这样就可以在7次运输中把人、狼、羊和蔬菜安全运输到B地。 关键词:四维向量 图论 matlab编程 最短路 一、问题的重述 某人需把狼、羊、蔬菜从A地运到B地,由于运输设备限制,每次至多能运送三者之一,而当人不在场时狼要吃羊、羊要吃蔬菜。试设计一种安全运输方案,并建立数学模型,使运送次数尽量地少? 二、问题的分析 根据题意,人不在场时,狼要吃羊,羊要吃菜,因此人不在场时,不能将狼与羊羊与蔬菜留在。用四维向量表示状态,其中第一分量表示人,第二分量表示狼,第三分量表示羊,第四分量表示蔬菜;当人或物在A,相应分量取1,在时取0 三、模型的假设 1、假设人不在时,狼或羊不会自己跑掉或被人牵走。 2、假设当时的天气情况良好,不会发生动物受惊离去的情况。 3、假设初状态是人,狼,羊,草均在A地,目标终状态是人,狼,羊,草均在B地。 四、模型的建立 为了更好的表现本文的解题思路,作出初始状态图如下: 图1 运输初始状态图 首先,通过穷举法将所有可行的状态列举出来,可行的状态有(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)可行状态10种。现在、构造赋权图G=(V,E,W)(图2),其中定点集合V={v1,…,v10}中的顶点(按照上面的顺序编号)分别表示上述10个可行状态,当且仅当对应的两个可行状态之间存在一个可行转移时,可以把相应的权重取∞。 因为运输一次就会改变现在的状态,所以再引入一个四维状态转移向量,用它来反映运输情况。用1表示运输B地,0表示停留在A地。例如,(1,1,0,0)表示人带狼到B地。状态转移只有四种情况,用如下向量表示: (1,0,0,0),(1,1,0,0),(1,0,1,0),(1,0,0,1) 现在规定状态向量与转移向量之间的运算为0+0=0,1+0=1,0+1=1,1+1=0 通过上面的定义,如果某一个可行状态加上转移向量得到的新向量还属于可行状态,则这两个可行状态对应的顶点之间就存在一条边。用计算机编程时,可以利用普通向量的异或运算。 根据matlab编程软件(程序见附件一)可作出赋权图G=(V,E,W)如下: 图2 赋权图 五、模型的求解 根据赋权图G之间的状态转移关系(如图2)和matlab编程软件,最终得到状态转移顺序为1 6 3 7 2 8 5 10经过7次运输就可以把狼、羊、蔬菜运输到B地,第一次运羊,人独自返回;第二次运菜,带羊返回;第三次运狼,人独自返回;第四次运羊。为了更好的表述整个运输过程,作出运输流程图(见附件二)。 六、模型的评价和改进 优点: 1、仅仅靠多幅图像之间的对应关系就可以进行标定,灵活性高,潜在应用范围广; 2、基本模型利用计算机编程来得到求解,具有高效简介的优势,运行结果一目了然; 3、模型结合实际,具有很高的实用价值; 4、建模思路清晰,模型的建立方法比较简单,易于读懂。 缺点: 1、数据较少(运用穷举法)具有一定局限性。 改进: 1、运用其他思路求解。 参考文献 高媛媛,Matlab图论工具箱介绍:2013年; /p-389826473.html,《数学建模人狼羊菜问题 附件一 clc, clear a=[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]; %每一行是一个可行状态 b=[1 0 0 0;1 1 0 0;1 0 1 0;1 0 0 1]; %每一行是一个转移状态 w=zeros(10)%邻接矩阵初始化 for i=1:9 for j=i+1:10 for k=1:4 if findstr(xor(a(i,:),b(k,:)),a(j,:)) w(i,j)=1; end end end end w=w; sparse(w); %变成下三角矩阵 c=sparse(w) %构造稀疏矩阵 [x,y,z]=graphshortestpath(c,1,10,Directed,0) %该图是无向图,Direct

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档