遗传算法找到2个变量的函数的最小值
Genetic algorithm to find minimum of a function of 2 variables
我正在研究 GA,我想用它来找到 f(x,y) 的最小值
前任。 z=sin3x+cos4y
现在,我的问题是我应该如何对待染色体 x 和 y。他们应该是两个独立的群体吗?它们应该编码在同一条染色体上吗?
首先 - 你的函数是可分离的。这意味着您可以分别优化每个维度(x 和 y)——例如,您可以修复y 到 0,你只关注 x 并找到最小值。然后你修复 x 并找到 y 中的最小值。然后你就完成了。如果你的功能不可分离,你就不能那样做。不可分函数的最简单示例是 f(x, y) = xy.
关于 GA 的内容 - 这取决于您所说的 GA 是什么意思。如果您真的是指经典的 GA 演化二进制字符串,那么这在实值优化中是一种糟糕的方法。更好的方法是使用实值 GA(或更精确的 EA)。在那一个中,基因型由实数本身组成,即 x 和 y(因为它们都是一个解决方案,而不仅仅是其中一个)。您当然需要使用不同的突变和交叉运算符。查看我博客上的 post,我在其中写了关于它的内容(您可以安全地跳到 "Real-valued Evolution" 部分)。
我正在研究 GA,我想用它来找到 f(x,y) 的最小值 前任。 z=sin3x+cos4y 现在,我的问题是我应该如何对待染色体 x 和 y。他们应该是两个独立的群体吗?它们应该编码在同一条染色体上吗?
首先 - 你的函数是可分离的。这意味着您可以分别优化每个维度(x 和 y)——例如,您可以修复y 到 0,你只关注 x 并找到最小值。然后你修复 x 并找到 y 中的最小值。然后你就完成了。如果你的功能不可分离,你就不能那样做。不可分函数的最简单示例是 f(x, y) = xy.
关于 GA 的内容 - 这取决于您所说的 GA 是什么意思。如果您真的是指经典的 GA 演化二进制字符串,那么这在实值优化中是一种糟糕的方法。更好的方法是使用实值 GA(或更精确的 EA)。在那一个中,基因型由实数本身组成,即 x 和 y(因为它们都是一个解决方案,而不仅仅是其中一个)。您当然需要使用不同的突变和交叉运算符。查看我博客上的 post,我在其中写了关于它的内容(您可以安全地跳到 "Real-valued Evolution" 部分)。