私は、遺伝的アルゴリズムを使用して時刻表をスケジュールする簡単なアプリケーションを開発中です。私はさまざまな例を見てきましたが、それらのほとんどはアルゴリズムを使用して、さまざまな世代で最初に指定されたソリューションに到達しているように見えますが、制約に基づく他のソリューションではありません。
たとえば、メインクラスでは次のようになります。
FitnessFunction.setSolution("0001012002");
出力:
compile:
run:
Generation: 1 Fittest: 5
Generation: 2 Fittest: 6
Generation: 3 Fittest: 7
Generation: 4 Fittest: 9
Solution found!
Generation: 4
Genes:
0001012002
何らかの方法でフィットネス関数を宣言する必要があることを理解しています。たとえば、1 は日勤、2 は夜勤を表します。私の質問は、2 は 1 に従うことができますが、1 は 2 に従うことはできないという制約をどのように追加するのですか? 最初に指定されたソリューションを一連の制約に置き換える必要がありますか? そして、それはコードではどのように見えるでしょうか?
どんな助けでも感謝します、ありがとう!