能得到结果,但是结果好不好看运气,哈哈哈哈
%% 初始值
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 sr110||sr330
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 sr110||sr330
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,:)=[];
01-09