1 / 35

配送計画を立てる

配送計画を立てる. 基本的な配送計画 特殊ケース 多種の制約 バリエーション 近傍探索 近傍探索の高速化. 配送計画とは. • デポ(配送基地・荷物の集積所)に荷物があり、それをトラックで顧客に配送する際の、最適な配送の仕方(各トラックのルート)を求める問題. 問題例1:部品配送. • ある 部品工場 から、他の 工場 へ、週に1度部品の配送を行う。部品の量は大体一定なので、 毎週同じルート で配送しても差し支えない • 配送コストを抑えるため、配送ルートを固定して トラックの台数と移動距離を最小化 したい(一回きっちり解きたい)

samara
Télécharger la présentation

配送計画を立てる

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 配送計画を立てる • 基本的な配送計画 • 特殊ケース • 多種の制約 • バリエーション • 近傍探索 • 近傍探索の高速化

  2. 配送計画とは •デポ(配送基地・荷物の集積所)に荷物があり、それをトラックで顧客に配送する際の、最適な配送の仕方(各トラックのルート)を求める問題

  3. 問題例1:部品配送 •ある部品工場から、他の工場へ、週に1度部品の配送を行う。部品の量は大体一定なので、毎週同じルートで配送しても差し支えない •配送コストを抑えるため、配送ルートを固定してトラックの台数と移動距離を最小化したい(一回きっちり解きたい) •工場間距離はナビで計算か、直線距離

  4. 問題例2:宅急便 •宅急便の集配所から、トラックでお客に荷物を配送する。 • コスト最小化のため、台数と移動距離を最小化したい。 • お客は毎日変わるので、毎日解きたい • お客が指定した時間に到着する必要がある。 11:00! 17:00! 午前中!

  5. 問題例3:乗合いタクシー •複数のお客が乗合うタクシーの会社がある •あちこちで順番に、指定した時間にお客を拾い/降ろす (お客を拾い空港へ向かう等。乗り降りの順番はどうでもいい) •移動距離が長いと客から文句が来る •他の客のために大回りをすると文句が来る •他の客の待ち時間が長いと文句が来る

  6. 問題例4:工作機械のスケジュール •工作機械で、それぞれの製品を修理する • 製品 iを修理した後、製品 jの修理を始めるには、セットアップの時間が dijかかる • 使用する機械の数を少なく、総セットアップ時間を短くしたい

  7. お客が沢山いると難しい •小さい問題は人手で簡単に解けるが、客が増えると、とりあえずのルートを見つけるだけでも大きな手間がかかる

  8. 基本的な配送計画 入力: 顧客の集合と、顧客間・顧客デポ間の移動距離      各顧客でのサービス時間 解: デポに始まりデポに終わる、トラックのルートの集合 目的関数: 運送コスト(トラックの総移動距離)、あるいはトラックの台数(解に含まれるルートの数)の最小化 制約条件: •各顧客は、どれかのトラックのルートに含まれていること •場合によっては、(トラックの台数) •各トラックの最大移動距離(運転手の労働時間)

  9. 特殊ケース1 •トラックの台数が1台だと、巡回セールスマン問題になる。 少なくとも、巡回セールスマン問題よりは難しい

  10. (ai+aj)/2 aj/2 各大きさ ai ai/2 大きさ b 特殊ケース2 •特殊なグラフを作り、目的関数をトラックの台数最小化にすると、ビンパッキングになる 長さ b

  11. その他の制約 •実際の問題を解こうとすると、いろいろな制約が必要 最大積載量: 各トラックについて顧客に届ける荷物の総重量が、最大積載量を超えないこと 時間指定:トラックの、顧客への到着時間に、 (ある範囲の)指定がある トラックの大きさ:トラックに種類がある場合(10t、2tなど)、各顧客にサービスできるトラックの種類の限定(狭い道に面する顧客には大型トラックは使えない、など) 到着の順序: ある顧客をサービスしてから、ある顧客へ行くこと、などのルート内の順序 ドライバーの労働時間のばらつき: 長いルートと短いルートがあるのは、良くない

  12. バリエーション1 •デポが複数の場合 •顧客は、どのデポのトラックがサービスしても良い 顧客対デポの制約: ある顧客をサービスできるデポの制限

  13. バリエーション2 •トラックルートの、始点と終点のデポが異なっても良い場合 始点と終点が異なるトラックの台数制約 始点と終点の組みに対する禁止制約

  14. バリエーション3 •回転(一度デポに戻ること)をゆるす場合

  15. 乗合いタクシー問題 •荷物を降ろす顧客と、荷物を積み込む顧客がある 顧客対デポの制約: 「顧客Aを乗せる」と「顧客Aを降ろす」は同じトラックでサービス

  16. 問題の難しさ •NP-hard と呼ばれる、難しい問題のクラスに属する •01 整数計画問題として定式化できる   ただし、整数計画ソルバーで解いても、効率が悪い •近似解法・発見解法を使うのが普通 •実用上十分な精度の解が得られる (そもそも人手で解くより、はるかに短時間、手間もかからない。それにそれなりの解の精度があれば十分) (そもそも、移動距離・サービス時間の誤差が最初からある)

  17. 近似解法1 •デポからの方角で、顧客をグループ分けする •それぞれの区画を、トラック1台で回る •それぞれの区画は巡回セールスマン問題で解く •計算時間は、O(巡回セールスマン問題 ×顧客数) 顧客数 → +∞ のとき、最適解の2倍程度に収束する

  18. セービング法 •最初、すべてのトラックのルートを空にする •顧客を1つずつ、最も移動距離が増えないルート(挿入可能なルート)に挿入する •計算時間は O(顧客数2) 平均的に、誤差10-20%くらいに収まる

  19. 近傍探索1 •ルート内の変更 巡回セールスマンの近傍探索を使えばよい   2-opt、挿入近傍など    数:(長さ)2(台数)

  20. 近傍探索2 •ルートの組に対する変更   移動: ある顧客を、別のルートのどこかの位置に挿入           数: (長さ)2(台数)2

  21. 近傍探索3 •ルートの組に対する変更   2-exg: 2つのルートを途中で切り、後半を交換          数: (長さ)2(台数)2

  22. 近傍探索4 •ルートの組に対する変更 クロス近傍: 2つのルートの部分ルートを交換する         数: (長さ)4(台数)2 全部使うと強力。局所探索でも最適解近くまで行く

  23. 例題 4 2 8 • 距離は縦横に移動した数、最大積載量は10、最大移動距離は 20 3 3 4 2 1 4 2 1 5

  24. 例題 4 2 8 • 距離は縦横に移動した数、最大積載量は10、最大移動距離は 20 3 3 4 2 1 4 2 1 5

  25. 例題 4 2 8 • 距離は縦横に移動した数、最大積載量は10、最大移動距離は 20 3 3 4 2 1 4 2 1 5

  26. 例題 4 2 8 • 距離は縦横に移動した数、最大積載量は10、最大移動距離は 20 3 3 4 2 1 4 2 1 5

  27. 例題 4 2 8 • 距離は縦横に移動した数、最大積載量は10、最大移動距離は 20 3 3 4 2 1 4 2 1 5

  28. 例題 4 2 8 • 距離は縦横に移動した数、最大積載量は10、最大移動距離は 20 3 3 4 2 1 4 2 1 5

  29. 例題 4 2 8 • 距離は縦横に移動した数、最大積載量は10、最大移動距離は 20 3 3 4 2 1 4 2 1 5

  30. 例題 4 2 8 • 距離は縦横に移動した数、最大積載量は10、最大移動距離は 20 3 3 4 2 1 4 2 1 5

  31. 実際の計算時間 •仮に、顧客数を1000、トラックを30台とする ルートの長さはだいたい30になる •それぞれの近傍の大きさは   (長さ)2(台数)2≒(顧客数)2          ≒100万   (長さ)4(台数)2≒(長さ)2(顧客数)2   ≒10億 •近傍1つの目的関数の評価に、長さ分の計算時間がかかる 全部の近傍の評価をする、300億 •パソコンは1秒で1億回くらいの計算ができる 3000秒。だいぶ遅い (局所探索でも1日かかりそう)

  32. 計算の高速化 •近傍1つの目的関数の評価に、長さ分の計算時間がかかる ここを速くする •よく見ると、近傍の各解は、1箇所ずつ異なっている •異なる部分についてだけ O(1)時間で再計算する。 •ルートの距離、最大積載量など、だいたいの制約がチェック可 • 到着時間の制約も、工夫するとできる    (ルートの長さ/3)倍くらいの高速化

  33. 計算の高速化2 •改善の可能性のある近傍だけチェックする •クロス近傍は、2-exg近傍を2回行ったもの (ルートの長さが)改善されるなら、どちらかの2-exgで改善がある •改善のある2-exg近傍を含むクロス近傍だけチェックする (一概には言えないが)300倍くらいの高速化

  34. 計算の高速化3 •目的関数の計算時間の改善          ‥ ‥ 10倍 •改善の可能性のある近傍だけチェックする ‥ ‥ 300倍 合計3000倍   一回の計算が1秒になった。 これなら、1分ぐらいで、局所探索も終わりそう 課題:  到着時間指定などの難しい制約が入っていると こう、うまくはいかない •どうしたものか

  35. まとめ •基本的な配送計画の紹介     (入力、出力、変数、制約、目的関数の定義) •特殊ケースと難しさ •よく使われるいろいろな制約  最大積載量、到着時間、トラックの種類、到着順 •拡張問題  複数デポ、回転、始終点不一致、乗り降ろし •近似解法   エリア分割、セービング法 •近傍探索   巡回セールスマンのもの、挿入、2-exg、クロス •近傍探索の高速化   目的関数の評価法、可能性のない候補の除外

More Related