2016-06-29 6 views
0

配送ルート(月曜日、火曜日など)があります。各ルートには、そのルート(A-Town、B-Town、C-Town)で訪問された都市/郊外のリストと、各都市を行うドライバーのリストがあります(たとえば、ドライバーXはA-TownとB-townをとります) 、DriverYはC-Townを務める)。配送ルート、都市、ドライバーを表す最も良い方法

ドライバを重複させる可能性があるように、クラスの設計に関してこれを表現する最も適応性の高い方法は何ですか?ドライバーが経路の一部を共有するように、しかし異なる日に。各町には複数の配達日があり、それぞれの日に異なる運転手がいます。 EG A-Townは、月曜日はDriver Xを、火曜日はDriver Yを持っているかもしれない。私は配達先住所を持っています。私は配達できる次の曜日を探します。

[月曜日] DRIVERのX:-タウン、B-タウン、G-タウン DRIVER

は今、私は、各ドライバーがそうのように、各曜日ごとに行わ都市のリストを持っているテキストファイルを持っていますY:A-Town、C-Town、Q-Town

構造の種類を実現するよりスマートな方法があるように感じます。

私はPython 2.7(openERP/Odoo)を使用しています。どんな提案も大歓迎です。

都市/地図/最も効率的なルートの間の距離は無関係です。特定の都市が配信スケジュールを最適化するのではなく特定の日に行われることを約束しています。

答えて

1

私はあなたに2つの異なる方法をお勧めします。クラスドライバ - - クラスマップ(町の集合を表すために) - 地図をグラフで表すことができる

クラス町 :

まず:

異なるクラスを作成しますが、あなたの構造を表しします(月曜日〜火曜日)を行うことができるドライバーがあればAとBとの間の重み(例えば、1(日))として距離(時間)を有する(ドライバーのルートの数を有する)可能なノード(たとえば、ドライバXのA-Town)から開始し、出発地点からターゲットまでのパスを検索します。

他の情報を表す方法とグラフを作成する方法を見つけることができます。

第二に(そして、より良い私はよくあなたの問題を理解している場合、私は思う):

、このいずれかを表すために、線形プログラムを作成します。 CPLEXを使用すると、輸送に最適なソリューションが得られます。 実際、この方法は最後のものと互換性がありません。あなたはグラフで状況を表現し、これを使って制約を作成し、(APIまたはシステムコールを介してPythonでさえ)プレプリントを呼び出すことができます。

+0

Hiya。コメントありがとう。実際の地図/経路の最適化は実際には行われません。これは純粋に情報を格納するためのものであり、最も効率的なルートを計算するものではありません。 EG私たちは月曜日に町Aへの配達を約束します。私がここに入ることのないいくつかの理由のために、私たちはルートをより効率的にするようにスケジュールを変更するのではなく、むしろ標準的な配送日を維持するようにします。 – user2757902

関連する問題