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付近の値」**がよく選ばれる
  • 採用する実数値の基準は、「どれが最も“整数から遠いか”」が目安
  • より精緻なアルゴリズムでは、「効果が高そうな変数」を見極めるための統計的手法(擬似コスト法など)も用いられる