きのうの授業の続きをメモメモ
・分枝限定法
整数混合問題とか、計算時間がかかる
ナップザック問題を例に
分枝木(ブランチングツリー)
X1,X2,X3,X4に0か1をとる
2の4乗の枝→全部見れば、当然分かる
制約式上、ないところがある
ありえるところだけ、目的関数を当てはめる
・途中で制約式をみたさず、ありえないもの
→書く必要ない(限定操作:バウンディング)
上から書いていく:深さ優先対策
・実行可能解が見つかる
最良が早めに見つかると、そのあとやらなくてよい
限定
・整数計画問題と線形緩和
整数計画問題Xの最適値 <= 線形緩和の最大値
・はじめに線形緩和問題を解いておく
決まった情報を入れた緩和問題を解いておく
→限定操作で探索する領域を狭くする
→そのために部分的な線形問題を解く
途中で何回もといている
→途中の線形計画問題を早く解けるか
→高々にきつい値がでる 数値の動く幅があまり違わない
うまい式で書くと、早く終わる
ソルバーでも式を加えている。
商用ソフトのほうが、だいぶ早い
分枝限定法のコメント
カット
同じ式なんだけど、うまいものと、そうでないものがある。
---------------
ネットワークフロー
・完全ユニモジュラー行列
凸包とファセットと切断面
ファセットをみつけるのはむずかしい
ファセットに近い断面(カッティングプレーン)をみつけて、
狭めていく
→
・完全ユニモジュラー
部分行列をとってくる。このとき正方行列なら、行列式がつくれる
→小行列式
任意の小行列式が、0,1、−1なのが、完全ユニモジュラー
完全ユニモジュラーだと整数多面体
→ファセットで解けるかんじ
<<割と使える定理>>
行の部分集合を、うまい分割によって、
R1,R2に分けて、どのれつ足して引いても、−1,0,1
接続行列
ネットワークの多くは接続行列で、
接続行列は、完全ユニモジュラー
ネットワークフロー:最小費用流問題
ノードの数字:湧き出し吸い込み
アーク:(費用、容量)
専用の解放
ネットワークフロー
ネットワーク単体法
枝容量が整数なら、整数最適解が存在する
整数計画問題:分枝限定法以上、うまい方法があるかどうか未解決
航空スケジュール
ヒッチコック型輸送問題
供給拠点 使いたい拠点
→最小費用流でとく(細工必要)
ネットワーク設計問題
・シュタイナー木
・サバイバルネットワーク設計
(ユークリッド版)シュタイナー木
3点を結ぶ→120度の分岐点を作る
点の数が多くなるとむずかしい。
(グラフ上の)シュタイナー木問題
グラフがある
ターミナル集合
重み
全ターミナルを接続する
重み最小
賞金獲得型シュタイナー木問題
最小全域木問題:ミニマムスパニングツリー
→貪欲アルゴリズム
サバイバルネットワーク設計問題
ノード
名前
接続要求量
→枝を共有しないパスが存在
これが1だと、シュタイナーツリー
とき方
ある点から、他の点に何かを流す
多品種流問題
→線形計画問題として記述でき、解けるが
線形計画以外のうまい方法が、いまだ見つかっていない
パイプを設定したら、流すことができる
それぞれの品種で容量1
始点終点は、適当な量
・分枝限定法
整数混合問題とか、計算時間がかかる
ナップザック問題を例に
分枝木(ブランチングツリー)
X1,X2,X3,X4に0か1をとる
2の4乗の枝→全部見れば、当然分かる
制約式上、ないところがある
ありえるところだけ、目的関数を当てはめる
・途中で制約式をみたさず、ありえないもの
→書く必要ない(限定操作:バウンディング)
上から書いていく:深さ優先対策
・実行可能解が見つかる
最良が早めに見つかると、そのあとやらなくてよい
限定
・整数計画問題と線形緩和
整数計画問題Xの最適値 <= 線形緩和の最大値
・はじめに線形緩和問題を解いておく
決まった情報を入れた緩和問題を解いておく
→限定操作で探索する領域を狭くする
→そのために部分的な線形問題を解く
途中で何回もといている
→途中の線形計画問題を早く解けるか
→高々にきつい値がでる 数値の動く幅があまり違わない
うまい式で書くと、早く終わる
ソルバーでも式を加えている。
商用ソフトのほうが、だいぶ早い
分枝限定法のコメント
カット
同じ式なんだけど、うまいものと、そうでないものがある。
---------------
ネットワークフロー
・完全ユニモジュラー行列
凸包とファセットと切断面
ファセットをみつけるのはむずかしい
ファセットに近い断面(カッティングプレーン)をみつけて、
狭めていく
→
・完全ユニモジュラー
部分行列をとってくる。このとき正方行列なら、行列式がつくれる
→小行列式
任意の小行列式が、0,1、−1なのが、完全ユニモジュラー
完全ユニモジュラーだと整数多面体
→ファセットで解けるかんじ
<<割と使える定理>>
行の部分集合を、うまい分割によって、
R1,R2に分けて、どのれつ足して引いても、−1,0,1
接続行列
ネットワークの多くは接続行列で、
接続行列は、完全ユニモジュラー
ネットワークフロー:最小費用流問題
ノードの数字:湧き出し吸い込み
アーク:(費用、容量)
専用の解放
ネットワークフロー
ネットワーク単体法
枝容量が整数なら、整数最適解が存在する
整数計画問題:分枝限定法以上、うまい方法があるかどうか未解決
航空スケジュール
ヒッチコック型輸送問題
供給拠点 使いたい拠点
→最小費用流でとく(細工必要)
ネットワーク設計問題
・シュタイナー木
・サバイバルネットワーク設計
(ユークリッド版)シュタイナー木
3点を結ぶ→120度の分岐点を作る
点の数が多くなるとむずかしい。
(グラフ上の)シュタイナー木問題
グラフがある
ターミナル集合
重み
全ターミナルを接続する
重み最小
賞金獲得型シュタイナー木問題
最小全域木問題:ミニマムスパニングツリー
→貪欲アルゴリズム
サバイバルネットワーク設計問題
ノード
名前
接続要求量
→枝を共有しないパスが存在
これが1だと、シュタイナーツリー
とき方
ある点から、他の点に何かを流す
多品種流問題
→線形計画問題として記述でき、解けるが
線形計画以外のうまい方法が、いまだ見つかっていない
パイプを設定したら、流すことができる
それぞれの品種で容量1
始点終点は、適当な量