2015-08-03 139 views
1

我正在学习遗传算法,我想实现它以找到一个最小的f(x,y) 前。 z = sin3x + cos4y 现在,我的问题是我应该如何治疗染色体x和y。他们应该是2个独立的人口吗?它们是否应该编码在相同的染色体上?遗传算法找到2个变量的函数的最小值

+0

嗨,欢迎。恐怕这个问题可能会被封闭,因为它需要特定的领域知识。如果您可以将问题简化为编程问题,我们可能会提供帮助。 –

+0

如果你还没有编写任何代码,这可能会在这里脱离主题。但是,通过您的问题的声音,最好在交叉验证的SE上提问。只需先在http://stats.stackexchange.com/help/检查他们的帮助,以确保它是在那里的话题。 – Calcolat

+0

我打算花点时间研究一下这个问题,但如果你找到一个支持研究的答案,请告诉我。我对这个解决方案非常感兴趣,但我认为GA不是解决问题的最佳方法。但是,如果我必须打赌,我会说做一个复合个人。 – RockJake28

回答

0

首先 - 你的功能是可分离的。这意味着您可以分别优化每个维度(x和y) - 您可以修复例如y为0,你只关注x并找到最小值。然后你修复x并在y中找到最小值。然后你就完成了。如果你的功能不可分离,你不能这样做。不可分的函数最简单的例子是f(x,y)= xy。

对于GA的东西 - 这取决于你的意思是GA。如果你真的认为经典遗传算法演化的二进制字符串比实际值优化中的一个坏方法。更好的方法是使用实​​值GA(或EA更精确)。在那一个中​​,基因型是由实数本身组成的,即x和y(因为它们都是解决方案,而不仅仅是其中之一)。你当然需要使用不同的变异和交叉算子。看看我的博客上的post,我完全写了这个(你可以放心地跳到“实值演化”部分)。

+0

如果该功能不可分离,该怎么办? – Christian

+0

@Christian大部分时间都是如此。如果它不可分离,则必须同时在所有维度上进行优化。这意味着x和y(以及其他如果您的功能更为空间)都是单个解决方案的一部分,并且您可以发展这些解决方案。对于您的功能,一个人(基因型/染色体/ ...)将是一对数字,例如, (3.1,-7.063)。它更清楚吗? – zegkljan