欧州における「一帯一路」構想と 中国の投資・プロジェクト …...欧州における「一帯一路」構想と 中国の投資・プロジェクトの実像
最短路プロジェクト 共同研究 中間報告 2007 年 10 月
description
Transcript of 最短路プロジェクト 共同研究 中間報告 2007 年 10 月
最短路プロジェクト
共同研究 中間報告2007 年 10 月
久保 幹雄
プロジェクト概要
高速化+拡張モデル・ a priori strategy・ robust
optimization
高速化+拡張モデル・ a priori strategy・ robust
optimization
メモリ階層の考慮メモリ階層の考慮
メモリ階層を考慮した高速化
• 従来の「前処理+クエリ」アルゴリズム数 GB の主記憶にネットワークデータ+補助データが保管されていることを仮定
• 実際には...レベル1キャッシュ 1 ナノ秒 10 KBレベル 2 キャッシュ 10 ナノ秒 512KB主記憶 100 ナノ秒 MB-GB フラッシュ,ディスク 10 ミリ秒 数 GB
メモリ階層と最短路クエリ
クエリに必要な
補助データ
クエリに必要な
補助データ
2000万点の
ネットワーク
2000万点の
ネットワーク
最短路最短路
補助データ補助データフラッシュディスク
主記憶キャッシュ
2 次元ビットベクトル法領域間のネットワーク(数 K )
Transit Points への最短路木(数十K )
拡張モデル
従来の最短路モデルをナビ用に拡張する.
• 時刻依存最短路• 高速費用(+時刻依存)の考慮• 多目的• 渋滞情報と動的確率的最短路
時刻依存の移動時間をもつ最短路
• 時間帯別の平均速度の情報が利用可能• 現在の商用システムでは,現時点における各
道路の移動時間の推定値をもとに,最短路を計算
• 道路だと追い越し不可( FIFO )で待ちは許さない( no-wait ) ⇒ Dijkstra 法の自明な拡張
時刻依存最短路
現在時刻
現在の時速=40km到着時=20 km
現状のナビゲーションでは現在時刻での最短時間パス-> 到着時の時速を予測し,時刻依存の最短時間パス
お客さんこの先はいつ
も8時から9時
は渋滞ですよ
解法のアイディア• 移動時間のかわりに到着時刻関数を使う
-> 通常のダイクストラ法と(ほぼ)同じ計算量の解法
時刻依存の移動費用
• 深夜割引( 30%):午前0時~午前4時の間の走行• 早朝・深夜割引( 50%):夜間 22 時~翌 6 時まで
の間に 大都市近郊区間を利用し、かつ総利用距離が100km 以内
• 通勤割引( 50%):朝夕の通勤時間帯(朝 6 ~ 9 時または夕方 17 時~ 20 時の間)に入口もしくは出口料金所を通過し、かつ総利用距離が 100km 以内(大都市近郊区間は除く)
重複適用不可.他に社会実験と称した特例あり.
通勤割引の例 http://www.go-etc.jp より引用
割引適用回数を状態空間に保管する
土日祝日 20:00-22: 00にICを通過
50% オフ
検索したルートに対して ETC 割引料金を表示した例( MapFan HP )
時刻依存の移動費用をもつ最短路
• 移動時間の場合と異なり,待ちを許す.• 発時刻も変数として扱う可能性あり. => NP-hard
• 現在のシステムでは,求めた最短時間路に対して費用を計算するだけ.
• 高速ネットワークのみ時刻依存の移動費用を付加したアルゴリズムの提案
時刻依存の移動費用をもつ最短路アルゴリズム (1)
料金所高速ネットワーク(完全有向グラフ)
発時刻固定
時刻依存の移動費用をもつ最短路アルゴリズム (2)
時間
6:00
移動費用が変化する切れ目の時刻
待ちを表す枝
到着時刻関数より着時刻計算 =>枝の費用が決まる( e.g., 9:00 前なら通勤 割引が適用される)
発時刻が変数のとき
移動費用が変化する切れ目の時刻
2 次元ビットベクトル法などで求めた経由点( Transit Nodes)
着時刻を切れ目の時刻とした逆向きの最短路
多目的の最短路問題• 現実では意思決定者は最短時間のパスより,種々
の目的のバランスを要求• 移動時間,費用(高速,ガソリン),距離,移動
時間のばらつき,安全性,運転のしやすさなど,複数の目的を有する最短路問題
• 大規模問題でも大丈夫な近似アルゴリズムの開発 ・目的関数のスカラー化による解法 ・メタ解法
• 厳密解法(動的計画)• ユーザの指定したターゲット値を用いた解法
(劣勾配法)
スカラー化による非劣解の部分集合の生成
費用
時間
動的計画
• 点上の情報(状態空間)として,(到着時刻,費用,通勤割引適用回数,右折回数,・・・)を保持
• 非劣解を除去しながら探索• 二次元ビットベクトル法によって疎化
されたグラフと共通する点をもつ高速道路グラフ上で探索
劣勾配法
• 各指標のターゲット値(ユーザーが指定)からの逸脱をペナルティとして,目的関数に組み込む
• 二次元ビットベクトル法による疎化グラフ上で探索
• パスが決まれば高速料金が決まるので,メタ解法で探索しながら,料金を評価
確率的最短路渋滞情報の分類
• なぜ渋滞しているのか?– 自然渋滞(毎度,この地点は渋滞する)– 事故渋滞(どの程度の規模の事故か?何分くら
いで復旧するのか?)– 工事渋滞(どの程度の工事規模か?何時から何
時まで行うのか?)– 天候渋滞(豪雨のためのスピード低下)– その他のイベント渋滞
• =>双方向通信により入手可能
分類ごとの情報の違い
• 自然:予測可能だが,ばらつき大.• 事故:事故の事前予測は困難だが,発生した事故の復旧までの時間は,事故の規模と発生地点から予測可能
• 工事:事前に通知されているが,どの程度の渋滞が発生するかは予測する必要がある.
• 天候:天気予報からある程度は分かるが,渋滞に与える影響は予測する必要がある.
対処法
• 動的確率的時刻依存最短路として定式化• 再ルート計算の可否(ルートの先の方なら変更可能だが,目先のルートの頻繁な更新は避ける) => ローリング・ホライズン方式における freezing
• 事故渋滞 => 寿命モデル(発生時から終了時までの時間の予測)
• 他の渋滞 =>外部情報から道路速度の予測の精度の向上
拡張モデルに対する前処理
• 時刻依存:発時刻をサンプリング• 多目的:目的間の重みをスカラー化法
で決定• 確率的:確率分布の推定が困難 &生起可能なシナリオの数が膨大
=>ロバスト最適化
ロバスト最短路による前処理 (1)
• G=(V,E), 枝 (i,j) に対して移動時間の幅 [Lij,Uij]
• 実現したシナリオ R に対して移動時間 Tij(R) ∈ [Lij,Uij] が定まる.
• シナリオの数が膨大! =>現在の最短路 P に対する最も悪いシナリオを順次生成
P に含まれる枝が最大値,その他の枝が最小値P に含まれる枝が最大値,その他の枝が最小値
ロバスト最短路による前処理 (2)
• Bertsimas のロバスト最短路モデル(高々 Γ本の枝の長さが増加する)
• 双対定理を用いて,増加量 Uij-Lij が θ 以上の枝だけ移動時間を Uij として最短路を解く問題に帰着.
• ロバストな a priori network:様々な Γ に対して使われる最短路の和集合 =>様々な θ に対する最短路の和集合
再最適化の利用
• 初期最短路: θ=0 (すべての枝を上限値としたネットワーク上で最短路を解く)
• 次の閾値まで θ を増やす =>幾つかの枝の距離が減少する =>再最適化の手法により計算量削減
再最適化
• 1つの点 s に接続する枝の距離が減少:– s に入る枝の最小の被約費用を点のポテン
シャル p(s) とする.– s からでる枝 (s,j) のポテンシャルを p(s)+被約費用 (s,j) とする.
– 他の点のポテンシャルを 0 とする.– 負のポテンシャルの点がなくなるまで,被約費用を枝長とした Dijkstra 法を行う.
ロバスト a priori network の例(最悪シナリオ生成法 1 )
sstt
[1,5]
[2,3]
[2,4]
[10,16]
[20,23]
[1,4]
[3,3]
[3,5]
[Lij,Uij]
下限値を用いた最短時間路を求める
ロバスト a priori network の例 (最悪シナリオ生成法 2 )
sstt
5
[2,3]
[2,4]
16
[20,23]
4
[3,3]
[3,5]
最短時間路
最短路上の枝だけを上限値に固定,それ以外を下限値にして最短路を求解
ロバスト a priori network の例 (最悪シナリオ生成法 3 )
sstt
5
3
4
16
[20,23]
4
[3,3]
[3,5]
最短時間路
最短路上の枝だけを上限値に固定,それ以外を下限値にして最短路を求解
解が変わらないので終了
ロバスト a priori network の例( Bertsimas モデルによる方法
1 )
sstt
[1,5]
[2,3]
[2,4]
[10,16]
[20,23]
[1,4]
[3,3]
[3,5]
[Lij,Uij]
下限値を用いた最短時間路を求める.
ロバスト a priori network の例( Bertsimas モデルによる方法
2 )
sstt
[1,5]
[2,3]
[2,4]
16
[20,23]
[1,4]
[3,3]
[3,5]
幅の大きいものから上限値に変えて,最短路を求める.(変化なし)
ロバスト a priori network の例( Bertsimas モデルによる方法
3 )
sstt
5
[2,3]
[2,4]
16
[20,23]
[1,4]
[3,3]
[3,5]
幅の大きいものから上限値に変えて,最短路を求める.(以下同様;ネットワーク変化なし)