商人过河问题

能得到结果,但是结果好不好看运气,哈哈哈哈
%% 初始值
sc1=3;sc3=0;sr1=3;sr3=0;t=1;
jc1=[];jc3=[];jc2=[];jc4=[];%jc1,jc3是决策,jc2,jc4是人数
%% 生成新解得矩阵生成
%% 决策的生成,是否选择
jc1(1,1)=1;jc1(1,2)=1;
while sr1=0||sc1=0
%% 从岸1到船只
while t
if t~=1
jc1(t,:)=round(rand(1,2));
end
if jc1(t,1)1||jc1(t,2)1
if jc1(t,1)0||sr10 jc2(t,1)=0;
else jc2(t,1)=randperm(sr1,1);
end
if jc1(t,2)0||sc10 jc2(t,2)=0;
else jc2(t,2)=randperm(sc1,1);
end
%判断船只容量和约束是否满足
if jc2(t,1)+jc2(t,2)>=1&&jc2(t,1)+jc2(t,2)<=2
sc11=sc1-jc2(t,2);
sr11=sr1-jc2(t,1);
sr33=sr3+jc2(t,1);
sc33=sc3+jc2(t,2);
%规则判断人数
if sr11
0||sr33
0
sc1=sc11; sr1=sr11;
sr3=sr33;sc3=sc33; break;
else if sr11>=sc11&&sr33>=sc33
sc1=sc11;sr1=sr11;
sr3=sr33;sc3=sc33; break;
%else continue;
end
end
%
else continue;
end
else continue;
end
end
if sr1sc1&&sc10
break;
end
%% 从岸2到船只
while t
jc3(t,:)=round(rand(1,2));
if jc3(t,1)1||jc3(t,2)1
if jc3(t,1)0||sr30
jc4(t,1)=0;
else jc4(t,1)=randperm(sr3,1);
end
if jc3(t,2)0||sc30
jc4(t,2)=0;
else jc4(t,2)=randperm(sc3,1);
end
%判断船只容量和约束是否满足
if jc4(t,1)+jc4(t,2)>=1&&jc4(t,1)+jc4(t,2)<=2
sc33=sc3-jc4(t,2);
sr33=sr3-jc4(t,1);
sr11=sr1+jc4(t,1);
sc11=sc1+jc4(t,2);
if sr11
0||sr33
0
t=t+1;sc1=sc11;sr1=sr11;
sr3=sr33; sc3=sc33; break;
else if sr11>=sc11&&sr33>=sc33
t=t+1; sc1=sc11;sr1=sr11;
sr3=sr33;sc3=sc33;break;
end
end
else continue;
end
end
end
end
jc4=[jc4;0,0];
a=[];
ii=1;
for i=1:1:t
if jc2(i,:)==jc4(i,:)
jc2(i,:)=[0,0];
jc4(i,:)=[0,0];
a(1,ii)=i;
ii=ii+1;
end
end
jc2(a,:)=[];
jc4(a,:)=[];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值