什么是小生活方案?

Mah*_*00d 17 genetic-algorithm evolutionary-algorithm

我目前正在阅读一篇关于在约束优化问题中使用GA的论文.在某些方面,它正在讨论将niching方案应用于个人(或他们制造的帕累托前线).

这似乎是一个典型的选择方案,但在我搜索时,我找不到一个很好的解释.

有人可以尽可能简单地向我解释一下,这是一种什么样的方案

deo*_*ong 37

简而言之,niching是一类尝试在单次运行中收敛到多个解决方案的方法.

Niching是将GA的种群划分为不相交的集合的想法,旨在使得在健身功能的每个区域中至少有一个成员是"有趣的"; 一般来说,这意味着你涵盖了不止一个本地最优.

想象一下这样的功能f(x) = sin(x^2).

在此输入图像描述

正常的GA最终会收敛到两个全局最小值中的一个.哪一个取决于初始种群和整个运行期间发生的随机遗传漂移,但最终,您将n在一个或另一个山谷中获得一个人的副本.例如,如果您在几乎收敛时查看这样的GA,您可能会看到类似的内容

标准GA

Niching是一类通用技术,旨在最终将大约一半的人口聚集在每个最小值中(或者甚至可能包括少数成员的最小值x=0).

小生境

正如我刚才所说,niching实际上并不是一种算法,而是一类算法.一种这样的方法是Goldberg的健身分享.在这种方法中,我们定义了一个利基半径sigma.任何比这更靠近的人sigma都被认为处于相同的生态位,因此必须分享他们的适应值(认为这是一个降低生态位每个成员的适应性的函数,生态位越密集).然后,您可以使用GA操作共享适应值而不是原始值.

这里的想法是,通过假装那里有有限的资源,你不鼓励融合到健身功能的单个区域.试图入住的人越多,他们的情况就越糟糕.结果是,当GA在某处收敛到单个局部最优时,由于生态位内的竞争加剧,该最优的适应性降低.最终,健身景观的另一个区域变得更具吸引力,并且个人在那里迁移.我们的想法是达到稳定状态 - 动态中的一个固定点 - 保持每个利基的适当表示.

由于需要手动设置小生境半径,因此共享很难,并且算法对此选择非常敏感.另一种选择是拥挤.特别是,您可能会查找"确定性拥挤",这是一段时间内流行的方法.在基于拥挤的方法中,我们不是处理明确的半径,而是通过限制新的后代可以替换为某些类似解决方案的个体集来工作,例如,可以允许后代仅替换其父亲中的一个.其结果是试图阻止用一个与人口中十几个非常相似的个体替换一个独特的个体,从而以这种方式保持多样性.