8

私はフライト スケジューリング アプリに取り組んでいます (免責事項: 大学のプロジェクトのため、コードの回答はありません)。この質問には多くの特徴があるため、答える前に注意して読んでください:(

まず、いくつかの用語の問題
があります。飛行機とフライトがあり、それらをペアにする必要があります。簡単にするために、飛行機は、それを使用するフライトが着陸するとすぐに解放されると仮定します。

フライトはタスクと見なされます。

  • それらには期間があります
  • 依存関係があります
  • 開始予定日時がある

プレーンは、タスク (用語ではフライト) で使用されるリソースと見なすことができます。

フライトには、必要な特定のタイプの飛行機があります。たとえば、フライト 200 にはタイプ B の飛行機が必要です。飛​​行機は明らかに 1 つだけ特定のタイプです。たとえば、Plane Airforce One はタイプ C です。

「プロジェクト」とは、特定の期間における航空会社によるすべてのフライトのセットです。

必要な機能は次のとおりです。

  • 上記のプロジェクトの最短期間を見つける

  • タスク (フライト) の可能な最早および最遅の開始

  • 重要なタスクは、提供されたデータに基づいており、先行するタスクの識別子を備えています。

  • すべてのフライトが飛行機とペアになるように、フライトと飛行機を自動的にペアにします。(注:飛行時間は決まっています)

  • すべてのフライトができるだけ早く開始され、以前に参照されたすべてのデータ (依存関係、時間情報など) がグラフィカルに表示される、プロジェクトのスケジュールを含むガント ダイアグラムを取得します。

質問は次のとおりです。一体どうすればこれを達成できるのでしょうか? 特に:

  • グラフを使用する必要があります。
    • グラフのエッジとノードはそれぞれ何を象徴していますか?
  • クリティカル タスク セットを達成するために、タスクを破棄する必要がありますか?

また、検索するアルゴリズムをいくつか推奨していただければ、それは素晴らしいことです.

4

2 に答える 2

5

ここにいくつかの提案があります。

原則として、すべてのノードがフライトであり、B が A に依存している場合、つまり A が着陸する前に B が離陸できない場合、フライト A からフライト B へのエッジがあるグラフを作成できます。この依存関係グラフを使用して、プロジェクトの可能な限り短い期間を計算できます。つまり、パス上のすべてのフライトの期間を合計すると、最大期間を持つグラフを通るパスを見つけます。これがプロジェクトの「クリティカル パス」です。

ただし、飛行機とペアリングする必要があるという事実により、特に難しくなります。飛行機は乗客なしでは飛行できない、つまり飛行機は最後に着陸したのと同じ都市から離陸しなければならないと想定されていると思います。

プレーンの数が多すぎる場合は、シミュレーテッド アニーリングのような組み合わせ最適化アルゴリズムを使用すると、それらをフライトに簡単に割り当てることができます。計画が非常にタイトな場合、つまり余分なプレーンがない場合は、難しい問題になる可能性があります。

フライトの実際の離陸時刻を設定するには、たとえば、許可されたスケジュールを線形計画問題として、または半正定/二次計画問題として定式化できます。

ここでいくつかの参照:

于 2011-04-21T22:07:18.343 に答える
1

ドメイン モデル (クラス ダイアグラム) を描くことから始めて、次のものを明確に区別してください。

  • 計画不変の事実: PlaneType, Plane, Flight, FlightBeforeFlightConstraint, ...
  • 計画変数:PlaneToFlightAssignment

それらすべてのインスタンスをそのProjectクラス (= ソリューション) にラップします。次に、そのようなソリューションでスコア関数 (AKA フィットネス関数) を定義します。たとえばPlaneToFlightAssignments、(= フライトへの依存) で問題のあるものが 2 つある場合はFlightBeforeFlightConstraint、スコアを下げます。

PlaneToFlightAssignment次に、インスタンスを変更して、最高のスコアを持つソリューションを見つけるだけです。その最適なソリューションを見つけるために使用できるアルゴリズムがいくつかあります。データ セットが非常に小さい場合 (たとえば 10 プレーン)、ブルート フォースを使用できる可能性があります。

于 2011-04-22T06:38:56.217 に答える