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中解读任何内容.
您的染色体可能是n个浮点数(双精度数),或者您可以通过使用并集将它们重新解释为位串:
const int n = 100;
union Chromosome {
double val[n];
unsigned char bits[n * sizeof(double)];
};
Run Code Online (Sandbox Code Playgroud)
...然后你可以使用双值来解释解/适应值,以及用于繁殖/交叉/变异的位.
祝好运!
你根本就没有.您可以应用许多不同的方法来解决线性系统.但是"遗传算法"并不是我想到的.您将使用遗传算法来解决组合问题(从有限集中挑选一个元素).
您通常使用分解(QR,LU)或迭代算法(Gauß-Seidel,CG,...)来求解线性系统