web-dev-qa-db-ja.com

複雑な作業スケジュールのモデリング

私が表現して自動化しようとしている実際の問題があります。私はそれを次のように簡略化して抽象化しました:

  • Nの作業場所があります(P1、P2、...、Pn)。
  • 各場所、Pnにはキー、Knがあります。
  • ワーカーがm人います(W1、W2、...、Wm)。
  • Pnで働くためには、労働者はKnを持たなければなりません。
  • 各キーは、労働者が保持するか、取引所Eに残しておくことができます。
  • ワーカーはいつでもExchangeにアクセスして、要求されていないキーを取得したり、他のユーザーが使用できるようにいくつかのキーをドロップしたりできます。

  • 現在、厳格な順序で完了する必要がある外因性の作業スケジュールがあります。例えば:

    • 2016-04-21 W1はP6で働く必要があります
    • 2016-04-21 W2はP3で働く必要があります
    • **鍵の交換が必要です**
    • 2016-04-22 W3はP3で働く必要があります
    • 2016-04-22 W2はP6で働く必要があります
  • 同じ日に決してではないが、スケジュールのある時点でPnで働く必要のある労働者はいくつもいる可能性がある

私たちは知っています:

  • すべてのキーの開始場所(労働者がいる場合またはEの場合)
  • 各労働者が履行しなければならない将来の作業指示

それで、私はこの全体の状況をモデル化するのに苦労しています。データ構造とアルゴリズムを提案して、それを把握し、各ワーカーのエクスチェンジへのトリップの最適化を開始するために検討する必要がありますか?

私が最小化したいのは、Eへの旅行の総数です。2番目の目標は、労働者が不釣り合いな数の旅行をしないようにすることです。

前もって感謝します!!

9
Gareth Lloyd

問題は、1つの重要な点について少しあいまいです。どの要素を解決しようとしているのかです。リソースが委任される順序の最適化を検討していますか?交換への旅行を最小限に抑えますか?作業指示のスループットを最大化しますか?

そのことを念頭に置いて、これらのことを任意に組み合わせて、かなり高いレベルで答えを保つことができると想定します。

最初に頭に浮かぶのは、これが解決しようとする相互に関連する問題は、主に依存関係の管理に集中しているということです。ワーカー、キー、場所は、作業ジョブを完了するために解決する必要がある依存関係と考えることができます。

これを次のレベルに進めるために、トポロジカルソート( https://en.wikipedia.org/wiki/Topological_sorting )の適応について見ていきます。問題の空間を大きなグラフとしてモデル化し(最新のグラフデータベースもこの分析の一部にとって適切な媒体となる場合があります)、さまざまなトポロジカルソートを使用して問題の空間のさまざまな側面を解決します。

少し正接すると、これは本当に楽しいプロジェクトのように聞こえます。今日、私はあなたがうらやましいです。

1
Michael