目前,我正在学习遗传算法(个人兴趣,不是必须的),并遇到了一些我不熟悉或只是基本熟悉的主题,它们是:
- 搜索空间
- 函数的“极值”
我知道搜索空间是所有可能解决方案的集合,但我也想知道如何确定搜索空间的范围。此外,我想知道在函数中什么是“极值”,以及如何计算。
我知道我可能应该理解这些,但到目前为止,我只学过代数2和几何学,但我自己还涉足物理、矩阵/向量数学和数据结构,请原谅我如果看起来有些天真。
目前,我正在学习遗传算法(个人兴趣,不是必须的),并遇到了一些我不熟悉或只是基本熟悉的主题,它们是:
我知道搜索空间是所有可能解决方案的集合,但我也想知道如何确定搜索空间的范围。此外,我想知道在函数中什么是“极值”,以及如何计算。
我知道我可能应该理解这些,但到目前为止,我只学过代数2和几何学,但我自己还涉足物理、矩阵/向量数学和数据结构,请原谅我如果看起来有些天真。
选择范围通常需要对你要解决的问题具有直观的理解,对问题领域有一定的专业知识。实际上没有保证能够选择到最佳的范围的方法。
极值就是函数的最小值和最大值。
例如,如果你只是为了练习编程而编写一个遗传算法来寻找 f(x) = x^2 的最小值,那么你很清楚你的范围应该是+/-某个值,因为你已经知道答案在x=0处。但即使这样,你也不会使用遗传算法,因为你已经有了答案,即使你没有答案,你也可以使用微积分来找到答案。
遗传算法中的一个技巧是将一些现实世界的问题(通常是工程或科学问题)转化成某个可以被最小化或最大化的数学函数。但如果你这样做,你可能已经对解决方案的位置有了一些基本的概念,所以情况并不像听起来那么绝望。
搜索空间简单来说就是所有可能解决方案的空间。如果你正在寻找最短的路径,那么搜索空间包括所有可能形成的路径。然而,要注意它并不是所有可行解决方案的空间!这取决于您的编码方式。如果您的编码方式是排列,那么搜索空间的大小为n!(阶乘)。如果您想要最小化某个函数,带有实值输入的搜索空间将受到实值输入超立方体的限制。它基本上是无限的,但当然受计算机精度的限制。
如果您对遗传算法感兴趣,也许您会对我们的软件进行试验。我们正在使用它来教授启发式优化课程。它具有GUI驱动和基于Windows操作系统,因此您可以立即开始使用。我们已经包括了一些问题,例如实值测试函数、旅行推销员、车辆路径规划等。这使您可以查看某个TSP的最佳解决方案如何随着各代的改进而逐渐提高。它还揭示了元启发式参数化问题,并让您找到更好的参数以更有效地解决问题。您可以在http://dev.heuristiclab.com处获取它。