ネットワークシンプレックス法 最短路問題,最大流問題,最小費用流問題 などはすべてLPに定式化できる 定式化の方法 特徴 ネットワーク計画2 1 最小費用流問題 各枝の容量と,1単位フローを流すときのコストが与えられたと き,各ノードでの需要量と供給量を満たすような最も費用の安 いフローを求めよ. (7,1) 10 1 (8,2) (容量,コスト) 3 2 (2,2) (7,1) 3 0 4 (10,3) 0 0 (6,5) 5 (7,1) ー5 (4,5) 7 (7,2) (5,5) 6 ー8 供給量(需要量) ネットワーク計画2 2 供給量が正:ソース,供給節点(supply) (1,2) 供給量が負:シンク,需要節点(demand) (7,6) 供給量が0:通過ノード (3,4,5) ネットワーク計画2 3 LPへの定式化 xij : 枝(i, j )を通るフロー cij : 枝(i, j )の単位コスト(負でも良い) uij : 枝(i, j )の容量(下限がある場合もある) とおくと,目的関数は min ∑c x ij ij ( i , j )∈E ネットワーク計画2 4 制約条件 容量制約 0 ≤ xij ≤ uij ∀ (i, j ) ∈ E フロー保存則 (ノードから出て行くフロー) ー(ノードに入ってくるフロー)=需要供給量 ∑ ∑ xij − x ji = bi { j (i , j )∈E } { j ( j ,i )∈E } ∀ i ∈V bi : ノード i での需要供給量 ネットワーク計画2 5 (7,1) 10 1 (8,2) 3 2 (2,2) (7,1) 3 0 4 (10,3) 0 0 (6,5) 5 (7,1) ー5 (4,5) 7 (7,2) (5,5) 6 ー8 ノード1(供給点): x12 + x13 = 10 ノード4(通過点): x43 − ( x24 + x74 ) = 0 ノード6(需要点): x65 − ( x36 + x76 ) = −8 ネットワーク計画2 6 min x12 + 2 x13 + 2 x24 + 5 x25 + 3 x36 + x43 + x57 + 2 x65 + 5 x74 + 5 x76 s.t. x12 + x13 − x12 = 10 + x24 + x25 − x13 =3 + x36 − x43 − x24 =0 + x43 − − x74 =0 + x57 − x65 x25 − x36 =0 + x65 − x57 − x76 = −8 + x74 + x76 = −5 0 ≤ x12 ≤ 7, 0 ≤ x13 ≤ 8, 0 ≤ x24 ≤ 2, 0 ≤ x25 ≤ 6, 0 ≤ x36 ≤ 10, 0 ≤ x43 ≤ 7, 0 ≤ x57 ≤ 7,0 ≤ x65 ≤ 7, 0 ≤ x74 ≤ 4, 0 ≤ x76 ≤ 5 ネットワーク計画2 7 x = (x12 , x13 , x24 , x25 , x36 , x43 , x57 , x65 , x74 , x76 )T u = (7,8,2,6,10,7,7,7,4,5)T c = (1,2,2,5,5,1,1,2,5,5)T , b = (10,3,0,0,0,−8,−5)T 1 1 1 1 −1 −1 1 −1 A= −1 −1 1 −1 1 −1 −1 − 1 1 − 1 1 1 とおくと min c T x Ax = b, 0 ≤ x ≤ u s.t. ネットワーク計画2 8 (節点枝)接続行列 x12 節点 1 2 3 4 5 6 7 x13 x24 枝 x25 x36 x43 x57 x65 x74 x76 1 1 1 1 −1 −1 1 −1 −1 −1 1 −1 1 −1 −1 − 1 1 −1 1 1 すべての行を足すと0になる 接続行列はフルランクではない ネットワーク計画2 9 (7,1) 10 1 3 2 0 (2,2) (7,1) (8,2) (U,C) (U,C) 3 0 (6,5) 5 ー5 (4,5) 4 7 (7,2) (10,3) 0 (7,1) (U,C) (5,5) 6 ー8 (U,C) 補助節点 補助節点を作り,補助枝 供給点から補助節点への枝 補助節点から需要点への枝 を追加.枝の単位コスト:十分大,容量:十分大 とする ネットワーク計画2 10 x12 x13 x24 x25 1 10 1 1 x36 1 1 1 1 − 3 x 43 0 1 −1 −1 x57 1 −1 −1 = 0 x65 1 −1 0 −1 x74 1 −1 −1 −1 − 8 x76 1 1 −1 − 1 − 5 x1a x2 a xa 6 行列Aはフルランク xa 7 補助枝のフロー ネットワーク計画2 11 補助枝は,人為変数に対応 単位コストを十分大きく取る 補助枝以外のコスト=0(二段階法) →シンプレックス法で最適解が求まる →補助枝にフローがあれば実行不能 逆行列の要素が0,±1 接続行列の特徴 疎性+完全ユニモジュラ性 により,実用上最も有効に解ける ネットワーク計画2 12 最大流問題 各枝の容量が与えられたとき,ソース(ノード1)からシンク(ノー ド7)への流量(フロー)の最大値を求める問題 最大流最小カット定理 ソース 8 7 4 6 1 枝の容量 ネットワーク計画2 2 2 3 1 2 3 4 3 4 1 4 3 5 2 2 0 3 6 3 3 7 3 シンク 8 4 最適フロー(最大値:8) 13 最大流問題の場合の定式化 7 1 4 2 4 1 2 3 4 5 3 2 4 7 3 6 4 補助枝:単位コスト=-1,容量無限大(十分大) 元の枝の単位コストはすべて0として最小費用流問題を解く 需要点,供給点がない:循環流問題 ネットワーク計画2 14 組み合わせ的解法の計算量 節点数 n,枝数 m とする. 最短路問題 ダイクストラ法: O(n 2 ) + O(m ) = O(n 2 ) 最大流問題 Dinic (1970): O(n 2 m ) Goldberg, Tarjan(1986): O(mn log(n 2 ネットワーク計画2 m )) 15 最小費用流 Tardos (1985): O(nm 2 log 2 n + n 3m ) Goldberg, Tarjan (1987): O(nm 2 log n log(n 2 m )) (強)多項式時間アルゴリズム: 計算時間が,節点数と枝数の多項式 ネットワークシンプレックス法は多項式アルゴリ ズムではないが,実用上早い ネットワーク計画2 16
© Copyright 2024 ExpyDoc