
Нелинейное программирование
Общая постановка задачи нелинейного программирования следующая.
Найти неотрицательные значения переменных
,
удовлетворяющие ограничениям произвольного
вида:
(2.28)
и обращающие в максимум произвольную нелинейную функцию этих переменных:
(2.29)
Общих способов решения задачи нелинейного программирования не существует; в каждой конкретной задаче способ выбирается в зависимости от вида функции Wи накладываемых на элементы решения ограничений.
Такие задачи на практике возникают
довольно часто, например, когда затраты
растут не пропорционально количеству
закупленных или произведённых товаров
(эффект “оптовости”), но многие нелинейные
задачи могут быть приближённо заменены
линейными, по крайней мере в области,
близкой к оптимальному решению. Нередко
встречаются задачи “квадратического
программирования”, когда Wесть полином второй степени относительно,
а неравенства (2.28) линейны. В ряде задач
может быть применён с успехом, так
называемый метод “штрафных функций”,
сводящий задачу поиска экстремума при
наличии ограничений к аналогичной
задаче при отсутствии ограничений,
которая обычно решается проще.
Идея метода состоит в том, что вместо
того, чтобы наложить на решение жёсткое
требование вида
(2.28), можно наложить некоторый достаточно
большой “штраф” за нарушение этого
условия и добавить к целевой функции
штраф вида
,
гдеa-коэффициент
пропорциональности (в случае, если
целевая функция максимизируется,
а-отрицательно, если минимизируется,
а-положительно). Далее можно, увеличивая
абсолютное значениеа, посмотреть,
как изменяется при этом оптимальное
решение (
),
и, когда оно уже практически перестанет
меняться, остановится на нём.
В ряде случаев при решении задач нелинейного программирования используются “методы случайного поиска”, состоящие в том, что вместо упорядоченного перебора возможных вариантов решения применяется случайный розыгрыш. Со всеми этими методами можно познакомиться по литературе.
Имеются также задачи стохастического программирования, особенность которых в том, что ищется оптимальное решение в условиях неполной определённости, когда ряд параметров, входящих в целевую функциюW, и ограничения, накладываемые на решение, представляют собой случайные величины. Такое программирование называют стохастическим. Есть задачи, где стохастическое программирование сводится к обычному, детерминированному.
Например, когда оптимизация производится “в среднем”, целевая функция Wлинейно зависит от элементов решения, случайны только коэффициенты при элементах решения, а накладываемые условия не содержат случайности. Тогда можно оптимизировать решение, забыв о случайном характере коэффициентов и заменив их математическими ожиданиями (математическое ожидание линейной функции равно той же линейной функции от математических ожиданий аргументов). Проблемы стохастического программирования довольно полно освещены в литературе.
В отличие от задач ЛП задачи целочисленного, нелинейного и особенно стохастического программирования относятся к сложным и трудным вычислительным задачам.
Бывает так, что весь выигрыш, который был бы получен от точной оптимизации решения “съедается” затратами на получение этого решения. Здесь опять, мы встречаемся с необходимостью “системного” подхода к задачам исследования операций, учёта не только непосредственного выигрыша в данной операции, но и затрат на её оптимизацию. Не надо, забывать, что принятие того или иного способа оптимизации решения есть тоже “решение” и весьма ответственное.