Стохастическое программирование

Материал из Systems analysis wiki
Перейти к навигации Перейти к поиску

Стохастическое программирование (англ. stochastic programming) — раздел математического программирования, разрабатывающий модели и методы решения оптимизационных задач в условиях неопределённости, когда некоторые параметры модели не известны точно, а представлены как случайные величины с известными или оценёнными вероятностными распределениями[1][2].

В отличие от детерминированных задач, где все данные считаются заданными константами, стохастическое программирование ставит целью найти решение (или политику принятия решений), которое является оптимальным в некотором статистическом смысле. Чаще всего это означает минимизацию или максимизацию математического ожидания целевой функции[1]. Ключевая идея состоит в том, чтобы найти такую политику принятия решений, которая будет наилучшей «в среднем» по всем возможным реализациям случайных параметров, что особенно актуально для задач, где решения принимаются многократно в схожих условиях (например, в управлении запасами или энергосистемами)[3].

Математическая постановка задачи

В общем виде задача стохастического программирования может быть сформулирована как: minxX𝔼[f(x,ξ)] где:

  • x — вектор управляющих переменных (решений), которые необходимо определить.
  • X — множество допустимых решений для x, определяемое детерминированными ограничениями.
  • ξ — случайный вектор, представляющий неопределённые параметры задачи (например, спрос, цены, погодные условия).
  • f(x,ξ) — целевая функция, значение которой зависит как от принятого решения x, так и от реализации случайного вектора ξ.
  • 𝔼[] — оператор математического ожидания, вычисляемый по распределению вероятностей вектора ξ.

Важнейшим принципом, лежащим в основе многоэтапных стохастических моделей, является принцип непредвосхищения (англ. non-anticipativity principle). Он гласит, что решения, принимаемые на любом этапе, могут зависеть только от информации, доступной к этому моменту, и не могут «заглядывать в будущее»[2].

Двухэтапная задача с правом компенсации

Наиболее распространённой моделью является двухэтапная задача с правом компенсации (англ. two-stage stochastic program with recourse)[1]. Процесс принятия решений разделён на два этапа:

  1. Первый этап: Принимается решение «здесь и сейчас» (here-and-now) — определяется вектор x. Это решение должно быть принято до того, как станет известна конкретная реализация случайного вектора ξ.
  2. Второй этап: После того как случайное событие произошло, принимается корректирующее или компенсационное решение (recourse decision) — вектор y(ξ), направленное на минимизацию негативных последствий или использование благоприятных возможностей, возникших в результате сочетания решения первого этапа x и исхода ξ.

Математически двухэтапная задача стохастического линейного программирования формулируется следующим образом: minxn1{cTx+𝔼ξ[Q(x,ξ)]} при ограничениях первого этапа: Ax=b,x0. Здесь Q(x,ξ)функция компенсации (recourse function), представляющая собой оптимальное значение задачи второго этапа: Q(x,ξ)=minyn2{q(ξ)TyT(ξ)x+Wy=h(ξ),y0} где ξ — случайный вектор, включающий в себя параметры q(ξ),T(ξ) и h(ξ); а c,A,b и W — детерминированные параметры[2].

Ключевые свойства и теоремы

  • Выпуклость: Одним из фундаментальных результатов теории является то, что для двухэтапной задачи стохастического линейного программирования ожидаемая функция компенсации Q(x)=𝔼ξ[Q(x,ξ)] является выпуклой функцией. Это свойство имеет огромное значение, так как оно гарантирует, что общая задача первого этапа является задачей выпуклого программирования, для которой существуют эффективные методы решения и глобальный оптимум совпадает с локальным[1].
  • Детерминированный эквивалент: Если случайный вектор ξ имеет конечное число возможных реализаций (сценариев) ξ1,,ξK с вероятностями p1,,pK, то задачу стохастического программирования можно переформулировать в виде одной большой детерминированной задачи оптимизации. В этом случае математическое ожидание заменяется взвешенной суммой по всем сценариям. Однако размер этой задачи растёт линейно с числом сценариев, что приводит к «проклятию размерности» и делает такой подход вычислительно неразрешимым для большого числа сценариев[2].

Сравнение с робастной оптимизацией

Стохастическое программирование является одним из нескольких подходов к оптимизации в условиях неопределённости. Его ключевое отличие от робастной оптимизации заключается в способе моделирования неопределённости и критерии оптимальности[4].

Сравнение подходов к оптимизации в условиях неопределённости
Критерий Стохастическая оптимизация Робастная оптимизация
Представление неопределённости Параметры — случайные величины с известным вероятностным распределением Параметры принадлежат заданному множеству неопределённости, распределение не требуется
Критерий оптимальности Оптимизация математического ожидания целевой функции Оптимизация в наихудшем сценарии (минимакс)
Характер решения Политика, оптимальная «в среднем», может быть недопустимой для редких сценариев Решение, гарантированно допустимое для всех реализаций; может быть консервативным

Примеры

  • Задача газетчика (англ. newsvendor problem): Классическая задача управления запасами, где продавец должен решить, какое количество товара закупить, не зная точного будущего спроса. Решение балансирует между риском потерь от излишков и риском упущенной выгоды от дефицита.
  • Задача фермера: Фермер решает, сколько акров земли выделить под разные культуры на общей площади, не зная будущей погоды, которая влияет на урожайность. После того как погода становится известной, фермер может предпринять корректирующие действия (например, продать излишки или докупить недостающий урожай на рынке)[5].

См. также

Примечания

  1. 1,0 1,1 1,2 1,3 Shapiro, A., Dentcheva, D., & Ruszczyński, A. (2009). Lectures on Stochastic Programming: Modeling and Theory. Society for Industrial and Applied Mathematics (SIAM).
  2. 2,0 2,1 2,2 2,3 Birge, J. R., & Louveaux, F. (2011). Introduction to Stochastic Programming (2nd ed.). Springer Science+Business Media.
  3. "Стохастическое программирование". Википедия. [1]
  4. Gorissen, B. L., Yanıkoğlu, İ., & den Hertog, D. (2015). A practical guide to robust optimization. Omega, 53, 124-137.
  5. Bricker, D. L. SLPwR: Farmer Problem. University of Iowa. [2]