【问题标题】:In regards to genetic algorithms关于遗传算法
【发布时间】:2012-03-16 11:01:39
【问题描述】:
目前,我正在研究遗传算法(个人,非必需),并且遇到了一些我不熟悉或只是基本熟悉的主题,它们是:
我知道一个人的搜索空间是所有可能解决方案的集合,但我也想知道人们将如何决定其搜索空间的范围。此外,我想知道与函数有关的极端是什么以及它是如何计算的。
我知道我应该明白这些是什么,但到目前为止,我只学习了代数 2 和几何,但我自己冒险研究了物理、矩阵/向量数学和数据结构,所以如果我看起来很幼稚,请见谅.
【问题讨论】:
标签:
algorithm
function
search
genetic-algorithm
【解决方案1】:
一般来说,“搜索空间”是指您正在寻找什么类型的答案。例如,如果您正在编写一个构建桥梁的遗传算法,测试它们,然后构建更多,您正在寻找的答案是桥梁模型(以某种形式)。再举一个例子,如果您试图找到一个与一组样本输入在一定数量的点上一致的函数,您可能会尝试找到一个具有此属性的多项式。在这种情况下,您的搜索空间可能是多项式。您可以通过限制项数、多项式的最大次数等来简化此操作……因此您可以指定要搜索整数指数在 [-4, 4] 范围内的多项式。在遗传算法中,搜索空间是您可以生成的一组可能的解决方案。在遗传算法中,您需要仔细限制搜索空间,以避免完全愚蠢的答案。在我以前的大学里,一个物理系的学生写了一个程序,它是一个 GA 来计算分子中原子的最佳配置以具有低能量特性:他们找到了一个几乎没有能量的很好的解决方案。不幸的是,他们的解决方案将所有原子都放在分子的确切中心,这在物理上是不可能的:-)。 GA 确实会为您的适应度函数提供良好的解决方案,因此选择您的搜索空间非常重要,这样它就不会产生具有良好适应度的解决方案,但实际上是“不可能的答案”。
至于函数的“极端”。这只是函数取其最大值的点。关于遗传算法,您想要解决您要解决的问题的最佳解决方案。如果您正在建造一座桥梁,那么您正在寻找最好的桥梁。在这种情况下,您有一个适应度函数,它可以告诉您“这座桥可以承受 80 磅的重量”和“那座桥可以承受 120 磅的重量”,然后您会四处寻找具有更高适应度值的解决方案。有些函数具有简单的极值:您可以使用简单的高中微积分找到多项式的极值。其他函数没有简单的方法来计算它们的极值。值得注意的是,高度非线性函数具有可能难以找到的极值。遗传算法擅长使用巧妙的搜索技术找到这些解决方案,该技术会四处寻找高点,然后找到其他解决方案。值得注意的是,还有其他算法也可以做到这一点,尤其是爬山者。使 GA 不同的是,如果你找到一个局部最大值,其他类型的算法可能会被局部好的解决方案“卡住”,因此他们永远不会在更远的搜索空间中看到可能更好的解决方案。还有其他方法可以让登山者适应这种情况,例如模拟退火。
【解决方案2】:
范围空间通常需要对您要解决的问题有一些直观的了解——在问题的领域中具有一定的专业知识。确实没有保证选择范围的方法。
极值只是函数的最小值和最大值。
因此,例如,如果您编写 GA 只是为了练习,要找到 f(x) = x^2 的最小值,您很清楚您的范围应该是 +/- something 因为你已经知道你会在 x=0 处找到答案。但是当然,您不会为此使用 GA,因为您已经有了答案,即使您没有,您也可以使用微积分来找到它。
遗传算法的一个技巧是处理一些现实世界的问题(通常是工程或科学问题)并将其转化为可以最小化或最大化的数学函数。但是,如果您这样做,您可能已经对解决方案可能存在的一些基本概念有了一些了解,因此它并不像听起来那么绝望。
【解决方案4】:
通常,所有在项目集合中寻找特定项目的算法都称为search algorithms。当项目集合由数学函数定义时(相对于存在于数据库中),它被称为搜索空间。
此类最著名的问题之一是travelling salesman problem,在该问题中寻找一种算法,该算法将在给定城市列表及其距离的情况下找到仅访问每个城市一次的最短路线。对于这个问题,只有检查所有可能的路线(整个搜索空间),并找到最短的路线(具有 >minimum 距离,即搜索空间中的极值)。这种算法的最佳时间复杂度(称为穷举搜索)是指数级的(尽管仍有可能存在better solution),这意味着最坏情况下的运行时间随着城市数量增加。
这就是遗传算法发挥作用的地方。与其他heuristic algorithms 类似,遗传算法试图通过迭代改进候选解来接近最优解,但不能保证实际找到最优解。
这种迭代方法的问题是,算法很容易陷入局部极端(在尝试改进解决方案时),不知道在更远的地方可能有更好的解决方案:
该图表明,为了获得实际的最优解(全局最小值),当前检查 局部 最小值附近解的算法需要“跳过”搜索空间中的一个很大的最大值。遗传算法将快速定位此类局部最优值,但通常不会“牺牲”这一短期收益来获得可能更好的解决方案。
所以,总结应该是:
【解决方案5】:
搜索空间简单地说就是所有可能解决方案的空间。如果您正在寻找最短的游览,则搜索空间包含所有可以形成的可能游览。但是,请注意,这不是所有可行解决方案的空间!这仅取决于您的编码。如果您的编码是例如一个排列,而不是搜索空间是排列 n! (因子)大小。如果您希望最小化某个函数,则搜索空间与实值输入的搜索空间受实值输入的超立方体的限制。它基本上是无限的,但当然受到计算机精度的限制。
如果您对遗传算法感兴趣,也许您有兴趣试用我们的软件。我们用它在课堂上教授启发式优化。它是 GUI 驱动和基于窗口的,因此您可以立即开始。我们已经包含了许多问题,例如实值测试函数、旅行商、车辆路线等。这使您可以例如看看某个 TSP 的最佳解决方案是如何在几代人中得到改进的。它还暴露了元启发式的参数化问题,让您找到更好的参数来更有效地解决问题。您可以通过http://dev.heuristiclab.com 获得它。