我可以使用这个健身功能吗?

时间:2016-05-13 23:55:24

标签: optimization artificial-intelligence genetic-algorithm

我正在使用遗传算法开展项目,我正在尝试制定健身功能,我的问题是:

  • 健身公式选择对GA的影响是什么?

  • 可以使适应度函数直接等于违规次数(在最小化的情况下)?

1 个答案:

答案 0 :(得分:0)

  

健身公式选择对GA的影响是什么

适应度函数在指导GA中起着非常重要的作用。

良好的健身功能将帮助GA有效地探索搜索空间。另一方面,糟糕的健身功能很容易使GA陷入局部最优解决方案并失去发现能力。

不幸的是,每个问题都有自己的适应性功能。

对于分类任务,错误措施(欧几里德,曼哈顿......)被广泛采用。您也可以使用基于熵的方法。

对于优化问题,您可以使用正在调查的函数的粗略模型。

有关适应度函数特征的大量文献(例如{2},{3},{5})。

从实现的角度来看,必须考虑一些额外的机制:线性缩放,sigma截断,功率缩放......(见{1},{2})。

健身功能也可以是动态的:在进化过程中改变以帮助搜索太空探索。

Dynamic fitness landscape

  

可以使适应度函数直接等于违规次数(在最小化的情况下)?

是的,它可能,但你必须考虑它可能是一个太粗糙的健身功能。

如果适应度函数太粗糙(*),它没有足够的表现力来指导搜索,遗传算法会更频繁地陷入局部最小值,并且可能永远不会收敛于解决方案。< / p>

理想情况下,良好的适应度函数应该能够告诉您从给定点开始的最佳方向是:如果一个点的适应性良好,其邻域的子集应该更好。

所以没有大的高原(一个宽阔的平坦区域,不会给出搜索方向并诱导随机游走)。

(*)另一方面,完美平滑的适应度函数可能是您使用错误类型算法的标志。

一个天真的例子:您要查找参数abc,以便

g(x) = a * x / (b + c * sqrt(x))

n给定数据点(x_i, y_i)

的良好近似值

您可以最小化此适应度函数:

        | 0   if g(x_i) == y_i                 
E1_i =  |
        | 1   otherwise

f1(a, b, c) = sum (E1_i)
               i

它可以工作,但搜索不是针对性的。更好的选择是:

E2_i = (y_i - g(x_i)) ^ 2

f1(a, b, c) = sum (E2_i)
               i

现在你有一个&#34;搜索方向&#34;并且成功的可能性更大。

进一步详情:

  1. Genetic Algorithms: what fitness scaling is optimal?由Vladik Kreinovich,Chris Quintana
  2. 撰写
  3. Goldberg,D。(1989,Addison-Wesley)在搜索,优化和机器学习中的遗传算法
  4. The Royal Road for Genetic Algorithms: Fitness Landscapes and GA Performance来自Melanie Mitchell,Stephanie Forrest,John H Holland。
  5. Avoiding the pitfalls of noisy fitness functions with genetic algorithms由Fiacc Larkin,Conor Ryan(ISBN:978-1-60558-325-9)
  6. Sean Luke的
  7. Essentials of Metaheuristics