12. Нелинейное программирование
Цели
В данной главе описываются Оптимизационные задачи нелинейного программирования (НЛП), математические модели которых содержат нелинейные зависимости от переменных. Источники нелинейности относятся в основном к одной из двух категорий:
1) реально существующие и эмпирически наблюдаемые нелинейные соотношения, например: непропорциональные зависимости между объемом производства и затратами; между количеством используемого в производстве компонента и некоторыми показателями качества готовой продукции; между затратами сырья и физическими параметрами (давление, температура и т. п.) соответствующего производственного процесса; между выручкой и объемом реализации и др.;
2) установленные (постулируемые) руководством правила поведения или задаваемые зависимости, например: формулы или правила расчета с потребителями энергии или других видов услуг; эвристические правила определения страховых уровней запаса продукции; гипотезы о характере вероятностного распределения рассматриваемых в модели случайных величин; различного рода договорные условия взаимодействия между партнерами по бизнесу и др.
Решать линейные задачи значительно проще, чем нелинейные, и если линейная модель обеспечивает адекватность реальным ситуациям, то ее и следует использовать. В практике экономического управления модели линейного программирования успешно применялись даже в условиях нелинейности. В одних случаях нелинейность была несущественной и ею можно было пренебречь, в других — производилась линеаризация нелинейных соотношений или применялись специальные приемы, например строились так называемые линейные аппроксимационные модели, благодаря чему достигалась требуемая адекватность. Тем не менее имеется большое число ситуаций, где нелинейность является существенной и ее нужно учитывать в явном виде.
Далее приводятся общая модель задачи нелинейного программирования и классы задач НЛП, а также описываются условия оптимальности решения.
После того как вы выполните задания, предлагаемые в этой главе, вы будете уметь определять и использовать для экономического анализа:
• целевую функцию;
• ограничения;
• допустимый план;
• множество допустимых планов;
• модель нелинейного программирования;
• оптимальный план.
Вы сможете также:
• определять, является ли функция выпуклой;
• строить функцию Лагранжа задачи НЛП;
• проверять оптимальность полученных решений.
Модели
В общем виде задача НЛП описывается с помощью следующей модели нелинейного программирования:
Где Х = (X1, Х2, ..., хN) — вектор переменных задачи.
Задача (1)—(3) называется Задачей нелинейного программирования в стандартной форме на максимум.
Может быть сформулирована также Задача НЛП на минимум.
Вектор Х = (X1, Х2, ..., хN), компоненты ХJ которого удовлетворяют ограничениям (2) и (3), называется Допустимым решением Или Допустимым планом задачи НЛП.
Совокупность всех допустимых планов называется Множеством допустимых планов.
Допустимое решение задачи НЛП, на котором целевая функция (1) достигает максимального значения, называется Оптимальным решением задачи НЛП.
Возможное местонахождение максимального значения функции F(X) при наличии ограничений (2) и (3) определяется следующим общим принципом. Максимальное значение F(X), если оно существует, может достигаться в одной или более точках, которые могут принадлежать следующим множествам:
— внутренняя точка множества допустимых планов, в которой все первые частные производные
— точка границы множества допустимых планов};
— точка множества допустимых планов, в которой функция F(X) недифференцируема}.
В отличие от задач линейного программирования, любая из которых может быть решена симплекс-методом, не существует одного или нескольких алгоритмов, эффективных для решения любых нелинейных задач. Какой-то алгоритм может оказаться чрезвычайно эффективным для решения задач одного типа и неудачным для задач другого типа.
Эффективность алгоритма может даже существенно зависеть от постановки задачи, например от изменения масштабов измерения тех или иных переменных. Поэтому алгоритмы разрабатываются для каждого класса (типа) задач. Программы, ориентированные на решение определенного класса задач, как правило, не гарантируют правильность решения любых задач данного класса, и оптимальность решения рекомендуется проверять в каждом конкретном случае.
В экономических приложениях рассматриваются следующие классы задач НЛП.
1. Оптимизация нелинейной функции с ограничениями на неотрицательность значений переменных:
F(Х) ® mах,
X ³ 0,
Где Х = (Х1, Х2,..., хN) — вектор переменных задачи.
Пусть F(X) — дифференцируемая функция.
Необходимые условия того, что в точке Х0 достигается максимум функции F(X):
Это означает, что:
И
Если F(X) вогнутая функция (для задачи минимизации — Выпуклая), то эти условия являются также достаточными.
Функция F(X) с числовыми значениями, определенная на выпуклом множестве точек К, называется Вогнутой, если для любой пары точек Х1, Х2 и для всех чисел l, 0 £ l £ 1, выполняется неравенство
Если то функция F(X) называется Выпуклой. Если имеют место строгие неравенства, то говорят, что функция Строго вогнута или Строго выпукла.
Данное определение вогнутости (выпуклости) годится для любого типа функции. Практически, однако, применять его трудно.
Для дважды дифференцируемой функции F(X) имеет место следующий критерий. Дифференцируемая функция F(X) строго вогнута в некоторой окрестности точки если выполняются следующие условия:
Т. е. если знаки этих определителей чередуются указанным образом.
Здесь — частная производная второго порядка, вычисленная в точке Х0.
Матрица размера П ´ П, составленная из элементов , называется матрицей Хессе (Hesse). По значениям ее главных миноров можно судить о выпуклости или вогнутости функции. Функция F(X) Строго выпукла в малой окрестности точки Х0, если все главные миноры ее матрицы Хессе строго положительны. Если имеют место нестрогие неравенства (³), то функция в окрестности точки Х0 Выпукла. Если при этом главные миноры матрицы Хессе от Х не зависят, то функция всюду (строго) выпукла.
Весьма распространены относящиеся к данному типу Модели квадратичного программирования, в которых целевая функция F(X) является квадратичной функцией переменных Х1, х2, ..., ХN. Существует большое число алгоритмов решения такого типа задач, в которых функция F(X) вогнутая (для задач минимизации — выпуклая).
2. Модели выпуклого программирования. К такого рода моделям относятся задачи НЛП (1)—(3), в которых F(X) — вогнутая (выпуклая) функция, a Gi(X) — выпуклые функции. При данных условиях локальный максимум (минимум) является и глобальным.
Пусть F(X) и Gi(X), I= 1,..., Т, — дифференцируемые функции.
Необходимые и достаточные условия оптимальности решения — выполнение условий Куна — Таккера.
Рассмотрим задачу НЛП (1)—(3) и функцию Лагранжа L (Х, L) =
Условия Куна — Таккера оптимальности решения Х0 для задачи максимизации F(X) имеют вид
Где — частная производная функции Лагранжа по переменной ХJ при Х = Х0 и L = L0. Пусть максимальное значение F(X) равно F(X0) = F0. Числа связаны с F0 следующими соотношениями:
Из этих соотношений видно, что числа характеризуют реакцию значения F0 на изменение значения соответствующего Bi. Например, если < 0, то при уменьшении Bi (в пределах устойчивости ) значение F0 увеличится, а = 0 указывает на несущественность соответствующего ограничения Gi(Х) £ Bi, которое может быть без ущерба для оптимального решения из системы ограничений исключено.
3. Сепарабельное программирование. Специальный случай выпуклого программирования при условии, что F(X) и все Gi(Х) — сепарабельные функции, т. е.
Задачи данного вида сводятся к задачам линейного программирования.
4. Дробно-нелинейное программирование. Максимизировать (минимизировать) функцию F(X) = F1(X)/F2(X).
В частном случае, когда в числителе и знаменателе — линейные функции (так называемая задача дробно-линейного программирования), задача сводится к линейной.
5. Невыпуклое программирование. Функция F(X) и (или) какие-либо Gi(X) не выпуклы. Надежных методов решения задач такого типа пока не существует.
< Предыдущая | Следующая > |
---|