📄 wh_by.m
字号:
function [y,p]=wh_BY(G_Sample_Sum,G_Sample_Sum_Dimension,End,Initial_Group)
% function [y,p]=wh_BY(BY_Probability_Set,G_Sample_Sum,G_Sample_Sum_Dimension,End,Initial_Group)
% BY_Probability=round(G_Sample_Sum*BY_Probability_Set/100);
% if (BY_Probability<1)
% BY_Probability=1;
% end
% for by_Probability=1:BY_Probability
while(1)%A---产生变异的初始条件
BY_G_Sample_Sum_Rand=round(G_Sample_Sum*rand(1));%产生变异个体的位置
BY_G_Sample_Sum_Dimension_Rand=round(G_Sample_Sum_Dimension*rand(1));%产生变异个体元素的位置BY_G_Sample_Sum_Dimension_Rand,
BY_End_Rand=round(End*rand(1));%变异元素的数值BY_End_Rand
if and(and((BY_G_Sample_Sum_Dimension_Rand~=0),(BY_End_Rand~=0)),(BY_G_Sample_Sum_Rand~=0))
break;
end
end%A---while
while(1)%B---开始变异
Bao_Liu=Initial_Group(BY_G_Sample_Sum_Rand,BY_G_Sample_Sum_Dimension_Rand);
Initial_Group(BY_G_Sample_Sum_Rand,BY_G_Sample_Sum_Dimension_Rand)=BY_End_Rand;%对Initial_Group(BY_G_Sample_Sum_Rand,BY_G_Sample_Sum_Dimension_Rand)实现变异
Q_BY_End_Rand=BY_End_Rand;
while (1)
BY_End_Rand=round(End*rand(1));
if and((Q_BY_End_Rand~=BY_End_Rand),(BY_End_Rand~=0))
break;
end
end%~(BY_End_Rand~=0)
TTT=0;
for k=1:G_Sample_Sum_Dimension%保证变异后的个体(行向量)的元素间互异
for l=1:G_Sample_Sum_Dimension
if and((k~=l),Initial_Group(BY_G_Sample_Sum_Rand,k)==Initial_Group(BY_G_Sample_Sum_Rand,l))
TTT=1;
Initial_Group(BY_G_Sample_Sum_Rand,BY_G_Sample_Sum_Dimension_Rand)=Bao_Liu;
end
end%l
end%k
if (TTT==0)
break;
end
end%B---while
for j=1:G_Sample_Sum_Dimension%完成变异的个体中的元素升序排列
for k=1:G_Sample_Sum_Dimension
if (Initial_Group(BY_G_Sample_Sum_Rand,j)<Initial_Group(BY_G_Sample_Sum_Rand,k))
TT=Initial_Group(BY_G_Sample_Sum_Rand,j);Initial_Group(BY_G_Sample_Sum_Rand,j)=Initial_Group(BY_G_Sample_Sum_Rand,k);Initial_Group(BY_G_Sample_Sum_Rand,k)=TT;
end
end %k
end%j
% end%for--------------by_Probability
%-------------------------------------------------------------------------------------------------变异结束
y=Initial_Group(BY_G_Sample_Sum_Rand,:);
p=BY_G_Sample_Sum_Rand;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -