1

遺伝的アルゴリズムを使用して、n 個の変数を含む n 個の線形方程式系を解きたいと考えています。

ソリューションが浮動小数点値で構成されている可能性があるため、クロスオーバー操作を定義するのが困難です。続行するにはどうすればよいですか?可能に思えますが、遺伝的アルゴリズムとの出会いはこれが初めてです。

解決する必要があるとします

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

答えは x = 1/2 で y = 1/4 です。

問題をどのようにモデル化しますか?

更新: 論文http://www.masaumnet.com/archives/mjbas/volume1/issue2/mjbas010205.pdfから何かを解読できるかどうかを確認してください。

4

4 に答える 4

5

あなたは単にしません。線形システムを解くために適用できるさまざまな方法があります。しかし、「遺伝的アルゴリズム」は頭に浮かぶものではありません。遺伝的アルゴリズムを使用して、組み合わせの問題 (有限集合から 1 つの要素を選択する) を解決します。

通常、因数分解 (QR、LU) または反復アルゴリズム (Gauß-Seidel、CG、...) を使用して線形システムを解きます。

于 2009-11-07T08:29:43.590 に答える
1

あなたが参照した論文で示唆されているように、バイナリコード化された遺伝的アルゴリズムではなく、実際のコード化された遺伝的アルゴリズムを使用することを考える必要があります。実際、バイナリコード化された遺伝的アルゴリズムを使用する場合、「x」、「y」が負の値をとることができる場合、方程式の解を見つけることができません。

したがって、実際にコード化された遺伝的アルゴリズムを使用する必要があります。遺伝的アルゴリズム全体を自分でコーディングすることも、既存の優れたRGAコードを使用して問題を解決することもできます。必要に応じてフィットネス機能をカスタマイズする必要があります。ここでは、論文で提案されているものを使用できます。とても簡単でした!

http://www.iitk.ac.in/kangal/codes.shtmlからRGA実装の使用を検討できます。

于 2009-12-19T14:02:18.663 に答える
1

1つのルートは、独自の浮動小数点表現を選択することです。これにより、必要に応じて多くの値を使用できるようになります。もちろん、それはあなたに算術演算を実装する責任を負わせます。おそらく、変更できるbignumライブラリを見つけることができます。

また、クロスオーバーステップなどを使用してプラットフォーム固有のフローティングポイントを分解frexpし、カリング中に再結合することもできます。

于 2009-11-07T12:23:33.027 に答える