스토캐스틱 최적화로 불확실성 속 비용과 리스크 설계하기
스토캐스틱 프로그래밍, 시나리오 생성, 강건 최적화를 활용해 불확실한 운영 환경의 비용·리스크·서비스 수준을 함께 설계하는 방법
2026-08-14 · 최초 발행 2024-04-29
평균값만으로는 운영 정책을 설계하기 어렵다
수요, 가격, 재생에너지 발전량, 수익률처럼 흔들리는 입력값을 평균으로만 처리하면 비용·리스크·서비스 수준 사이의 충돌을 놓치기 쉽다. 스토캐스틱 최적화는 입력 파라미터를 확률 변수로 두고, 기대 성과와 안정성을 함께 고려해 의사결정을 구하는 방법론이다.
모형은 보통 의사결정 시점을 선결정과 후결정으로 나누고, 불확실성을 분포·시나리오·집합으로 표현한다. 목적함수에는 기대값, CVaR, 최악값을 둘 수 있으며, 제약은 확률 제약 또는 강건 제약으로 구성한다.
접근 방식은 크게 나뉜다. Stochastic Programming은 확률과 시나리오를 바탕으로 하고, Robust Optimization은 확률을 쓰지 않는 불확실성 집합을 사용한다. 확률 기반 기대값을 목적함수에 두면서 강건 제약을 더하는 혼합형 설계도 가능하다.
확률 시나리오와 불확실성 집합을 다루는 방법
Stochastic Programming은 대응 결정을 함께 모델링한다
Stochastic Programming은 선결정 뒤에 시나리오별 대응 결정을 두는 2단계 구조, 또는 시점별 시나리오 트리를 이용하는 다단계 구조로 구성한다. Sample Average Approximation(SAA)은 시나리오 표본 평균을 최소화하는 방식으로 계산할 수 있다.
문제가 커지면 L-shaped/Benders, Progressive Hedging 같은 분해법을 적용한다. 기대 성능을 잘 다룰 수 있고 데이터 기반 설명력을 확보하기 좋지만, 시나리오가 늘어날수록 계산량이 급격히 커질 수 있다.
시나리오 생성은 계산성과 커버리지를 조율하는 작업이다
과거 데이터나 예측모델을 기반으로 부트스트랩, 몬테카를로, 라틴하이퍼큐브 방식의 표본을 만들고, 다단계 문제에서는 이를 시나리오 트리로 구성한다. 생성된 시나리오를 모두 사용할 수 없다면 Fast-forward/backward reduction이나 Wasserstein, Kantorovich 확률거리를 활용해 축소한다.
통계적 적합도 검정과 스트레스 시나리오를 함께 쓰고, 희귀 사건인 테일을 오버샘플링하며, 데이터 쉬프팅도 계속 감시해야 한다. 시나리오가 현실을 충분히 담지 못하면 정교한 해법도 운영에서 의미를 잃는다.
Robust Optimization은 최악의 외란을 견딘다
Robust Optimization은 박스, 타원(엘립스), 폴리헤드럴 형태의 불확실성 집합을 둔다. 예산 불확실성인 Γ-uncertainty는 보수성의 정도를 조정하는 수단이다.
강건 대응(robust counterpart)으로 모형을 LP, SOCP, MILP로 변환할 수 있으며, 일부 후결정을 허용하는 Adjustable Robust 방식으로 현실성을 높일 수 있다. 확률 모델 없이도 최악 상황에 대한 안정성을 얻는 대신, 지나치게 보수적으로 설정하면 성능 손실이 생길 수 있다.
리스크 기준과 확률 제약을 명시한다
리스크는 분산, VaR, CVaR로 측정할 수 있다. CVaR는 볼록성과 계산성을 확보할 수 있어 권장되며, 기대값과 리스크 사이의 프런티어를 탐색하는 데도 쓰인다.
확률 제약은 다음 형태로 표현한다.
P(g(x,ξ) ≤ b) ≥ 1−α
시나리오 근사, 분포 가정, 안전한 보수 근사(safe approximation)를 함께 적용해 이를 모형에 반영한다.
데이터에서 운영 정책까지 이어지는 설계 흐름
입력 단계에서는 수요·가격·재생에너지·수익률의 히스토리와 예측모델 잔차를 수집한다. 이어서 분포, 시나리오, 불확실성 집합을 정하고 서비스 레벨·SLA와 CVaR, α 같은 리스크 한계를 정의한다.
처리 단계에서는 정규·로그정규, 코풀라, 잔차 검정으로 분포를 적합하고 드리프트를 탐지한다. 샘플링 뒤 거리 기반 축소와 테일 보강을 거쳐 시나리오를 다듬는다. 그 다음 결정변수를 시점별로 분해하고, 목적함수는 E[cost] 또는 CVaR로, 제약은 확률 또는 강건 제약으로 설정한다. Benders, PH, regularization과 Gurobi, CPLEX, Mosek, HiGHS 솔버 튜닝을 선택할 수 있다.
출력은 선결정 정책, 시나리오별 대응 규칙, 비용-리스크 요약으로 이어진다. 백테스트, 부트스트랩 신뢰구간, 테일·상관 급변을 다루는 스트레스 테스트, 민감도 분석으로 정책을 검증한다. 운영 환경에서는 롤링 호라이즌 재최적화, 데이터 쉬프트 감지 트리거, α·Γ 파라미터 리튜닝을 반복한다.
시나리오가 폭증하면 축소율을 높이고 중요도 샘플링과 분해법을 적용한다. 해가 비가행이거나 과도하게 보수적이면 α를 완화하거나 Γ를 낮추고, 완화변수(penalty) 도입과 목적 가중치 조정을 검토한다. 수렴이 늦을 때는 프리솔브·컷, 따뜻한 시작, 시간 제한과 MIPGap 관리가 대응 수단이 된다.
운영 문제에 맞춰 모형을 선택하는 사례
공급망 재고와 용량 계획
재고 결품 확률을 α 이하로 유지하면서 비용을 최소화하는 문제다. 2단계 SP와 확률 제약을 사용하고, 다기간 문제는 시나리오 트리로 표현할 수 있다. 대규모 MILP는 Benders 분해로 푼다.
수요 분포를 적합한 뒤 시나리오를 생성·축소하고, 확률 제약을 캘리브레이션한다. 이후 필레이트와 비용을 대상으로 백테스트한다.
전력계통과 재생에너지 운영
운전자원(commitment)을 결정하면서 풍력·태양광의 변동에 대응하고 예비력 리스크를 관리한다. SP로 기대 운영비를 최소화하고, RO를 예비력 강건 제약에 결합할 수 있다.
단기 예보에서 시나리오를 만들고 단위 약속 MILP를 구성한다. CVaR 전력 부족 패널티를 반영한 뒤 롤링 호라이즌 방식으로 반복 운영한다.
금융 포트폴리오
포트폴리오에서는 기대수익을 높이면서 테일 리스크인 CVaR를 통제한다. SAA 기반 CVaR 최소화로 모형을 구성하고, RO 또는 분포강건 접근으로 샘플 오버핏을 완화할 수 있다.
수익률 샘플과 부트스트랩 결과를 사용해 CVaR 모형을 만들고, Wasserstein-반경 또는 Γ를 튜닝한다. 최종 정책은 아웃오브샘플 검증으로 확인한다.
클라우드 용량과 SLA
비용을 줄이면서 지연 99퍼센타일을 보장해야 하는 문제다. 확률 제약으로 SLA를 보장하고, RO로 급증 트래픽에 대비한다.
부하 분포를 추정한 뒤 확률 제약의 대체 근사를 적용하고, 오토스케일 정책 파라미터를 산정한다. 운영 로그를 기반으로 정책을 재튜닝한다.
성능과 안정성의 교환 조건
스토캐스틱 최적화는 기대비용을 515% 절감하고 CVaR를 1030% 감소시키는 효과를 기대할 수 있으며, 이는 도메인과 데이터에 의존한다. 결품 또는 위반 확률 목표 α의 준수율은 95%+ 달성이 목표가 될 수 있다. 시나리오 축소와 분해법을 적용하면 계산 시간을 30~70% 단축할 수 있다.
시나리오 기반 근거를 제시할 수 있어 설명 가능성이 높아지고, 스트레스 상황에 대한 대응력도 강화된다. 외란과 드리프트가 생겨도 정책 성능 저하를 완화할 수 있으며, α와 Γ를 리스크 허용도를 나타내는 경영 의사결정 파라미터로 사용할 수 있다.
| 접근 | 성능(기대비용) | 일관성(리스크) | 확장성(대규모) | 안정성(외란 대비) | 운영 편의 |
|---|---|---|---|---|---|
| 결정론 | 빠름·낮은 비용이나 변동 민감 | 낮음 | 높음 | 낮음 | 매우 높음 |
| Stochastic Programming | 우수 | 중·상(측정 가능) | 시나리오 폭증 이슈 | 중 | 중 |
| Robust Optimization | 중(보수성으로 손실 가능) | 높음 | 높음(대응 변환 후) | 높음 | 중 |
SP는 기대 성능을 극대화하는 데 유리하지만 계산량과 데이터 품질에 민감하다. RO는 안정성과 최악 상황 대비를 강화하지만 과보수를 피하려면 Γ와 집합 형태를 조정해야 한다. 확률 목적과 강건 제약을 결합한 혼합형은 두 접근 사이의 균형을 설계하는 방식이다.
운영 중 검증과 보정이 정책의 일부가 된다
불확실성 모델의 선택, 시나리오 또는 집합의 커버리지와 계산성 사이의 균형, α·Γ 리스크 파라미터의 체계적 캘리브레이션이 스토캐스틱 최적화의 중심이다. 데이터 품질, 계산 예산, 거버넌스 요구를 함께 반영한 뒤에도 정책은 고정되지 않는다. 롤링 운영, 백테스트, 스트레스 테스트를 통해 계속 보정해야 한다.