2016-05-13 27 views
-3

我正在使用遗传算法的一个项目,我试图制定一个健身功能,我的问题是:我可以使用这种健身功能吗?

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

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

回答

0

什么是健身公式选择在GA

健身功能的影响起着指导GA非常重要的作用。

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

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

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

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

有关适应度函数(例如{2},{3},{5})的特征的大量文献。从实现的角度来看,必须考虑一些额外的机制:线性缩放,西格玛截断,功率缩放......(请参阅{1},{2})。

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

Dynamic fitness landscape

它可以使适应度函数直接等于违反的数量(以最小化的情况下)?

是的,这是可能的,但你必须考虑它可能是一个过于粗糙的粒度适应度函数。

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

理想情况下,良好的健身功能,应该有能力告诉你什么是最好的方向从给定的点走的是:如果一个点的适应性好,其周边的子集,应该会更好。

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

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


一个简单的例子:你看参数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 

现在你有一个“搜索方向”和更大的成功几率。


进一步了解详细:

  1. Genetic Algorithms: what fitness scaling is optimal?通过弗迪克·克里诺维奇,克里斯·金塔纳
  2. 遗传算法在搜索,优化和机器学习由戈德堡,D.(1989年,Addison-Wesley出版社)
  3. The Royal Road for Genetic Algorithms: Fitness Landscapes and GA Performance Melanie Mitchell,Stephanie Forrest,John H Holland。
  4. Avoiding the pitfalls of noisy fitness functions with genetic algorithms通过Fiacc拉金,康纳尔瑞恩(ISBN:978-1-60558-325-9)
  5. Essentials of Metaheuristics由肖恩·卢克
+0

非常感谢你, 只是这一点:“理想情况下,良好的健身功能应该有能力告诉你什么是最好的方向“,这对我来说不是很清楚,你能举个例子吗? –

+0

@hichamATR我在答案中增加了一些细节。 – manlio

+0

哦,谢谢soooo多! –