如何使用遗传算法求解线性方程?

Roh*_*nga 1 c++ algorithm linear-equation genetic-algorithm

我想用遗传算法求解包含n个变量的n个线性方程组.

我很难定义交叉操作,因为解决方案可能包含浮点值.我该怎么办?这似乎是可能的,但这是我第一次遇到遗传算法.

假设我们必须解决

 x + 2y = 1
2x + 8y = 3
Run Code Online (Sandbox Code Playgroud)

答案是x = 1/2和y = 1/4.

我们如何对问题进行建模?

更新:看看你是否可以从论文http://www.masaumnet.com/archives/mjbas/volume1/issue2/mjbas010205.pdf中解读任何内容.

Dre*_*all 6

您的染色体可能是n个浮点数(双精度数),或者您可以通过使用并集将它们重新解释为位串:

const int n = 100;

union Chromosome {
  double val[n];
  unsigned char bits[n * sizeof(double)];
};
Run Code Online (Sandbox Code Playgroud)

...然后你可以使用双值来解释解/适应值,以及用于繁殖/交叉/变异的位.

祝好运!


sel*_*tze 5

你根本就没有.您可以应用许多不同的方法来解决线性系统.但是"遗传算法"并不是我想到的.您将使用遗传算法来解决组合问题(从有限集中挑选一个元素).

您通常使用分解(QR,LU)或迭代算法(Gauß-Seidel,CG,...)来求解线性系统

  • 我不明白为什么*线性*方程应该通过遗传算法比任何其他函数类型更不适合解决方案.程序是一样的.请注意,在*all*这种情况下,您尝试*优化*函数 - 在这种情况下,真实,精确解决方案与通过GA找到的解决方案之间存在差异.GA是遍历解决方案环境的一般模式,不仅限于一组有限的解决方案. (4认同)