如何使用遗传算法求解线性方程组?(How to solve linear equations usi

2019-10-18 05:44发布

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

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

假设我们有解决

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

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

我们如何模型的问题?

更新 :看看你能破译从纸张任何http://www.masaumnet.com/archives/mjbas/volume1/issue2/mjbas010205.pdf 。

Answer 1:

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

你也可以使用如分解平台的本地浮点frexp在交叉步,然后剔除期间重组它。



Answer 2:

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

const int n = 100;

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

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

祝好运!



Answer 3:

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

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



Answer 4:

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

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

您可以考虑使用从RGA实施http://www.iitk.ac.in/kangal/codes.shtml 。



文章来源: How to solve linear equations using a genetic algorithm?