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