LPで、整数部を次の枝に採用するとありますが、どの程度の実数を採用していますか?
■「LP解の整数部を採用して分枝」について
これは、「分枝限定法における分枝変数の選び方」の話です。以下で詳しく解説します。
■ 1. LP解の一部が実数(例:x₁ = 3.6)になる場合
このとき、そのノードではまだ整数制約が満たされていないので、次のような**分枝(branching)**を行います:
(例)LP緩和で x₁ = 3.6 のとき:
→ 子ノードA:x₁ ≤ 3
→ 子ノードB:x₁ ≥ 4
これは「床関数と天井関数で分割する」という基本手法です。
整数部(floor)とそれ以上の範囲を「2つのノード」として分けて探索します。
■ 2. 「LPの実数解を次の枝に採用する」とは?
これは、**分枝に使う変数の選び方(branching variable selection)**に関する文脈でよく登場します:
- 通常、**最も実数部分が大きい変数(例:x = 3.5)**を選ぶ
- なぜなら:そのような変数は**「整数になりにくく、最も曖昧」なので、早く分枝して確定させたい**
■ どの程度の実数を採用するのか?
→ この 0.001〜0.999 の範囲の値を持つ変数の中から、「どれを使うか」はヒューリスティック(手法次第)ですが、0.5付近が最も“ぶれ”が大きく好まれる傾向にあります。
■ 分枝変数の選び方(参考)
以下のような戦略が存在します:
- 最も小数部分が0.5に近い変数(= “most fractional”)
- 擬似コスト法(pseudo-cost branching):
→ 過去の分枝結果から、どの変数を分枝すると改善効果が高いか学習 - 強制分枝法(strong branching):
→ 分枝前に仮にLPを解いて、改善効果が高い方を選ぶ(計算コスト高)
■ まとめ
- LP解で整数でない変数は、床と天井で分枝される
- 分枝変数の選び方は戦略によるが、**「0.5付近の値」**がよく選ばれる
- 採用する実数値の基準は、「どれが最も“整数から遠いか”」が目安
- より精緻なアルゴリズムでは、「効果が高そうな変数」を見極めるための統計的手法(擬似コスト法など)も用いられる