1/7
文档分类:资格/认证考试

商人过河m精编b程序以及解析修订稿.docx


下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

特别说明:文档预览什么样,下载就是什么样。

下载所得到的文件列表
商人过河m精编b程序以及解析修订稿.docx
文档介绍:
WEIHUA system office room 【WEIHUA 16H-WEIHUA WEIHUA8Q8-WEIHUA1688】
商人过河m精编b程序以及解析
数学建模作业
班级:数学131
姓名:丁延辉
学号:
(二)商人过河Matlab代码
三个商人三个随从
z=zeros(30,3); %z为由(a,b,c)的列向量组成的3行30列数组,初始化为0矩阵,a,b,c代表此刻此岸的商人,仆人数量以及船的运行状态,c=1表示即将向彼岸运行
m=zeros(1,20); %m为一维行向量,初始化为1矩阵,用于在后面的程序中判断第k次选择的乘船方案
d=[0,1,1;0,2,1;1,0,1;1,1,1;2,0,1]; %共有5种可以选择的乘船方案,最后面一列全为1,即用于在后面表示使得z(k,3)的取值保持随着k的奇偶性保持着0-1变换.
z(1,:)=[3,3,1]; %初始状态为[3,3,1]
k=1;
m(k)=1; %第一次默认的乘船方案为决策1——d(1)
flag=1; %用于在后面判断是否成功找到方案
answer=0; %用于在后面判断是否找到答案
while k>0 %保持k>0
if m(k)>5
flag=0;
break;
end
p=0;
z(k+1,:)=z(k,:)+(-1)^k*d(m(k),:); %每一次的运算规则都是z(k+1)=z(k)-(-1)^k*d(m(k),:),d(m(k),:)表示决策方案
a=z(k+1,1); %将当前情况的矩阵数值复制给a商人,b仆人
b=z(k+1,2);
c=z(k+1,3);
if (a==3&&(b==0||b==1||b==2||b==3))||(a==1&&b==1)||(a==2&&b==2)||(a==0&&(b==0||b==1||b==2||b==3)) %判断(a,b)是否符合限定情况
for j=1:k %判断是否此岸a,b,c与之前有重复,如果是,结束此次循环,重新选择乘船方案
if a==z(j,1)&&b==z(j,2)&&c==z(j,3)
if m(k)~=5 %决策方案只有5种,所以m(k)<=5,
m(k)=m(k)+1; %因为有重复,所以换下一种决策方案
else
内容来自淘豆网www.taodocs.com转载请标明出处.