制約付きの効率的なジョブスケジューリングの開発方法Javaでプログラミングされた制約
スケジューラは、これらのメソッドを含める必要があります。
startBeforeEndOf(Job j)
startAfterEndOf(Job j)
startBeforeStartOf(Job j)
startAfterStartOf(Job j)
endBeforeEndOf(Job j)
endAfterEndOf(Job j)
endBeforeStartOf(Job j)
endAfterStartOf(Job j)
すべてのジョブには、idと時間のパラメータを持っています。
この問題の可能な解決方法は、技術的なバックトラッキングに基づいている可能性があります。ジョブは選択肢として、一時的な瞬間は選択肢として使用されます(最悪の場合、アクティビティーの合計持続時間は、完全に逐次実行される結果となります)。
代わりに、データを適切に表現し、時間軸上でスケジューリングを生成し、制約が満たされない場合にジョブを制約の下に置き、ジョブ(およびそれに依存するすべてのジョブ)で進めるようにしてください。 しかし、私はどのように私はjavaでこれを行うことができますか分かりません。
言い換えれば、私は激しいバックトラッキングアプローチを回避する方法を探していました。
この宿題ですか?あなたはこれに使用できるアルゴリズムを知っていますか?検索プロセスにヒューリスティックスを追加することもできますが、バックトラックはどちらの方法でも解決策の一部と思われます。あなたが徹底的な検索のために行きたい場合を除き、 –
私はさまざまなリストを使用して個々の仕事を自分の制約に従って分けることを考えています。例えば、プライベートリスト startBeforeEnd; \tプライベートリスト startAfterEnd; \tプライベートリスト startBeforeStart; \tプライベートリスト startAfterStart; \tプライベートリスト endBeforeEnd; \tプライベートリスト endAfterEnd; \tプライベートリスト endBeforeStart; \tプライベートリスト endAfterStart; \tプライベートリストが制限されています。しかし、私はこれをいかに正確に開発できるかはわかりません。 –
AndreaF