Теория решения задачи
Когда говорят о задачах математического программирования, то имеют в виду задачи оптимизации, которые формально сводятся к одной общей постановке:
найти значения переменных x1,...,xn, доставляющие максимум (минимум) заданной функции z=f(x1,...,xn) при условиях gi(x1,...,xn)=bi (i=1...m).
Условия, о которых идет речь, ограничивают выбор значений x1,...,xn и могут обладать самыми разнообразными свойствами, определяемыми видом функций gi(x1,...,xn). В каждой из m строк здесь сохраняется какой-либо знак (равенство, неравенство).
Множество точек X=(x1,...,xn), удовлетворяющих системе ограничений gi(X)=bi (i=1...m), есть область определения U поставленной выше задачи.
Учитывая сказанное, можно дать краткую запись условий задачи математического программирования:
![]()
В основу классификации таких задач положены особенности функций z и gi, встречающихся в конкретных исследованиях. Различают два основных класса задач – задачи линейного и нелинейного программирования. К первым относятся те, в которых и целевая функция z, и все функции gi (i=1...m) линейны относительно переменных xj (j=1...n), ко вторым – те, в которых присутствуют различного рода нелинейности.
Задачи нелинейного программирования.
Обратим внимание на ряд обстоятельств, способствующих разрешимости оптимизационных задач: наличие только глобального экстремума целевой функции; выпуклость области определения задачи; гладкость (дифференцируемость) функций f(X), gi(X). Перечисленными свойствами обладают линейные задачи.
Большинству нелинейных задач присущи такие особенности, которые затрудняют (а иногда делают невозможными) исследования общего характера. В этих условиях большое значение приобретают результаты, содержащие обоснованные и пригодные для практики рекомендации.
Метод множителей Лагранжа.
Проблема отыскания условного экстремума скалярной функции многих переменных была изучена еще Лагранжем, предложившим так называемый метод множителей для задач с ограничениями – равенствами gi(X)=bi, i=1...m. Интересный сам по себе, этот метод позволил получить в более позднее время ряд обобщений, которые привели к разработке алгоритмов решения задач с неклассическими условиями.
Чтобы найти решение
задачи вводят набор переменных
,называемых
множителями Лагранжа. Составляют функцию
Лагранжа:
![]()
Необходимые условия локального экстремума имеют вид:
![]()
![]()
где j=1...n; i=1...m.
Таким образом, решая систему уравнений с m+n неизвестными, находят точку X=(x10,...xn0), в которой может иметь место экстремум функции f. Дальнейшее исследование найденных точек проводят так же, как и в случае безусловного экстремума.
Преимущество рассматриваемого метода в том, что можно не учитывать взаимную зависимость переменных (он сводит задачу условной оптимизации к задаче безусловной оптимизации). Недостатком же является необходимость решения громоздких уравнений, что далеко не всегда удается.
Решение задачи
Решение задачи сводится к отысканию оптимальных значений x1, x2, x3, при которых достигается оптимум функции:
![]()
Задача имеет единственное ограничение – Сумма денег J не должна превышать потраченной на товары суммы, т.е.:
![]()
p1, p2, p3, J >0 – цена товара и сумма не могут быть отрицательными.
Данную задачу нелинейного программирования можно решить используя метод множителей Лагранжа.
Вводим переменную
,полагая
составляем функцию Лагранжа:
![]()
Находим частные производные от функции Лагранжа:
![]()
![]()
![]()
![]()
Приравниваем полученные производные к нулю и решаем систему уравнений с четырьмя неизвестными: x1, x2, x3,
:
(1)
(2)
(3)
(4)
Выражаем
из уравнения (1):
![]()
Подставляя значение
в уравнение (2)
находим x1:
![]()
Подставляя значение
в уравнение (3)
находим x3:
![]()
Подставляя значения x1 и x3 в уравнение (4), находим x2, а затем и все переменные:
![]()
![]()
![]()
Найденные переменные удовлетворяют условиям неотрицательности и являются оптимальными. Оптимальное значение целевой функции:
![]()
