我要解决使用遗传算法含有n个变量n个线性方程系统。

我有在限定所述交叉操作作为溶液可以由浮点值的难度。我该如何继续?这似乎可能的,但是这是我与遗传算法的第一次相遇。

假设我们要解决

 x + 2y = 1
2x + 8y = 3

答案将是X = 1/2并且y = 1/4。

我们如何的问题模型?

更新:看看你是否可以从纸张的 http://www.masaumnet.com/archives/mjbas/volume1/issue2/mjbas010205.pdf

有帮助吗?

解决方案

一个路径是选择自己的浮点表示,只要你想这将释放你有多少价值。当然,这会让你负责执行算术运算。也许你会发现,你可以改变BIGNUM库。

您也可以使用分解例如本地平台浮点在交叉步frexp,然后剔除过程中重新结合它。

其他提示

您可以染色体是n浮点数(双打),或者你可以通过使用一个联合重新解释为位串:

const int n = 100;

union Chromosome {
  double val[n];
  unsigned char bits[n * sizeof(double)];
};

...那么你可以使用该解决方案/健身价值的诠释了双重价值,以及位繁殖/交叉/变异。

祝你好运!

您根本就没有。有很多的可以适用于解决线性系统不同的方法。但“遗传算法”是不是想到的。你会使用遗传算法来解决问题combinatorical(挑选一个元件出的有限设置的)。

您通常解决使用因式分解(QR,LU)或迭代算法线性系统(高斯 - 塞德尔,CG,...)

您需要考虑使用一个真正的编码遗传算法,而不是二进制编码的遗传算法在你提到的文件建议。事实上,如果您使用的是二进制编码的遗传算法,那么你将无法找到解决的方程式,如果你的“X”,“Y”可以取负值。

因此需要使用真正的编码遗传算法。要么你可以自己编写整个遗传算法,或者你可以使用一个很好的现有RGA代码来解决你的问题。你只需要自定义适应度函数为您的需要。在这里,您可以使用建议的文件之一。这是很容易!

您可以考虑使用RGA实现从 http://www.iitk.ac 。在/的Kangal / codes.shtml

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top