关于遗传算法

时间:2012-02-26 21:02:29

标签: algorithm function search genetic-algorithm

目前,我正在研究遗传算法(个人的,不是必需的),我遇到了一些我不熟悉或基本熟悉的主题,它们是:

  • 搜寻空间
  • 功能的“极端”

我知道一个人的搜索空间是所有可能解决方案的集合,但我也想知道如何决定他们的搜索空间范围。此外,我想知道与功能及其计算方式的极端情况。

我知道我应该明白这些是什么,但到目前为止我只采用了代数2和几何,但我已经冒险进入物理,矩阵/矢量数学和数据结构,所以请原谅我,如果我看起来很天真

6 个答案:

答案 0 :(得分:5)

通常,所有在项目集合中查找特定项目的算法都称为search algorithms。当项目集合由数学函数定义时(与数据库中存在的相反),它被称为搜索空间

此类最着名的问题之一是travelling salesman problem,其中寻找一种算法,在给定城市及其距离列表的情况下,找到仅访问每个城市一次的最短路径。对于这个问题,只有通过检查所有可能的路径(整个搜索空间),并找到最短路径(具有最小距离,即搜索空间中的极端值。这种算法的最佳时间复杂度(称为穷举搜索)是指数级的(尽管可能存在better solution),这意味着最坏情况下的运行时间会增加随着城市数量的增加呈指数级增长。

这就是遗传算法发挥作用的地方。与其他heuristic algorithms类似,遗传算法试图通过迭代地改进候选解决方案来接近最优解,而不能保证实际找到最优解。

这种迭代方法存在的问题是,算法很容易在局部极端“陷入困境”(同时试图改进解决方案),而不知道在更远的地方有更好的解决方案:

enter image description here

该图显示,为了获得实际的最佳解决方案(全局最小值),目前正在检查围绕本地最小值的解决方案的算法需要“跳过”搜索空间中的最大值。遗传算法将快速找到这样的局部优化,但它通常不会“牺牲”这种短期收益来获得可能更好的解决方案。

所以,摘要将是:

  • 详尽搜索

    • 检查整个搜索空间(长时间)

    • 找到全局极端

  • 启发式(例如遗传算法)

    • 检查搜索空间的一部分(短时间)

    • 找到当地极端

答案 1 :(得分:2)

遗传算法在调整到局部最优时并不好。如果你想找到一个全局最优,至少你应该能够接近或找到一个接近局部最优的策略。最近已经开发了一些改进以更好地找到局部最优。

“用于信息基础功能选择的遗传算法” 从小波包分解到应用 使用声发射进行腐蚀识别“

http://gbiomed.kuleuven.be/english/research/50000666/50000669/50488669/neuro_research/neuro_research_mvanhulle/comp_pdf/Chemometrics.pdf

答案 2 :(得分:1)

一般来说,“搜索空间”意味着,您在寻找什么类型的答案。例如,如果您正在编写构建桥梁的遗传算法,测试它们,然后构建更多,您正在寻找的答案是桥梁模型(以某种形式)。再举一个例子,如果你试图在一些点上找到一组与一组样本输入一致的函数,你可能会试图找到一个具有这个属性的多项式。在这种情况下,您的搜索空间可能是多项式。您可以通过对术语数量,多项式的最大度数等进行限制来使这更简单...因此,您可以指定要搜索范围为[-4,4]的整数指数的多项式。在遗传算法中,搜索空间是您可以生成的一组可能的解决方案。在遗传算法中,您需要仔细限制搜索空间,以避免完全愚蠢的答案。在我以前的大学里,一名物理专业的学生写了一个程序,它是一个GA来计算分子中原子的最佳配置,具有低能量特性:他们找到了一个几乎没有能量的伟大解决方案。不幸的是,他们的解决方案将所有原子放在分子的确切中心,这在物理上是不可能的:-)。 GA非常善于为您的健身功能提供良好的解决方案,因此选择您的搜索空间非常重要,这样它就不会产生具有良好适应性的解决方案,但实际上是“不可能的答案”。

至于功能的“极端”。这只是函数获取其最大值的点。关于遗传算法,您希望找到解决问题的最佳解决方案。如果您正在建造一座桥梁,那么您正在寻找最好的桥梁。在这种情况下,你有一个健身功能可以告诉你“这座桥可以承受80磅的重量”和“那座桥可以承受120磅的重量”然后你四处寻找具有比其他更高的健身价值的解决方案。一些函数具有简单的极值:您可以使用简单的高中微积分找到多项式的极值。其他功能没有一种简单的方法来计算它们的极值。值得注意的是,高度非线性函数具有极端情况,可能很难找到。遗传算法擅长使用巧妙的搜索技术找到这些解决方案,这种技术可以寻找高点,然后找到其他点。值得注意的是,还有其他算法可以做到这一点,特别是登山者。使GA与众不同的是,如果你发现局部最大值,其他类型的算法可能会被局部良好的解决方案“卡住”,因此他们永远不会在搜索空间中看到更好的解决方案。还有其他一些方法可以让登山者适应这种情况,模拟退火,其中一种方法。

答案 3 :(得分:1)

范围空间通常需要对您尝试解决的问题有一些直观的了解 - 在问题领域的某些专业知识。实际上没有保证选择范围的方法。

极值只是函数的最小值和最大值。

因此,例如,如果您只是为了练习而编写GA,要找到f(x)= x ^ 2的最小值,您就会非常清楚您的范围应该是+/- 某事,因为你已经知道你将在x = 0找到答案。但是当然,你不会使用GA,因为你已经有了答案,即使你没有,你可以使用微积分找到它。

遗传算法的一个技巧是采取一些现实问题(通常是工程或科学问题)并将其转化为可以最小化或最大化的某些数学函数。但是如果你这样做,你可能已经有了解决方案可能存在的基本概念,所以它并不像听起来那么无望。

答案 4 :(得分:1)

术语“搜索空间”不限于遗传算法。我实际上只是指optimization problem的解决方案集。 “极值”是一种最小化或最大化目标函数相对于搜索空间的解决方案。

答案 5 :(得分:0)

简单地说,搜索空间是所有可能解决方案的空间。如果您正在寻找最短的旅行,搜索空间包括可以形成的所有可能的旅行。但是,请注意,它不是所有可行解决方案的空间!它只取决于您的编码。如果您的编码是例如一个排列,比搜索空间的排列是n! (阶乘)大小。如果您希望最小化某个函数,则使用实值输入的搜索空间,搜索空间受实值输入的超立方体限制。它基本上是无限的,但当然受到计算机精度的限制。

如果您对遗传算法感兴趣,也许您对试验我们的软件感兴趣。我们用它来教授课堂中的启发式优化。它是基于GUI和基于Windows的,因此您可以立即开始。我们已经包含了许多问题,例如实值测试功能,旅行推销员,车辆路线等。看看某代TSP的最佳解决方案如何在几代人中得到改善。它还暴露了元启发式参数化的问题,让您找到更好的参数,更有效地解决问题。你可以在http://dev.heuristiclab.com获得它。