wh_creat_group_xin.m
来自「遗传算法的matlab程序库 别人的辛勤劳动」· M 代码 · 共 55 行
M
55 行
function [y,M]=wh_Creat_Group_Xin(End,Sample_Sum,Sample_Sum_Dimension)%产生初始群体,其中个体有相同的可能
% End=12;%数组(群体)元素值为1~End
% Sample_Sum=50;%数组的行数
% Sample_Sum_Dimension=3;%数组的列数
B=round(End*rand(Sample_Sum,Sample_Sum_Dimension));
for i=1:Sample_Sum%实现数组中行向量元素升序排序
for j=1:Sample_Sum_Dimension
for k=1:Sample_Sum_Dimension
if (B(i,j)<B(i,k))
TT=B(i,j);B(i,j)=B(i,k);B(i,k)=TT;
end
end %k
end%j
end%i
for i=1:Sample_Sum%判断每个行向量的各元素间互异
while (1)
T=0;%代表产生的数组满足要求,每个数组的元素之间值是互异的,并且值不为0
for j=1:Sample_Sum_Dimension
for k=1:Sample_Sum_Dimension
if and((j~=k),(B(i,j)==B(i,k)))
T=1;B(i,j)=round(End*rand(1));B(i,k)=round(End*rand(1));break;
end
end %k
if or((B(i,j)==0),(T==1))
T=1;B(i,j)=round(End*rand(1));break;
end
end%j
if (T==0)
break;
end
end%while
end%for i=1:Sample_Sum
for i=1:Sample_Sum%实现数组中行向量元素升序排序
for j=1:Sample_Sum_Dimension
for k=1:Sample_Sum_Dimension
if (B(i,j)<B(i,k))
TT=B(i,j);B(i,j)=B(i,k);B(i,k)=TT;
end
end %k
end%j
end%i
M=0;
for i=1:Sample_Sum
for j=i+1:Sample_Sum
if (B(i,:)==B(j,:))
M=M+1;
end
end
end
y=B;%输出初始群体
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?