整数計画問題(Integer Programming) n min ci xi i 1 n s.t. aij x j bi , i 1, ,m j 1 xi 0 i 1, xi : 整数 i 2014/7/11 ,n J 1 (0-1)ナップサック問題の例 max 4 x1 5 x2 12 x3 14 x4 s.t. 2 x1 3 x2 xi 5 x3 6 x4 0 または 1 i 1, 9 ,4 欲張り法の解:(1,0,1,0),目的関数値16 けちけち法の解:(0,0,1,0),目的関数値12 いずれも最適解ではない (最適解は(0,1,0,1)でした) 2014/7/11 2 近似解法・発見的解法の役割 近似解法(発見的解法)は,方法により求ま る(近似)解が異なる (大域的)最適性は保証されない 計算時間は早い メタ戦略の初期解や探索解の生成に有効 2014/7/11 3 分枝限定法(ぶんしげんていほう) 全列挙法の一つ 小さな問題に分割して,そのすべてを解くとい う考え方に基づく方法 探索の途中で,不要な場合分けを省略するこ とで,計算時間を短縮する 2014/7/11 4 ナップサック問題で考える n max ci xi i 1 n s.t. ai xi b, xi 0 or 1 i 1, ,n i 1 問題の分割:一部の変数の0-1割り当てを固定 探索:すべての変数の0-1割り当てを調べる 2014/7/11 5 分枝図 x1 x2 x3 0 (0,0,0) 2014/7/11 0 x3 1 (0,0,1) 0 x1 1 x2 x2 1 0 x3 1 (0,1,0) (0,1,1) x3 x3 0 (1,0,0) 0 x2 x3 1 x3 (1,0,1) 1 0 x3 1 (1,1,0) (1,1,1) 6 探索の過程は,分枝図で表現できる それぞれの節点は,部分問題に対応 一部の変数を固定した0-1ナップサック問題 問題のサイズは原問題より小さい 既知の実行可能解の中で最も良いものを暫 定解という 2014/7/11 7 分枝図 x1 x1 0 x1 1と固定した x1 1 0 1ナップサック問題 0, x2 1と固定した x2 0 0 1ナップサック問題 x3 0 (0,0,0) 2014/7/11 x3 1 (0,0,1) x2 x2 1 0 x3 1 (0,1,0) (0,1,1) x3 x3 0 (1,0,0) 0 x2 x3 1 x3 (1,0,1) 1 0 x3 1 (1,1,0) (1,1,1) 8 分枝操作 一つの変数を固定して(二つの)問題(子問 題)を生成すること 限定操作 部分問題が実行不能 部分問題の最適解が暫定値より良くない ときに,その下の探索を省略すること 2014/7/11 9 分枝図 x1 x2 x3 0 (0,0,0) 0 x3 1 (0,0,1) 0 x2 1 x3 1 (0,1,0) (0,1,1) 探索しない 2014/7/11 x2 実行不能 0 x3 部分問題の最 適値<暫定値 x1 1 x3 0 (1,0,0) 0 x2 x3 1 x3 (1,0,1) 1 0 x3 1 (1,1,0) (1,1,1) 探索しない 10 ナップサック問題の限定操作の例 LP緩和問題 n max ci xi i 1 n s.t. ai xi b, 0 xi 1 i 1, ,n i 1 はナップサック問題の最適解の上界値を与える 部分問題の上界値が暫定値以下であればそ の下を探索する必要はない(最大化問題であ ることに注意) 2014/7/11 11 分枝限定法の実行例 max 4 x1 5 x2 12 x3 14 x4 s.t. 2 x1 3 x2 xi 5 x3 6 x4 0 または 1 i 1, 9 ,4 暫定解:欲張り法の解(1,0,1,0),暫定値16 緩和問題の解:(0,0,1,2/3),上界値21 ci ai の大きい順から1 を割り当て,端数を分数で埋める 暫定値<上界値なので,子問題を作成 2014/7/11 12 暫定解(1,0,1,0),暫定値16 x4 1 1 上界値21 x4 0 2 3 max 4 x1 5 x2 12 x3 14 max 4 x1 5 x2 12 x3 s.t. 2 x1 3x2 s.t. 2 x1 3x2 xi 5 x3 3 0 または 1 i 1,2,3 xi 5 x3 9 0 または 1 i 1,2,3 緩和問題の最適解(0,0,3/5,1) 緩和問題の最適解(1,2/3,1,0) 上界値21→子問題を作成 上界値19 2014/7/11 13 暫定解(1,0,1,0),暫定値16 1 x4 1 上界値21 x4 0 上界値21 2 x3 1 4 (0,0,1,1)は実行不能 終端 3 x3 上界値19 0 5 max 4 x1 5 x2 14 s.t. 2 x1 3 x2 xi 3 0 または 1 i 1,2 緩和問題の最適解(1,1/3,0,1) 上界値19→子問題を作成 2014/7/11 14 暫定解(1,0,1,0),暫定値16 上界値21 1 x4 1 x4 0 上界値21 2 x3 x3 1 0 上界値19 4 実行不能 3 上界値19 5 x2 1 6 x2 0 max 4 x1 14 s.t. 7 2 x1 x1 3 0 または 1 実行可能解は(0,1,0,1)のみ 暫定値19(=上界値) 緩和問題の最適解(1,0,0,1) 上界値18<暫定値なので終端 2014/7/11 15 上界値21 1 x4 1 x4 0 上界値21 2 3 x3 x3 1 ノード3は 上界値19 4 実行不能 0 5 x2 1 6 上界値19 x2 0 上界値<=暫定値 かつ緩和問題の解が整数でな いので終端 上界値18 7 暫定解(0,1,0,1) 暫定値19(=上界値) 2014/7/11 実際に探索した実行可能解 は(初期暫定解を含め)4つ 16 動的計画法 最適性の原理に基づく方法 効率的な列挙法の一つ 最短路問題のダイクストラ法は動的計画法の 一つ 2014/7/11 17 0-1ナップサック問題に対する動的計 画法の例 f ( j , k ) : 要素1 ~ jからいくつか選んで, 容量kの ナップサックに詰める場合の最適値 j max ci xi i 1 j s.t. ai xi k, xi 0 or 1 i 1, ,j i 1 2014/7/11 18 f ( j , k )は以下の漸化式によって与えられる f (1, k ) 0, 0 k c1 , a1 k a1 b f ( j , k ) max f ( j 1, k ), f ( j 1, k j j 1,2, 2,3, , n, k aj) cj b , nの順にそれぞれすべてのk 0,1, , bを計算 f (n, b)は最適値 2014/7/11 19 動的計画法の実行例 max 4 x1 5 x2 12 x3 14 x4 s.t. 2 x1 3 x2 xi 5 x3 6 x4 0 または 1 i 1, 9 ,4 ステップ1: f (1, k )を計算 f (1, k ) 2014/7/11 0, k 4, k 0,1 2,3, ,9 20 ステップ2:漸化式 f (2, k ) max f (1, k ), f (1, k a2 ) c2 , k 0, ,9 に従ってf (2, k )を計算. f (2,3) max f (1,3), f (1,3 3) 5 max 4,0 5 5 f (2,5) max f (1,5), f (1,5 3) 5 max 4,4 5 9 要素 j\容量 k 1 0 1 2 3 4 5 6 7 8 9 0 0 4 4 4 4 4 4 4 4 2 2014/7/11 21 ステップ2:漸化式 f (2, k ) max f (1, k ), f (1, k a2 ) c2 , k 0, ,9 に従ってf (2, k )を計算. f (2,3) max f (1,3), f (1,3 3) 5 max 4,0 5 5 f (2,5) max f (1,5), f (1,5 3) 5 max 4,4 5 9 要素 j\容量 k 1 2 2014/7/11 0 1 2 3 4 5 6 7 8 9 0 0 4 4 4 4 4 4 4 4 0 0 4 5 5 9 9 9 9 9 22 以下,これを繰り返す 要素 j\容量 k 1 2 0 1 2 3 4 5 6 7 8 9 0 0 4 4 4 4 4 4 4 4 0 0 4 5 5 9 9 9 9 9 3 19 4 最適値=19が求まる 最適解は, f (4,9) f (3,3) 14よりx4 1 f (3,3) f ( 2,3)よりx3 0 のように,逆に辿ることで得られる. 2014/7/11 23 動的計画法の計算量はO(nb)(擬多項式) nがある程度大きい場合は,単純な全列挙よ りも早い. 0-1ナップサック問題に対しては,要素数が1 万くらいでも分枝限定法であっという間に解 ける 2014/7/11 24 演習課題 動的計画法の表を完成させて,例題の解を求 めよ.(締切:7月17日(木)16時 Ⅳ系事務室) 要素 j\容量 k 1 2 0 1 2 3 4 5 6 7 8 9 0 0 4 4 4 4 4 4 4 4 0 0 4 5 5 9 9 9 9 9 3 4 2014/7/11 19 25
© Copyright 2024