🎓 レベル:発展 | 重要度:B(推奨)
📎 前提:最適化との連携(サンプル平均近似) | 関連:在庫・窓口のモデル化
要点(BLUF)
- シミュレーション最適化:目的関数がノイズを含むシミュレーションでしか評価できないとき(在庫方策の期待コスト、待ち行列の性能など)の最適化。
- 各候補点で複数回シミュレートして平均しノイズを抑え、探索でよい設定を見つけます。評価のノイズと探索コストのバランスが核心。
- ノイズ付き二次関数の最小点を、平均化ランダム探索で (真の最小3.0)と復元する例で示します。
1. SAA との違い:ノイズ付き目的を逐次評価する
SAAは標本を固定して目的関数を決定的にしてから最適化しました。しかし、目的が離散事象シミュレーション(第5章 離散事象シミュレーション 目次)のように「実行するたびに違う値を返す」場合、標本固定が難しい・各評価が高コストなことがあります。
シミュレーション最適化は、目的 をノイズ付きで逐次評価しながら、よい を探します。1回の評価が確率的なので、
- 複数回実行して平均しノイズを下げる(大数の法則、誤差 )。
- 限られた評価予算を、**探索(どこを調べるか)と評価精度(各点を何回回すか)**にどう配分するかが問題。
2. 実装:ノイズ付き関数の最小化
真の目的 が、観測時に標準正規ノイズで汚れているとします。各候補を30回評価して平均し、ランダム探索で最小点を探します。
import numpy as np
# 乱数シードを固定
rng = np.random.default_rng(63)
def noisy_f(x, r):
return (x - 3)**2 + r.normal(0, 1) # 真の値 + 観測ノイズ
best_x = None; best_val = np.inf
for it in range(2000):
x = rng.uniform(-2, 8) # ランダムに候補を提案
val = np.mean([noisy_f(x, rng) for _ in range(30)]) # 30回平均でノイズ低減
if val < best_val:
best_val = val; best_x = x
print(f"ランダム探索の最良 x = {best_x:.3f} (真の最小 3.0)")
print(f"その推定目的値 = {best_val:.3f}")
出力:
ランダム探索の最良 x = 3.001 (真の最小 3.0)
その推定目的値 = -0.425
出力の意味:ノイズで汚れた評価しかできないのに、各点30回の平均化と探索で、最小点 (真の最小3.0)をほぼ正確に当てました。注目すべきは推定目的値が と負になっている点——真の最小値は0なのに。これは「2000候補×各30回平均の中で、たまたまノイズが下振れした点が選ばれる」選択バイアス(最適化の楽観バイアス)で、最良点の推定値は真値より低く出がち。最良 は正確でも、その目的値の推定は別の独立評価でやり直すべき、という実務的教訓です。
3. 実用的な手法
ランダム探索は素朴ですが、実用では評価予算を賢く使う手法が要ります。
- 応答曲面法:少数の評価から目的の代理モデル(回帰・ガウス過程)を作り、有望な領域を集中探索。ベイズ最適化が代表。
- 確率的勾配法・SPSA:ノイズ付き勾配を有限差分で推定して降下。
- ランキング・選択:有限個の候補(在庫方策A/B/C…)から最良を、各候補へ評価回数を最適配分して選ぶ。共通乱数法(共通乱数法(CRN))で候補間の差の分散を下げると効率的。
- メタヒューリスティクス:シミュレーテッド・アニーリング・遺伝的アルゴリズム(ノイズ付き目的に拡張)。
応用例の典型が在庫の (s,S) 方策最適化(在庫・窓口のモデル化)——コスト関数がシミュレーションでしか測れないので、まさにシミュレーション最適化の対象です。
数式の直観的意味
シミュレーション最適化は「かすみがかった地形を、霧の中で歩いて最低地点を探す」操作です。各地点の標高(目的値)が霧(ノイズ)でぼやけるので、その場で何度も測って平均し(霧を薄め)、地形の傾きを推定して進む。難しさは評価予算の配分——霧を薄めるのに同じ点で測りまくれば探索が進まず、探索を急げば各点の標高が当てにならない。最良点の目的値が楽観的に出る()のは、「多数のぼやけた測定値の最小を選ぶと、ノイズの下振れを拾う」という統計的必然(順序統計量の偏り)。だから「最良の設定を選ぶ」ことと「その性能を正しく見積もる」ことは別の評価に分ける——これは交差検証で最良モデルの性能を別データで測るのと同じ発想です。
⚠️ よくある誤解・落とし穴
- 「最良点の目的値推定は信頼できる」ではない:選択バイアスで楽観的(本ノートで負値)。性能は独立評価で測り直す。
- 「1回評価で十分」ではない:ノイズが大きいと1回では地形が見えない。複数回平均か、勾配推定の工夫が要ります。
- 「探索だけ・評価だけ」ではない:探索と評価精度のバランスが核心。予算配分の設計が性能を決めます。
- 「決定的最適化と同じ手法でいい」ではない:ノイズがあると勾配・比較が揺れる。確率的最適化・ランキング選択の専用手法を。
- 「SAA と同じ」ではない:SAA は標本固定で決定的最適化(最適化との連携(サンプル平均近似))、ここはノイズ付き逐次評価。区別が大事。
対応シミュレーション参照
本文のノイズ付き関数の平均化ランダム探索(default_rng(63)、最小点 x=3.001 を復元)。対象系は在庫・窓口のモデル化。
関連ノート
- 最適化との連携(サンプル平均近似)(前提・SAA との違い)
- 共通乱数法(CRN)(候補比較の分散減少)
- 在庫・窓口のモデル化(最適化対象の系)
- 大数の法則と中心極限定理の役割(平均化によるノイズ低減)
- 第9章 応用 目次
- シミュレーション・モンテカルロ法 全体目次