Matlab中遗传算法的变异阶段
Mutation stage of genetic algorithm in Matlab
我在 Matlab.I 中使用遗传算法优化图像重建算法,在不使用 matlab 中的 'ga' 工具包的情况下对两个种群进行交叉并生成两个后代。所以目前我有两个 1*n 矩阵,整数值范围为 0-255(它们是按行主要顺序排列的两个图像)。例如
population_1 = [1 2 3 4 5 6 7 8 9 10]
population_2 = [10 20 30 40 50 60 70 80 90 100]
然后我做了单点排序交叉并得到了后代
Off_1 = 1 2 3 4 5 60 70 80 90 100
Off_2 = 10 20 30 40 50 6 7 8 9 10
接下来要做概率为0的变异。02.I这里使用了'gaoptimset',编码如下
mutated_child = gaoptimset('MutationFcn', {@mutationuniform, .02})
我打印了 result.It 给出了这样的结构,没有任何值。
mutated_child =
PopulationType: []
PopInitRange: []
PopulationSize: []
EliteCount: []
CrossoverFraction: []
ParetoFraction: []
MigrationDirection: []
MigrationInterval: []
MigrationFraction: []
Generations: []
TimeLimit: []
FitnessLimit: []
StallGenLimit: []
StallTimeLimit: []
TolFun: []
TolCon: []
InitialPopulation: []
InitialScores: []
InitialPenalty: []
PenaltyFactor: []
PlotInterval: []
CreationFcn: []
FitnessScalingFcn: []
SelectionFcn: []
CrossoverFcn: []
MutationFcn: {[@mutationuniform] [0.0200]}
DistanceMeasureFcn: []
HybridFcn: []
Display: []
PlotFcns: []
OutputFcns: []
Vectorized: []
UseParallel: []
任何人都可以帮我对交叉孩子(Off_1 和 Off_2)进行突变吗?提前致谢。
我对 GA 工具箱一无所知。
但是没有它你可以做类似的事情:
% for offspring 1:
p_m = 0.02;
for i = 1:length(Off_1)
if rand(1) < p_m
Off_1(i) = randi([0,255],1);
end
end
你应该对第 1 号后代做同样的事情。 2
我在 Matlab.I 中使用遗传算法优化图像重建算法,在不使用 matlab 中的 'ga' 工具包的情况下对两个种群进行交叉并生成两个后代。所以目前我有两个 1*n 矩阵,整数值范围为 0-255(它们是按行主要顺序排列的两个图像)。例如
population_1 = [1 2 3 4 5 6 7 8 9 10]
population_2 = [10 20 30 40 50 60 70 80 90 100]
然后我做了单点排序交叉并得到了后代
Off_1 = 1 2 3 4 5 60 70 80 90 100
Off_2 = 10 20 30 40 50 6 7 8 9 10
接下来要做概率为0的变异。02.I这里使用了'gaoptimset',编码如下
mutated_child = gaoptimset('MutationFcn', {@mutationuniform, .02})
我打印了 result.It 给出了这样的结构,没有任何值。
mutated_child =
PopulationType: []
PopInitRange: []
PopulationSize: []
EliteCount: []
CrossoverFraction: []
ParetoFraction: []
MigrationDirection: []
MigrationInterval: []
MigrationFraction: []
Generations: []
TimeLimit: []
FitnessLimit: []
StallGenLimit: []
StallTimeLimit: []
TolFun: []
TolCon: []
InitialPopulation: []
InitialScores: []
InitialPenalty: []
PenaltyFactor: []
PlotInterval: []
CreationFcn: []
FitnessScalingFcn: []
SelectionFcn: []
CrossoverFcn: []
MutationFcn: {[@mutationuniform] [0.0200]}
DistanceMeasureFcn: []
HybridFcn: []
Display: []
PlotFcns: []
OutputFcns: []
Vectorized: []
UseParallel: []
任何人都可以帮我对交叉孩子(Off_1 和 Off_2)进行突变吗?提前致谢。
我对 GA 工具箱一无所知。 但是没有它你可以做类似的事情:
% for offspring 1:
p_m = 0.02;
for i = 1:length(Off_1)
if rand(1) < p_m
Off_1(i) = randi([0,255],1);
end
end
你应该对第 1 号后代做同样的事情。 2