matlab中遗传算法的种群初始化

时间:2015-04-10 05:36:04

标签: matlab initialization genetic-algorithm population

我随机生成了遗传算法的初始10个种群(每个大小为n)

for i = 1:10
    for j=1:n
        population(i,j)=randi([MinIntensity,MaxIntensity]);
    end
end

假设我有一个种群的值。例如,让第一个种群的大小为[100 110 120 130 140 150 160 170 180 190]。是否有可能产生剩余的9个种群,使得数值为接近第一个种群?(这是为了遗传算法的快速收敛)。每个种群都是一个灰度图像,强度值以行主要顺序表示。强度值应该在0 - 255范围内。 请帮忙。谢谢提前

1 个答案:

答案 0 :(得分:2)

你可以做一件事。将第一个字符串原样用于9个字符串中的其余字符串,除了随机生成索引(介于1到n之间)并仅将随机整数分配给具有该随机索引的位置。

population(1,:) = [100 110 120 130 140 150 160 170 180 190];

for i = 2:10
    idx = randi([1 10]);
    population(i,:) = population(1,:);
    population(i,idx) = randi([0 255]);
end

通过这种方式,你只会在一个位置得到十个不同的字符串。

编辑:图片。 假设你有一个MXN图像。创建一个掩码,例如

randi([-10 10], M , N)

现在将其添加到原始图像中。现在你得到一个新的图像,其所有像素都被修改,但只在-10到10的范围内。有些像素值可能超出范围,在这种情况下只需修改如下

 x(find(x < 0)) = 0 %Here X is your new image.

 x(find(x > 255)) = 255