2

私は最終年度のプロジェクトに取り組んでおり、時刻表の最適化のための遺伝的アルゴリズムを開発しています。クラスの時間割を表すランダムな染色体を作成しているので、現時点ではかなりうまくいっています。関数フィットネス関数と潜在的な制約を設計しましたが、制約の実際の重み付けにこだわっています。

フィットネス関数として次の関数を使用しています。

1/1 + (Ci*Wci)

Ci が制約 i の違反の量であり、Wci が制約 i の重み付けであるように。

明らかに、ハード制約をソフト制約よりも高く重み付けする必要があります。

以前にこの手法を使用したことがある人はいますか?これらの重み値に推奨される範囲はありますか?

4

1 に答える 1

0

個人の現在のフィットネス値にペナルティを追加するだけの場合、アルゴリズムがペナルティを最小化せずにソリューションを最適化する可能性があるという欠点があります。アルゴリズムがペナルティよりも高い程度に適応度の値を減らすことができる場合、ソリューションはより良くなります。ペナルティを使用する場合は、品質を最適化するだけでなく、実行可能領域に検索を向ける必要があります。

制約違反の量を追加するすべての実行不可能なソリューションについて、一定であるが非常に悪い適合値を想定することをお勧めします。たとえば、現在の母集団の中で最悪の目的を持つ個人は、十分な基本値である可能性があります。これには、すべてのソリューションを1つの順序でまとめるという利点があります。実行不可能なソリューションは、制約に違反する程度でのみ相互に比較され、実行可能なすべてのソリューションは、それらがどれだけ適切であるか、およびそこでのグローバルスケールで比較されます。実現可能性と実行不可能性になります。

あなたがこれをしなければ、あなたはあなたの資質の範囲全体で実行不可能な解決策と実行可能な解決策を混ぜ合わせていることになります。

編集:私はまたあなたの適応度関数に何か問題があると思います。おそらく括弧がありません。

于 2012-11-21T13:01:51.603 に答える