4

私たちのプログラムでは、何年も前から遺伝的アルゴリズムを使用して、n 個の変数の問題を解決しており、それぞれが m 個の可能な値の固定セットを持っています。これは通常、変数が 1,000 個まで、可能性が 10 個の場合にうまく機能します。

現在、変数ごとに 2 つの可能性 (オン/オフ) しか存在しない新しいタスクがありますが、おそらく 10,000 以上の変数を持つシステムを解決する必要があります。既存の GA は機能しますが、ソリューションは非常にゆっくりとしか改善されません。

私が見つけたすべての EA は、連続または整数/浮動小数点数の問題用に設計されています。バイナリ問題に最も適しているのはどれですか?

4

3 に答える 3

4

まあ、標準的な形式の遺伝的アルゴリズムは、バイナリ決定問題に最適なメタヒューリスティックの 1 つです。私が試すデフォルトの構成は、1-エリート主義を使用し、ルーレットホイール選択、単一点交差 (交差率 100%)、およびビット反転突然変異 (例えば、5% 突然変異確率) で構成された遺伝的アルゴリズムです。適度な個体数 (100 ~ 200) でこの組み合わせを試すことをお勧めします。これがうまくいかない場合は、人口規模を増やすことをお勧めしますが、選択スキームをトーナメント選択スキームに変更することもお勧めします (バイナリ トーナメント選択から始めて、さらに選択圧力が必要な場合はトーナメント グループのサイズを増やします)。その理由は、人口規模が大きいほど、

別の方法として、GA の高度なバージョンを開発し、子孫選択遺伝的アルゴリズムと名付けました。小さな変更を加えるだけでミューテーションを使用して 1 つのソリューションから別のソリューションに移行する、Tabu Search や Simulated Annealing などの軌跡ベースのアルゴリズムを使用して、この問題を解決することを検討することもできます。

いくつかの問題について多くのメタヒューリスティックを試すことができるGUI 駆動型ソフトウェア ( HeuristicLab ) があります。あなたの問題は残念ながら含まれていませんが、GPL ライセンスであり、そこに独自の問題を実装することができます (GUI だけでも、そのためのハウツーがあります)。

于 2011-11-01T09:22:49.900 に答える
1

線形/整数計画法を試してみませんか?

于 2011-11-03T15:10:10.987 に答える
1

DonAndre が言ったように、カノニカル GA はほとんどバイナリ問題用に設計されています。

でも...

進化的アルゴリズムは、それ自体が魔法の弾丸ではありません(数十億年のランタイムがない限り)。最も重要なのは表現であり、それが突然変異やクロスオーバー演算子とどのように相互作用するかです。これらは一緒になって、本質的に変装したヒューリスティック検索の「インテリジェンス」を定義します。その目的は、各オペレーターが親と同様の適応度を持つ子孫を生成する公平な機会を持つことです。そのため、ランダムにビットを反転したり、ビットストリングをつなぎ合わせたりするよりも優れた処理を実行できるドメイン固有の知識がある場合は、これを使用してください。

ルーレットとトーナメントの選択とエリート主義は良いアイデアです (1 つ以上を保存することは、黒魔術だと誰が言うことができますか...)。適応突然変異の恩恵を受けることもできます。古い経験則では、子孫の 1/5 が親よりも優れている必要があります。この量を追跡し、突然変異率を適切に変化させます。子孫が悪化している場合は、突然変異を減らします。子孫が一貫して優れている場合は、さらに変異します。しかし、突然変異率には慣性コンポーネントが必要なので、あまり急速に適応することはありません。他のメタパラメータと同様に、これを設定することは黒魔術のようなものです。幸運を!

于 2011-11-01T11:35:08.387 に答える