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



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

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

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

你可以做一件事。对于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

最新更新