Matlab中遗传算法的变异阶段

时间:2015-04-03 13:30:10

标签: matlab image-processing genetic-algorithm mutation tomography-reconstruction

我正在使用Matlab中的遗传算法优化图像重建算法。我在两个群体上进行交叉并在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的概率进行突变。我在这里使用'gaoptimset'并编码如下。

 mutated_child = gaoptimset('MutationFcn', {@mutationuniform, .02})

我打印了结果。它给出了一个没有任何值的结构。

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)进行突变吗?提前致谢。

1 个答案:

答案 0 :(得分:1)

我对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

你应该对后代没有做同样的事情。 2