私はインタラクティブなジョブ スケジューリング アプリケーションに取り組んでいます。対応する容量/可用性プロファイルを持つ一連のリソース、これらのリソースで実行される一連のジョブ、およびジョブ シーケンスとジョブの最早/最遅開始/終了時間を決定する一連の制約が与えられた場合、ユーザーが手動で移動できるようにしたい周りの仕事。基本的には、ユーザーがジョブ ネットワークのノードを「つかみ」、制約に違反することなく前後にドラッグできるようにしたいと考えています。
このイメージは、単純な構成例を示しています。最後の三角形のジョブは、すべてのジョブの最終終了時刻を示し、ジョブ間の接続線はジョブに順序を課し、灰色/緑色のバーはリソースの可用性と負荷を示します。
任意のジョブをドラッグして、スケジュールを圧縮できます。能力プロファイルが異なるため、ジョブの長さが変わることに注意してください。
ちょっと機能するアドホックアルゴリズムを実装しました。ただし、失敗していくつかの制約に違反する場合がまだあります。ただし、ジョブ ショップ スケジューリングは、一般的な NP 困難な問題に対する最適な (または適切な) ソリューションを見つけるための多くのアルゴリズムとヒューリスティックを備えた十分に研究された分野であるため、より簡単なサブセットにはソリューションが存在するはずだと考えています。制約プログラミングのトピックや物理ベースのソリューション (静的ジョイントを介して接続された剛体) を調べましたが、これまでのところ適切なものが見つかりませんでした。ポインター/ヒント/ヒント/検索キーワードはありますか?