📄 main_yuan.m
字号:
clc;clear;
Generation=-1;%Initial_Group初始群体,Generation代数
End=12;%参数的总数
G_Sample_Sum_Dimension=3;%从End个参数中取Sample_Sum_Dimension个不同的参数作为一个组合
G_Sample_Sum=20;%形成的组合总数(群体中个体的总数)
Initial_Group=wh_Creat_Group(End,G_Sample_Sum,G_Sample_Sum_Dimension);
[Max,Excellent_Sample_Positon]=SAA(G_Sample_Sum_Dimension,Initial_Group,G_Sample_Sum);
Excellent_Sample=Initial_Group(Excellent_Sample_Position,:);
while ~(Generation>100)
Generation=Generation+1;
[Max,Excellent_Sample_Positon]=SAA(G_Sample_Sum_Dimension,Initial_Group,G_Sample_Sum);
Excellent_Sample=Initial_Group(Excellent_Sample_Position,:);
%-----------------------------------------------------------------------------变异开始,变异率设为5%
BY_Probability=round(G_Sample_Sum_Dimension*5/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---开始变异
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)实现变异
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;
end
end%l
end%k
if (TTT==0)
break;
end
end%B---while
for j=1:Sample_Sum_Dimension%完成变异的个体中的元素升序排列
for k=1: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
%-------------------------------------------------------------------------------------------------变异结束
end%while ~(Generation>100)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -