Это старая версия (1.90) МетодМножителейЛагранжа.

Содержание

Метод множителей Лагранжа


To Do:
  • переписать функцию под векторную запись,
  • матрица технологических коэффициентов,
  • запись примера в матричной форме.

все картинки разом: http://rextester.com/LOJ42439


Метод нахождения экстремального значения функции при условии наличия ограничений, задаваемых равенствами.

Метод множителей Лагранжа (ММЛ) — это метод решения условных задач математического программирования.

Не надо путать ММЛ с методом Лагранжа: первое — задача математического (в т. ч. нелинейного программирования), второе — метод общего решения однородного дифференциального уравнения через вариацию (изменение) постоянной — месье Лагранж был весьма плодовитым математиком и дал имена очень многим математическим объектам, методам, принципам и формулам (почти как герр Эйлер). Также есть связанный метод приведения матрицы к каноническому виду.

Общая постановка задачи

Мы хотим найти экстремум функции f( bold x ) = f(x sub 1 , x sub 2 ,  ldots , x sub n ) . Функция f ( bold x ) — очень хорошая: она дифференцируема (имеет производную) в каждой точке (на всей) области своего определения (такие функции в курсе математического анализа обычно называют «гладкими»). Но помимо функции, экстремум(ы) которой мы хотим найти, в нашей задаче присутствуют ограничения. Ограничения выражают связь переменных функции между собой и могут быть представлены в виде функций: left {
  lpile {
    g sub 1 ( bold x ) = g sub 1 (x sub 1 , x sub 2 ,  ldots , x sub n ) above
    g sub 2 ( bold x ) = g sub 2 (x sub 1 , x sub 2 ,  ldots , x sub n ) above
    {center} vdots above
    g sub m ( bold x ) = g sub m (x sub 1 , x sub 2 ,  ldots , x sub n )
  }
} .

Заметим, что ограничения — тоже хорошие (гладкие) функции. Заметим, что если ограничения несовместны (их пересечение — пустое множество), то задача оптимизации теряет свой смысл. Но в нашем примере будем полагать, что ограничения хороши не только сами по себе, но и в совокупности.

За отклонения от (невыполнение) ограничений мы будет получать штраф. Штраф, соответствующий i-ому ограничения обозначим lambda sub i и получим вектор штрафов lambda = ( lambda sub 1 , lambda sub 2 , ldots , lambda sub m ).

Из начальной функции, которую мы оптимизируем, вектора штрафов и ограничений мы можем составить линейно-аддитивную (я это уберу потом, дайте повыёживаться) функцию: L( bold x, lambda ) = f( bold x ) - sum from i=1 to m lambda sub i g sub i ( bold x ) =
f(x sub 1 , x sub 2 , ldots , x sub n ) - 
sum from i=1 to m lambda sub i g sub i ( x sub 1 , x sub 2 , ldots , x sub n ) .

Эту функцию называется лагранжианом в честь её автора, месье Жозефа Луи Лагранжа, кавалера ордена Почётного Легиона, любимого математика и постоянного собеседника Наполеона Бонапарта, подарившего нам этот метод. Лагранжиан интересен нам, поскольку точка, в которой его производные по bold x и по lambda обращаются в ноль может быть экстремальным значением (а может и не быть, это может быть седловая точка — точка перегиба). Таким образом, равенство первых производных лагранжиана по расширенному списку переменных — это лишь необходимое условие экстремума. Запишем данное условие (условие первого порядка), которое будет состоять из n + m равенств: left {
  lpile {
    {partial L ( bold x , lambda )} over { partial x sub 1} = 0 above
    {partial L ( bold x , lambda )} over { partial x sub 2} = 0 above
  }
right nothing

Интуитивная интерпретация на примере

Некое предприятие производит два товара (x sub 1 и x sub 2): сумки и чемоданы. Для производства одной сумки требуется 4 единиц кожи и 5 единиц фурнитуры (заклёпки и проч.), для производства одного чемодана — 8 единиц кожи и 4 единицы фурнитуры. На складе предприятия находится следующий объём запасов: 2800 единиц кожи и 2000 единиц фурнитуры. Предприятие получет 10 алтын ЕАЭС прибыли с одной сумки и 15 алтын ЕАЭС — с чемодана. Наша задача: составить такой производственный план, который бы принёс предприятию максимальную прибыль.

Формализуем задачу. Функция, которую мы будем максимизировать — функция прибыли: f (x sub 1 , x sub 2 ) = 10 x sub 1 + 15 x sub 2 . Ограничения задаются технологическими картами (количество материалов на единицу выпуска) и объёмами располагаемых запасов. Сформулируем ограничения на кожу: 4 x sub 1 + 8 x sub 2 <= 2800. Аналогично сформулируем ограничения на фурнитуры: 5 x sub 1 + 4 x sub 2 <= 2000. Интуитивно очевидно, что в точке максимума прибыли наши ограничения будут выполнятся как равенства (чем больше произведён, тем больше получим прибыль), поэтому мы можем записать их именно в виде равенств: left {
  lpile {
    4 x sub 1 + 8 x sub 2 = 2800 ~ , above
    5 x sub 1 + 4 x sub 2 = 2000
  }
right nothing

Если мы обратимся к п. 2 тезисов, то увидим, что запись какждого ограничения должна быть в форме g sub i (x) = 0 ~, поэтому перепишем систему ограничений в виде: left {
  lpile {
    4 x sub 1 + 8 x sub 2 - 2800 = 0~ , above
    5 x sub 1 + 4 x sub 2 - 2000 = 0
  }
}

Геометрически мы можем изобразить данные ограничения на координатной плоскости:

Картинка: http://rextester.com/EASQ20039

Точки пересечения линий ограничений с осями показывают нам максимальное производство сумок или чемоданов, при котором используется весь доступный располагаемый запас того или иного материала. Естественно, возможные производственные планы находятся ниже и первого (синего — кожа), и второго (зелёное — фурнитура) ограничений, т. е. в области, ограниченной осями координат, синей и зелёной линиями. В остальных частях, нам не хватит или одного ресурса (выше одной, но ниже другой линии), или обоих (выше обеих линий).

Наша задача — найти наибольшее значение функции f (x sub 1 , x sub 2 ) = 10 x sub 1 + 15 x sub 2 ~. Мы не можем изображать график функции двух переменных в двумерной системе координат (не хватает измерений), но мы можем делать «срезы» этой функции. Геометрически функция прибыли f (x sub 1 , x sub 2 ) — плоскость, её «срезами» будут прямые (такие срезы называют «линии уровня»). Для получения этих срезов будем подставлять те или иные значения в функцию и рисовать прямые. Множество таких прямых напоминает листы в книге.

Картинка: http://rextester.com/GUAOM34969


КатегорияПрикладнаяМатематика | КатегорияЛинейноеПрограммирование