我想使用进化/遗传算法解决问题。它与艺术有关 - 观看算法的人应该尝试一条染色体(= 可能的解决方案),并应该根据他们的品味对其进行评估。
使用这种设置,评估过程(可以说)非常昂贵 - 测试每个染色体需要大量时间。为了确保在可行的时间内取得进展(这意味着频繁更换世代),我必须接受较小的人口规模(这也有缺点)。另一种选择是拥有更大的人口规模,但只有几代人。
我想到了一个不同的解决方案,我称之为“动态人口”。它会像这样工作:
- 使用种群大小
x
来设置算法,x
随机创建染色体并从 1 编号到x
表示它们的age
. - 评估初始种群染色体的适应度。
- 使用交叉和/或突变机制创建一个新染色体。
age = 1
被分配给这个新的染色体。所有其他染色体都长了一步(age = age + 1
)。age > x
从群体中去除染色体。(在交叉机制产生两条染色体作为后代的情况下,选择一个孩子得到另一个孩子并获得age = 1
其他age = 2
染色体age = age + 2
) - 重复 1 - 3 直到找到解决方案。
(这个过程当然可以很容易地被用来使用精英主义。)
使用这种机制,每个(新的)染色体和(在我的情况下更重要的)每次评估都会有一个(可能的)进展。
但是,我也可以想到一些缺点...
这种使用“动态种群”的实现不适应进化算法是否存在合乎逻辑的原因?