🎓 レベル:発展 | 重要度:A(必須)
📎 前提:確率計画法・凸最適化問題と双対理論 | 関連:リスクを織り込む最適化(CVaR最小化)
要点(BLUF)
- ロバスト最適化は、不確実パラメータが 不確実集合 の中でどう動いても制約を満たすよう、最悪ケースで最適化する。
- 分布を仮定せず 集合で備える点が、確率計画(確率計画法)との違い。
- 不確実集合の形(ボックス・予算・楕円)で、ロバスト対応問題が LP・SOCP(錐計画(SOCP・SDP)入門)に書き直せる。
概念 ── 分布でなく集合で備える
確率計画は「パラメータの分布」を要求するが、分布が分からないことも多い。ロバスト最適化は、パラメータ が ある集合 の中のどこかにあるとしか仮定せず、 内のどんな値でも制約を破らない解を探す。
「」が肝:不確実集合内の 最悪の でも制約が成り立つ。これは無限個の制約に見えるが、 の形に応じて有限の ロバスト対応問題へ書き直せる。
ロバスト対応(robust counterpart)
制約 は「」と同値。最悪ケースを内側の最大化で表すのがコツ。
- ボックス不確実集合 :最悪は各成分が の符号方向に振れるので
(絶対値は線形化でき、LP のまま)。
-
予算不確実集合(Bertsimas–Sim) :同時に振れる成分数を で制御。 で保守性を調整でき、対応問題は LP。
-
楕円不確実集合 :最悪ケースに ノルムが現れ、SOCP(錐計画(SOCP・SDP)入門)になる。
ここで内側の最大化を双対(凸最適化問題と双対理論)で書き換えるのが、ロバスト対応導出の常套手段。
Pythonで名目解とロバスト解を比べる
生産計画で機械時間の消費が不確実: は 、 は 時間消費する。ボックス不確実集合のロバスト対応(最悪消費 )と名目()を比べる。
import cvxpy as cp
for robust in [False, True]:
x = cp.Variable(2, nonneg=True)
if robust:
# 最悪ケース: 名目消費 + 変動分(x>=0なので符号はそのまま加算)
machine = 2*x[0] + x[1] + (0.5*x[0] + 0.2*x[1]) <= 120
else:
machine = 2*x[0] + x[1] <= 120 # 名目のみ
prob = cp.Problem(cp.Maximize(40*x[0] + 30*x[1]),
[machine, x[0] + x[1] <= 100])
prob.solve()
tag = "ロバスト" if robust else "名目 "
print(f"{tag}: xA={x.value[0]:.1f}, xB={x.value[1]:.1f}, 利益={prob.value:.1f}")
実行結果:
名目 : xA=20.0, xB=80.0, 利益=3200.0
ロバスト: xA=0.0, xB=100.0, 利益=3000.0
名目解 は利益 3200 だが、機械時間消費が上振れすると制約 を 破る()。ロバスト解 は利益 3000 と低いが、最悪の消費でも制約を満たす。保守性(利益の犠牲)と頑健性(制約違反しない保証)のトレードオフがロバスト最適化の本質。この差 200 が「不確実性に備える保険料(price of robustness)」。
分布ロバスト最適化(補足)
確率計画(分布が必要)とロバスト最適化(分布を全く使わない)の 中間が 分布ロバスト最適化(DRO)。「真の分布は分からないが、ある 分布の集合(曖昧集合) の中にある」と仮定し、その集合上の 最悪期待値を最適化する:
曖昧集合 をモーメント条件や Wasserstein 距離の球で定めると、扱いやすい凸問題に帰着することが知られ、近年の主流。データから分布を推定する誤差まで頑健化できる。
数式の直観的意味
ロバスト最適化の核心は min-max 構造:外側で意思決定 を最小化、内側で敵対者が最悪パラメータ を選ぶ。これはゲーム理論の二人ゼロ和ゲームと同じ構図で、内側の最大化を双対(凸最適化問題と双対理論)で書き換えると、min-max が単一の min(有限個の制約)に畳まれる ── これがロバスト対応問題。不確実集合の「大きさ」が保守性のつまみで、大きいほど安全だが利益を削る。確率計画が「平均的に良い」を狙うのに対し、ロバストは「最悪でも破綻しない」を狙う ── 安全性が決定的に重要な場面(電力・医療・サプライチェーン)で好まれる。不確実集合の幾何(ボックス→LP、楕円→SOCP)がそのまま問題クラスを決めるのは、錐計画の表現力(錐計画(SOCP・SDP)入門)の応用。
⚠️ よくある誤解・落とし穴
- ロバスト解は保守的:最悪ケースに備えるので、平均的には確率計画より損をしうる。不確実集合を絞って過度な保守を避ける。
- 不確実集合の設計が結果を支配:大きすぎると無意味に保守的、小さすぎると頑健性が無い。 など調整パラメータで制御。
- 「最悪ケース」は集合内に限る:集合外の事象には備えない。集合の妥当性が前提。
- 等式制約のロバスト化は難しい(全シナリオで等式は通常不可能)。不等式中心に設計する。
関連ノート
- 前提:確率計画法・凸最適化問題と双対理論
- 錐での表現:錐計画(SOCP・SDP)入門
- リスク尺度での備え:リスクを織り込む最適化(CVaR最小化)
- 標本近似:サンプル平均近似(SAA)
- 章のハブ:不確実性下の最適化 章目次