【问题标题】:Initialization of population for genetic algorithm in matlabmatlab中遗传算法的种群初始化
【发布时间】:2015-04-10 05:36:04
【问题描述】:

我随机生成初始 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 范围内。 请帮忙。在此先感谢

【问题讨论】:

    标签: matlab initialization genetic-algorithm population


    【解决方案1】:

    你可以做一件事。将第一个字符串原样用于其余 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
    

    【讨论】:

    • 实际上每个种群都是一个图像。因此,如果仅更改一个位置,它看起来几乎相似。我的意思是从每个位置的第一个种群中添加/减去一些强度值,但它应该接近到第一人口。它也应该在0-255的范围内
    猜你喜欢
    • 1970-01-01
    • 2019-10-04
    • 2012-07-29
    • 1970-01-01
    • 2016-10-19
    • 2015-07-26
    • 2020-07-11
    • 2013-08-09
    • 2021-03-03
    相关资源
    最近更新 更多