Основы линейного программирования
Задача линейного программирования
- Линейное программирование (ЛП)
- – это раздел математики, в котором изучаются методы решения задач на отыскание экстремумов линейных функций многих переменных при наличии линейных ограничений, наложенных на переменные.
- Общая задача линейного программирования
- – это задача на отыскание экстремума линейной функции с линейной системой ограничений.
Найти максимум (или минимум) линейной функции n переменных x1 , x2 , . . . , xn : (1.1) F = c1 x1  + c2 x2  + ⋅ ⋅ ⋅ + cn xn  → max (min )
при ограничениях вида
(1.3) xj  ≥ 0, j = 1, 2, . . . , t, t ≥ 0 .
Переменные задачи часто записывают в виде n-мерного вектора:
X = (x1 , x2 , . . . , xn ) .
Линейная функция (1.1) называется целевой функцией. В задаче нужно найти такие значения переменных x1 , x2 , . . . , xn , которые удовлетворяют системе ограничений (1.2) – (1.3), и при которых целевая функция F имеет наибольшее (или наименьшее) значение.
Система ограничений (1.2) может состоять из равенств
ai1 x1  + ai2 x2  + ⋅ ⋅ ⋅ + ain xn  = bi ,
и неравенств обоих знаков:
ai1 x1  + ai2 x2  + ⋅ ⋅ ⋅ + ain xn  ≤ bi , или
ai1 x1  + ai2 x2  + ⋅ ⋅ ⋅ + ain xn  ≥ bi .
В системе ограничений особо выделяют ограничения, связанные с не отрицательностью некоторых переменных (1.3), которые являются следствием физических свойств величин, описываемых этими переменными.
- Допустимое решение (план)
- задачи линейного программирования – это такие значения переменных x1 , x2 , . . . , xn , которые удовлетворяют системе ограничений (1.2) и условиям не отрицательности (1.3). Допустимое решение также называют планом.
- Область допустимых решений (ОДР)
- – это множество всех допустимых решений.
- Оптимальное решение (оптимальный план)
- или просто решение задачи линейного программирования – это такое допустимое решение задачи, при котором целевая функция имеет экстремальное значение. Оптимальное решение также называют оптимальным планом.
Различные формы задач ЛП
- Каноническая форма задачи линейного программирования
- – это общая задача линейного программирования, в которой система ограничений состоит из равенств и условий не отрицательности для всех переменных:
F = c1 x1  + c2 x2  + ⋅ ⋅ ⋅ + cn xn  → max (min ) xj  ≥ 0, j = 1, 2, . . . , n . - Симметричная форма задачи линейного программирования
- – это общая задача линейного программирования, в которой система ограничений состоит из неравенств одного знака и условий не отрицательности для всех переменных. Она имеет один из следующих двух видов:
F = c1 x1  + c2 x2  + ⋅ ⋅ ⋅ + cn xn  → max xj  ≥ 0, j = 1, 2, . . . , n .
Или
F = c1 x1  + c2 x2  + ⋅ ⋅ ⋅ + cn xn  → min xj  ≥ 0, j = 1, 2, . . . , n .
можно привести к каноническому виду (1.4).
А любую задачу в канонической форме
можно привести к любой из задач в симметричной форме (1.5) или (1.6).
При таких преобразованиях переменные задач могут не совпадать. Могут вводиться новые переменные, а также переменные одной из задач могут линейно выражаться через переменные той же задачи, записанной в другой форме.
- Дополнительная переменная (вспомогательная переменная)
- – это переменная, которая вводится для преобразования неравенства в равенство. Дополнительную переменную также называют вспомогательной переменной. Например, неравенство
ai,1 x1  + ai,2 x2  + ⋅ ⋅ ⋅ + ai,n xn  ≤ bi
переводится в равенство, введением дополнительной неотрицательной переменной xn + 1  ≥ 0 :
ai,1 x1  + ai,2 x2  + ⋅ ⋅ ⋅ + ai,n xn  + xn + 1  = bi .
Графический метод решения задач
Свойства решений задач линейного программирования (ЛП) наглядно демонстрирует графический метод решения.
Графическим методом можно решить задачу, если она имеет две переменные, или ее можно привести к задаче с двумя переменными.
(2.1) F = 2x1  + x2  → max
(2.2)
| – x1  + 3x2  | ≤ 12 |
| 2x1  – 3x2  | ≤ 4 |
| 3x1  + 2x2  | ≤ 19 |
(2.3) x1  ≥ 0, x2  ≥ 0 .
Сначала проводим оси x1 , x2 системы координат, и построим область допустимых решений (ОДР), которая определяется системой неравенств (2.2) и условиями не отрицательности переменных (2.3). Для построения ОДР, строим прямые, проходящие через границы неравенств:
– x1  + 3x2  = 12; 2x1  – 3x2  = 4; 3x1  + 2x2  = 19 .
С одной стороны каждой из построенных прямых соответствующее неравенство выполняется, а с другой стороны – нет. Поэтому ОДР ограничена этими прямыми. Также ОДР может быть ограничена осями координат, в силу неравенств x1  ≥ 0, x2  ≥ 0 . Замечаем, что точка x1  = 3, x2  = 3 удовлетворяет всем неравенствам (2.2) и (2.3). Поэтому она принадлежит ОДР. Заштриховываем область по границам прямых и осям координат, чтобы в нее вошла точка x1  = 3, x2  = 3 . Получаем, что ОДР является множеством точек внутри многоугольника OABCD вместе с его границей.
Теперь рассмотрим целевую функцию (2.1). Построим ее линию уровня, приравняв F к любому значению, например F = 6 :
(2.4) F = 2x1  + x2  = 6 .
Строим прямую 2x1  + x2  = 6 . С левой стороны от этой прямой F < 6 . С правой стороны, F > 6 . И чем больше мы удаляемся вправо и вверх, тем больше значение целевой функции F . Проводим прямую, параллельную прямой (2.4), так, чтобы она была максимально удалена в сторону увеличения значений F , то есть вправо, и при этом проходила хотя бы через одну точку ОДР. Такая прямая проходит через точку B с координатами (5, 2 ) . Это точка имеет наибольшее значение F среди всех точек ОДР. Поэтому x1  = 5, x2  = 2 является оптимальным планом с максимальным значением целевой функции:
Fmax  = 2x1  + x2  = 2 ⋅ 5 + ⋅ 2 = 12 .
Ответ
Решение задачи: Fmax  = 12, x1  = 5, x2  = 2 .
Подробнее, см. Решение задач линейного программирования графическим методом
Свойства решений задач ЛП
Графический метод иллюстрирует основные свойства решений задач ЛП. Мы увидели, что поскольку ОДР ограничена конечным числом прямых, то она является выпуклым многоугольником. Далее, целевая функция не может иметь экстремума во внутренней точке ОДР, а достигает экстремума только на границе. Причем экстремум достигается в одной из вершин многоугольника ОДР. Если взять целевую функцию F = 3x1  + 2x2 , то экстремум будет на отрезке BC . То есть экстремум может достигаться в двух вершинах, и во всех точках отрезка между ними.
Эти свойства имеют место и в более общем случае, когда число переменных больше двух. Только вместо плоскостей будут гиперплоскости, а вместо многоугольников – многогранники. Так, если рассмотреть задачу ЛП в симметричной форме ⇑, то ОДР является выпуклым многогранником, ограниченным гиперплоскостями ai1 x1  + ai2 x2  + ⋅ ⋅ ⋅ + ain xn  = bi и xj  = 0 . Целевая функция может достигать экстремум только на границе ОДР. При этом экстремум достигается обязательно на одной из вершин многогранника ОДР. Если экстремум достигается на нескольких вершинах, то оптимальными планами являются также все точки выпуклого многогранника, построенного на этих вершинах.
Далее приводим более строгую трактовку этих рассуждений.
является выпуклым множеством.
то оптимальный план является угловой точкой ОДР.
Если существует несколько оптимальных планов,
то в него входят две или более угловых точек, и любая выпуклая линейная комбинация этих угловых точек также является оптимальным планом. То есть задача имеет бесконечно много решений.
- Выпуклое множество
- Возьмем две произвольные точки, принадлежащие некоторому множеству. Если все точки отрезка, соединяющего эти точки, принадлежат этому множеству, то такое множество называется выпуклым.
- Угловая (крайняя) точка выпуклого множества
- – это точка, через которую нельзя провести отрезок так, чтобы она была внутренней точкой отрезка, концы которого принадлежат множеству. Угловую точку также называют крайней точкой.
- Опорный план
- – это план (допустимое решение), который является угловой точкой (вершиной многогранника) области допустимых решений.
Поскольку в задачах линейного программирования система ограничений содержит конечное число неравенств, то ОДР является многогранником. Тогда угловые точки ОДР являются вершинами многогранника.
может быть выбран из совокупности ее опорных планов.
- Выпуклая линейная комбинация точек
- M1 , M2 , . . . , Mk – это множество точек M , векторы которых, относительно начала системы координат, определяются по формуле:
→M = kΣi = 1 λi →Mi , где λj  ≥ 0, j = 1 ÷ k; kΣi = 1 λi  = 1 .
Для двух точек, выпуклая линейная комбинация M1 и M2 является отрезком с концами M1 и M2 . Для трех точек, если M1 , M2 и M3 не лежат на одной прямой, выпуклая линейная комбинация этих точек является треугольником с вершинами M1 , M2 и M3 . Если же эти точки лежат на одной прямой, то их выпуклая линейная комбинация является отрезком, концы которого совпадают с двумя из этих точек. При этом одна из точек будет внутренней точкой отрезка.
Задачи линейного программирования в канонической форме
Рассмотрим задачу линейного программирования, записанную в канонической форме ⇑. В произвольном случае, не все строки матрицы коэффициентов aij , могут быть линейно независимыми. Пусть r – ранг матрицы коэффициентов, то есть число линейно независимых строк. Это означает, что линейными преобразованиями, систему уравнений (1.4) можно привести к эквивалентной системе, содержащей r линейно независимых строк.
Выше мы указали, что оптимальный план является угловой точкой ОДР. Но угловая точка получается из системы ограничений, заменой части неравенств равенствами, чтобы в результате получилась система из n линейно независимых уравнений. Решая эту систему, можно найти координаты угловой точки.
Для задачи в канонической форме это сводится к тому, что мы должны добавить к системе уравнений еще n – r уравнений вида xj  = 0 . Полученное решение такой системы уравнений является опорным планом.
- Свободные переменные
- – это переменные задачи ЛП в канонической форме, на которые, в рассматриваемом опорном плане, наложено условие их равенства нулю: xj  = 0 .
- Базисные переменные
- – это переменные задачи ЛП в канонической форме, которые в рассматриваемом опорном плане, не являются свободными. Они имеют неотрицательные значения, которые определяются из решения системы уравнений (1.4).
- Невырожденный план (невырожденное решение)
- – это опорный план, в котором все базисные переменные отличны от нуля.
- Вырожденный план (вырожденное решение)
- – это опорный план, в котором есть одна или несколько базисных переменных, равных нулю.
- Векторы условий
- – это n векторов, которые являются столбцами матрицы коэффициентов системы (1.4).
- Вектор ограничений
- – это вектор, который являются столбцом правой части матрицы коэффициентов системы (1.4). То есть это вектор (b1 , b2 , . . ., bm ) .
- Базис
- – это r векторов, которые являются столбцами матрицы коэффициентов системы (1.4) при базисных переменных. То есть базис – это векторы условий при базисных переменных.
Если в рассматриваемой угловой точке план не вырожден, то в ней имеется только один набор базисных переменных. Если же план вырожден, то в этой точке имеется два или более набора базисных переменных.
в любом опорном плане имеется r базисных переменных ⇑.
Отсюда следует, что в опорном плане как минимум n – r переменных равны нулю. Здесь n – число переменных; r – ранг матрицы системы ограничений (1.4), из которой определяются значения базисных переменных.
Методы решения задач
Графический метод
Решение задачи графическим методом мы рассмотрели выше ⇑. Он применим, если в задаче имеются две переменные. Также он применим, если имеется n переменных и система ограничений содержит n – 2 линейно независимых уравнения. Тогда, решая систему ограничений, мы можем выразить n – 2 переменных через x1 и x2 , или через две другие переменные. В результате получим задачу с двумя переменными, которую можно решить графическим методом.
Метод перебора вершин
В этом методе мы используем тот факт, что оптимальный план является угловой точкой ОДР. А если задача имеет множество решений, то среди них имеются угловые точки.
В методе перебора вершин мы находим все угловые точки, и вычисляем в них значения целевой функции. Далее, из этих значений, определяем наибольшее или наименьшее значение целевой функции.
Решение задачи
Решим задачу (2.1) – (2.3) методом перебора вершин. При этом мы можем использовать результаты, полученные при решении графическим методом ⇑. Там мы нашли, что ОДЗ является многоугольником OABCD . И мы нашли координаты его вершин. Для каждой вершины мы можем вычислить значение целевой функции (2.1). Сравнивая их, можно определить наибольшее значение.
Но мы применим более общий метод, который работает при любом числе переменных, а не только для двух.
(П.1) F = 2 ⋅ x1  + 1 ⋅ x2  + 0 ⋅ x3  + 0 ⋅ x4  + 0 ⋅ x5  → max
(П.2)
| – x1  + 3x2  + x3  | = 12 |
| 2x1  – 3x2  + x4  | = 4 |
| 3x1  + 2x2  + x5  | = 19 |
(П.3) x1  ≥ 0, x2  ≥ 0, x3  ≥ 0, x4  ≥ 0, x5  ≥ 0 .
В этой задаче n = 5 переменных. Система ограничений (П.2) содержит 3 линейно независимых уравнения. Поэтому в произвольной угловой точке имеется 5 – 3 = 2 свободные переменные, и 3 базисные. Перебираем все возможные сочетания свободных переменных, приравниваем их к нулю, и, решая систему (П.2), определяем значения базисных переменных.
1) В качестве свободных переменных возьмем x1 и x2 . Приравниваем их к нулю, и подставляем в (П.2); получаем: x3  = 12; x4  = 4; x5  = 19 . Поскольку все xj  ≥ 0 , то мы нашли угловую точку ОДР или, что тоже самое, вершину многогранника ОДР: x1  = 0; x2  = 0; x3  = 12; x4  = 4; x5  = 19 . На построении ⇑ ей соответствует точка O .
| 3x2  | = 12 |
| – 3x2  + x4  | = 4 |
| 2x2  + x5  | = 19 |
Решаем ее: x2  = 12 / 3 = 4; x4  = 4 + 3x2  = 4 + 3 ⋅ 4 = 16; x5  = 19 – 2x2  = 11 . Поскольку все xj  ≥ 0 , то это угловая точка: x1  = 0; x2  = 4; x3  = 0; x4  = 16; x5  = 11 , На построении ⇑ ей соответствует точка D .
3) Возьмем свободные переменные x1 и x4 . Подставляем их нулевые значения в (П.2). Решая систему, получаем: x1  = 0; x2  = – 4 / 3; x3  = 16; x4  = 0; x5  = 65 / 3 . Поскольку x2  < 0 , то эта точка не принадлежит ОДЗ. Поэтому она не может быть планом задачи. Отбрасываем ее. На рисунке ⇑ ей соответствует точка пересечения прямой AB с осью x2 .
4) Свободные переменные x1  = x5  = 0 . Подставляя их нулевые значения в (П.2), находим: x1  = 0; x2  = 19 / 2; x3  = – 7; x4  = 65 / 2; x5  = 0 . Здесь также есть отрицательная переменная x3  < – 7 . Эта точка также не принадлежит ОДЗ. Отбрасываем ее. Это точка пересечения прямой BC с осью x2 .
5) Свободные переменные x2  = x3  = 0 . Подставляя в (П.2), находим решение системы: x1  = – 12; x2  = 0; x3  = 0; x4  = 28; x5  = 55 . Поскольку x1  < 0 , то и эта точка не принадлежит ОДЗ. Отбрасываем ее. Это точка пересечения прямой DC с осью x1 .
6) x2  = x4  = 0 . Решение системы: x1  = 2; x2  = 0; x3  = 14; x4  = 0; x5  = 13 . Поскольку все xj  ≥ 0 , то мы нашли угловую точку, которой на построении ⇑ соответствует точка A .
7) x2  = x5  = 0 . Решение системы: x1  = 19 / 3; x2  = 0; x3  = 55 / 3; x4  = – 26 / 3; x5  = 0 . x4  < 0 , точка не принадлежит ОДЗ. На рисунке ей соответствует точка пересечения прямой BC с осью x1 .
8) x3  = x4  = 0 . Решение системы: x1  = 16; x2  = 28 / 3; x3  = 0; x4  = 0; x5  = – 143 / 3 . x5  < 0 , точка не принадлежит ОДЗ. Это точка пересечения прямых AB и DC.
9) x3  = x5  = 0 . Решение системы: x1  = 3; x2  = 5; x3  = 0; x4  = 13; x5  = 0 . Все xj  ≥ 0 . Это угловая точка – точка C .
10) x4  = x5  = 0 . Решение системы: x1  = 5; x2  = 2; x3  = 11; x4  = 0; x5  = 0 . Все xj  ≥ 0 . Это угловая точка. На построении ⇑ ей соответствует точка B .
Итак, мы нашли все угловые точки ОДР. Находим в них значения целевой функции.
O(0, 0, 12, 4, 19 ), FO  = 2 ⋅ x1  + 1 ⋅ x2  = 2 ⋅ 0 + 1 ⋅ 0 = 0 ;
D(0, 4, 0, 16, 11 ), FD  = 2 ⋅ x1  + 1 ⋅ x2  = 2 ⋅ 0 + 1 ⋅ 4 = 4 ;
A(2, 0, 14, 0, 13 ), FA  = 2 ⋅ x1  + 1 ⋅ x2  = 2 ⋅ 2 + 1 ⋅ 0 = 4 ;
C(3, 5, 0, 13, 0 ), FC  = 2 ⋅ x1  + 1 ⋅ x2  = 2 ⋅ 3 + 1 ⋅ 5 = 11 ;
B(5, 2, 11, 0, 0 ), FB  = 2 ⋅ x1  + 1 ⋅ x2  = 2 ⋅ 5 + 1 ⋅ 2 = 12 .
Ответ
Наибольшим является значение целевой функции F = 12 в точке B . Решение задачи: Fmax  = 12, x1  = 5, x2  = 2 .
Симплексный метод
См. также: Решение задач симплекс методом – онлайн калькулятор- Симплексный метод
- – это метод последовательного улучшения плана задачи ЛП, при котором последовательно меняется состав базисных переменных с помощью линейных преобразований.
Для решения задачи симплексным методом, сначала задачу приводят к канонической форме. Далее выбирают любой опорный план с некоторым набором базисных переменных. Потом определяют свободную переменную, которую нужно включить в базис, чтобы при такой замене произошло наибольшее увеличение целевой функции. Определяют переменную, выходящую из базиса и с помощью линейных преобразований, совершают переход к новым базисным переменным. В результате получают новый план, значение целевой функции которого ближе к экстремальному. Процесс повторяют до тех пор, пока целевая функция не достигнет экстремального значения.
В геометрической интерпретации это означает следующее.
1. Вначале мы выбираем любую вершину многогранника ОДР.
2. Добавляя в базис новую переменную, выбираем направление до смежной вершины вдоль ребра многогранника, двигаясь по которому целевая функция наиболее быстро возрастает.
3. Переходим на новую вершину по выбранному в пункте 2 направлению, исключая из базиса одну из переменных.
4. Повторяем пункты 2 и 3, пока не достигнем экстремума.
Решение задачи
(С.1) F = 2 ⋅ x1  + 1 ⋅ x2  + 0 ⋅ x3  + 0 ⋅ x4  + 0 ⋅ x5  → max
(С.2)
| – x1  + 3x2  + x3  | = 12 |
| 2x1  – 3x2  + x4  | = 4 |
| 3x1  + 2x2  + x5  | = 19 |
(С.3) x1  ≥ 0, x2  ≥ 0, x3  ≥ 0, x4  ≥ 0, x5  ≥ 0 .
Решаем задачу симплексным методом.
(С.4)
| x3  | = 12 + x1  – 3x2  |
| x4  | = 4 – 2x1  + 3x2  |
| x5  | = 19 – 3x1  – 2x2  |
Приравнивая свободные переменные x1 и x2 к нулю, получаем первый опорный план, который мы обозначим буквой O : O(x1  = 0, x2  = 0, x3  = 12, x4  = 4, x5  = 19 ) , или в сокращенной форме O(0, 0, 12, 4, 19 ) . Значение целевой функции: FO  = 2 ⋅ x1  + 1 ⋅ x2  + 0 ⋅ x3  + 0 ⋅ x4  + 0 ⋅ x5  = 2 ⋅ 0 + 1 ⋅ 0 + 0 ⋅ 12 + 0 ⋅ 4 + 0 ⋅ 19 = 0 .
На рисунке ⇑, этому плану соответствует точка O(0, 0 ) .
2. Теперь попробуем найти смежную вершину многогранника ОДР, в которой значение целевой функции было бы больше FO . Для этого нужно переместиться из вершины O вдоль одного из ребра многогранника на небольшое расстояние по направлению к смежной вершине и посмотреть, увеличилась ли при этом целевая функция?
x3  = 12 + Δx3 , x4  = 4 + Δx4 , x5  = 19 + Δx5 .
Свободная переменная x2 по прежнему равняется нулю. Подставляя в (С.4), и удаляя равные слагаемые в обеих частях равенств, получаем:
(С.5)
| Δx3  | = Δx1  |
| Δx4  | = – 2Δx1  |
| Δx5  | = – 3Δx1  |
Обозначим эту новую точку как OΔ1 (0 + Δx1 , 0, 12 + Δx3 , 4 + Δx4 , 19 + Δx5 ) . Найдем разность значений целевой функции в точках O и OΔ1 :
ΔF1  = FOΔ1  – FO  = 2 ⋅ Δx1  + 0 ⋅ Δx3  + 0 ⋅ Δx4  + 0 ⋅ Δx5  =
2 ⋅ Δx1  + 0 ⋅ Δx1  – 0 ⋅ 2Δx1  – 0 ⋅ 3Δx1  = 2Δx1 .
Таким образом, если переменной x1 присвоить положительное значение Δx1 , то целевая функция увеличится на ΔF1  = 2Δx1 .
(С.6)
| Δx3  | = – 3Δx2  |
| Δx4  | = 3Δx2  |
| Δx5  | = – 2Δx2  |
Обозначим эту новую точку как OΔ2 (0, 0 + Δx2 , 12 + Δx3 , 4 + Δx4 , 19 + Δx5 ) . Найдем разность значений целевой функции в точках O и OΔ2 :
ΔF2  = FOΔ2  – FO  = 1 ⋅ Δx2  + 0 ⋅ Δx3  + 0 ⋅ Δx4  + 0 ⋅ Δx5  =
1 ⋅ Δx2  – 0 ⋅ Δ3x2  – 0 ⋅ 3Δx2  – 0 ⋅ 2Δx2  = Δx1 .
Если переменной x2 присвоить положительное значение Δx2 , то целевая функция увеличится на ΔF2  = Δx2 .
2.3. Итак, мы нашли, что если переменной x1 или x2 присвоить положительное значение, то целевая функция увеличится. Это означает, что первый опорный план (0, 0, 0, 0, 0 ) не оптимален. Целевую функцию можно увеличить введением в базис x1 или x2 . При увеличении x1 на единицу, целевая функция увеличится на 2 ⋅ Δx1  = 2 ⋅ 1 = 2 . При увеличении x2 на единицу, целевая функция увеличится на 1 ⋅ Δx1  = 1 . В первом случае увеличение больше. Поэтому вводим в базис переменную x1 . То есть считаем, что она может принимать отличные от нуля положительные значения.
| x3  | = 12 + x1  |
| x4  | = 4 – 2x1  |
| x5  | = 19 – 3x1  |
Далее будем увеличивать x1 до тех пор, пока одна из переменных x3 , x4 , x5 не обратиться в нуль. Если и дальше продолжить увеличение x1 , то эта переменная станет отрицательной, что не допустимо.
Поскольку x1  ≥ 0 , то переменная x3 всегда будет положительной. Переменная x4 обращается в нуль при x1  = 4 / 2 = 2 . Переменная x5 – при x1  = 19 / 3 = 6,333(3 ) . Минимальное из этих величин x1  = 2 . При этом значении, x4  = 0, x5  = 19 – 3 ⋅ 2 = 13 > 0 . Если положить x1  > 2 , то переменная x4 станет отрицательной, что не допустимо.
(С.7)
| x1  | = 2 + 32 x2  – 12 x4  |
| x3  | = 14 – 32 x2  – 12 x4  |
| x5  | = 13 – 132 x2  + 32 x4  |
Приравнивая свободные переменные x2 , x4 к нулю, получаем второй опорный план. Обозначим его буквой A : A(2, 0, 14, 0, 13 ) . Значение целевой функции:
FA  = 2 ⋅ x1  + 1 ⋅ x2  + 0 ⋅ x3  + 0 ⋅ x4  + 0 ⋅ x5  = 2 ⋅ x1  + 1 ⋅ x2  = 2 ⋅ 2 + 1 ⋅ 0 = 4 .
На рисунке ⇑, этому плану соответствует точка A(2, 0 ) . То есть в результате мы перешли из вершины O в вершину A многогранника ОДР.
4. Повторяем шаги 2 и 3.
| Δx1  | = 32 Δx2  |
| Δx3  | = – 32 Δx2  |
| Δx5  | = – 132 Δx2  |
Изменение целевой функции:
ΔF2  = 2 ⋅ Δx1  + 1 ⋅ Δx2  + 0 ⋅ Δx3  + 0 ⋅ Δx4  + 0 ⋅ Δx5  = 2 ⋅ 32 Δx2  + 1 ⋅ Δx2  = 4Δx2 .
| Δx1  | = – 12 Δx4  |
| Δx3  | = – 12 Δx4  |
| Δx5  | = 32 Δx4  |
Изменение целевой функции:
ΔF4  = 2 ⋅ Δx1  + 1 ⋅ Δx2  + 0 ⋅ Δx3  + 0 ⋅ Δx4  + 0 ⋅ Δx5  = – 12 ⋅ Δx4  + 1 ⋅ 0 = – 12 ⋅ Δx4 .
Итак, если ввести в базис x2 , то целевая функция увеличится. А если x4 – уменьшится. Поэтому вводим в базис x2 .
| x1  | = 2 + 32 x2  |
| x3  | = 14 – 32 x2  |
| x5  | = 13 – 132 x2  |
Переменная x1 положительна при любых значениях x2  ≥ 0 . Переменная x3 обращается в нуль при x2  = 28 / 3 = 9,33(3 ) ; переменная x5 – при x2  = 2 . Наименьшее: x2  = 2 . При этом переменная x5 принимает нулевое значение и выходит из базиса.
(С.8)
| x1  | = 5 – 213 x4  – 313 x5  |
| x2  | = 2 + 313 x4  – 213 x5  |
| x3  | = 11 – 1113 x4  + 313 x5  |
Приравнивая свободные переменные x4 и x5 , получаем третий опорный план, который обозначим буквой B : B(5, 2, 11, 0, 0 ) . Значение целевой функции:
FB  = 2 ⋅ x1  + 1 ⋅ x2  + 0 ⋅ x3  + 0 ⋅ x4  + 0 ⋅ x5  = 2 ⋅ 5 + 1 ⋅ 2 = 12 .
На рисунке ⇑, этому плану соответствует точка B(5, 2 ) .
6. Повторяем шаги 4 и 5.
| Δx1  | = – 213 Δx4  |
| Δx2  | = 313 Δx4  |
| Δx3  | = – 1113 Δx4  |
Изменение целевой функции:
ΔF4  = 2 ⋅ Δx1  + 1 ⋅ Δx2  + 0 ⋅ Δx3  + 0 ⋅ Δx4  + 0 ⋅ Δx5  =
– 2 ⋅ 213 Δx4  + 1 ⋅ 313 Δx4  = – 113 Δx4 .
ΔF4  < 0 . Введение в базис x4 не приведет к увеличению значения целевой функции.
| Δx1  | = – 313 Δx5  |
| Δx2  | = – 213 Δx5  |
| Δx3  | = 313 Δx5  |
Изменение целевой функции:
ΔF5  = 2 ⋅ Δx1  + 1 ⋅ Δx2  + 0 ⋅ Δx3  + 0 ⋅ Δx4  + 0 ⋅ Δx5  =
– 2 ⋅ 313 Δx5  – 1 ⋅ 213 Δx5  = – 813 Δx5 .
И здесь ΔF5  < 0 . Введение в базис x5 также не приведет к увеличению значения целевой функции. Поэтому последний план B оптимален.
Ответ
Решение задачи:
x1  = 5, x2  = 2, Fmax  = 12 .
Транспортная задача
См. также: Решение транспортной задачи – онлайн калькулятор- Транспортная задача
- – это задача линейного программирования следующего вида:
(Т.1) F = mΣi = 1 nΣj = 1 cij xij  → min
(Т.2) nΣj = 1 xij  = ai , (i = 1 ÷ m )
(Т.3) mΣi = 1 xij  = bj , (j = 1 ÷ n )
(Т.4) xij  ≥ 0 ,
где ai  > 0, bj  > 0 (i = 1 ÷ m, j = 1 ÷ n ) .
В транспортной задаче требуется определить количество груза xij , которое нужно перевезти от i-го поставщика к j-му потребителю, чтобы суммарные затраты F на перевозки были минимальны. Здесь cij – стоимость перевозки единицы груза от i-го поставщика к j-му потребителю; ai – мощность i-го поставщика, то есть максимальное количество груза, которое может отправить поставщик; bj – мощность j-го потребителя, то есть максимальное количество груза, которое может принять потребитель.
Транспортную задачу можно решить симплексным методом. Однако имеются методы, которые позволяют получить решение другими, как правило, более легкими способами, используя специфичный вид системы ограничений (Т.2) – (Т.3). Одним из таких методов является метод потенциалов. В нем, как и в симплексном методе ⇑, используется метод последовательного улучшения плана. Мы кратко рассмотрим применение этого метода на примере решения простой транспортной задачи.
Решение транспортной задачи методом потенциалов
Условие задачи
(Т.5)
| 4 | 5 | 1 |
| 3 | 3 | 8 |
Требуется найти план перевозок, при котором суммарные затраты на перевозки минимальны.
Решение
Вначале нужно подсчитать суммы мощностей поставщиков и потребителей. Если сумма мощностей поставщиков равна сумме мощностей потребителей, то такая задача называется задачей с правильным балансом, или задачей с закрытой моделью. Задача, в которой суммы мощностей поставщиков и потребителей не совпадают, называется задачей с неправильным балансом, или задачей с открытой моделью. Если у задачи открытая модель, то ее сначала нужно привести к закрытой модели, добавлением фиктивного поставщика или потребителя с нулевыми стоимостями перевозок. В нашем случае, сумма мощностей поставщиков равна сумме мощностей потребителей:
mΣi = 1 ai  = 5 + 10 = 15; nΣj = 1 bj  = 5 + 6 + 4 = 15 .
Модель закрытая, задачу можно решать методом потенциалов.
Задача имеет m ⋅ n = 2 ⋅ 3 = 6 неотрицательных переменных:
x11 , x12 , x13 , x21 , x22 , x23 .
(Т.6)
| x11  + x12  + x13  | = 5 |
| x21  + x22  + x23  | = 10 |
| x11  + x21  | = 5 |
| x12  + x22  | = 6 |
| x13  + x23  | = 4 |
Существует теорема, согласно которой, ранг r системы ограничений транспортной задачи равен r = n + m – 1 . То есть система (Т.6) имеет r = n + m – 1 = 3 + 2 – 1 = 4 линейно независимых уравнения. Тогда по теореме о числе базисных переменных ⇑, угловая точка ОДР имеет r = 4 базисных переменных, и m ⋅ n – r = 6 – 4 = 2 свободных.
Поясним, почему ранг системы равен r = n + m – 1 . Это означает, что эти уравнения имеют одну линейную зависимость. Найдем ее. Поскольку модель закрытая, то mΣi = 1 ai  – nΣj = 1 bj  = 0 . Подставим (Т.2) и (Т.3):
mΣi = i nΣj = 1 xij  – nΣj = 1 mΣi = 1 xij  = 0 ;
x11  + x12  + x13  + x21  + x22  + x23  – (x11  + x21 ) – (x12  + x22 ) – (x13  + x23 ) = 0 .
Отсюда видно, что если сложить первые два уравнения (Т.6), и вычесть последние три, то получим тождество 0 = 0 . Что означает, что система (Т.6) имеет линейную зависимость.
Применяем метод последовательного улучшения плана.
Метод северо-западного угла
1. Вначале нам нужно найти любой опорный план, удовлетворяющий системе ограничений (Т.6) и условию не отрицательности переменных. Существует несколько методов, позволяющих это сделать. Мы применим метод северо-западного угла.
Заносим исходные данные в таблицу и даем максимально возможную поставку в левую верхнюю клетку (1, 1 ) . В ней находится объем перевозки от 1-го поставщика к 1-му потребителю. В общем случае, максимально возможная поставка в клетку (1, 1 ) равна x11  = min (a1 , b1 ) . В нашем случае, мощность первого поставщика a1  = 5 равна мощности первого потребителя b1  = 5 . Поэтому наибольшая поставка в клетку (1, 1 ) равна 5. Заносим 5 в клетку (1, 1 ) .
Теперь нам нужно вычеркнуть либо первую строку, либо первый столбец. В нашем случае, как первый поставщик, так и первый потребитель исчерпали свои мощности. Однако вычеркнуть мы можем только одну строку или один столбец. Вместе их вычеркнуть нельзя. Вычеркиваем по своему усмотрению первую строку.
Далее заполняем левую верхнюю клетку в оставшейся части таблицы, среди не зачеркнутых клеток. Это клетка (2, 1 ) . В ней находится объем перевозки x21 от 2-го поставщика к 1-му потребителю. Нам нужно дать в нее максимально возможную поставку. Но потребности первого потребителя уже полностью удовлетворены первым поставщиком. Поэтому наибольшая поставка в клетку (2, 1 ) равна нулю. Заносим 0 в клетку (2, 1 ) . Здесь возник случай, когда переменная x21 является базисной, но ее значение равно нулю.
Далее нам нужно вычеркнуть либо строку, либо столбец, содержащий заполненную клетку (2, 1 ) . Поскольку потребности первого потребителя удовлетворены, то вычеркиваем первый столбец.
Снова заполняем левую верхнюю клетку в оставшейся части таблицы, среди не зачеркнутых клеток. Это клетка (2, 2 ) . Мощность второго потребителя равна 6, неизрасходованная мощность второго поставщика: 10. Минимальное из этих чисел: 6. Даем в клетку (2, 2 ) поставку 6, и вычеркиваем 2-го потребителя, поскольку его потребности удовлетворены.
Остается клетка (2, 3 ) , которую можно заполнить единственно возможным значением 4.
В результате мы получили первый опорный план. Базисные переменные: x11  = 5, x21  = 0, x22  = 6, x23  = 4 . Свободные переменные: x12  = x13  = 0 . Значение целевой функции:
F1  = Σij cij xij  = 4 ⋅ 5 + 5 ⋅ 0 + 1 ⋅ 0 + 3 ⋅ 0 + 3 ⋅ 6 + 8 ⋅ 4 = 70 .
Определение потенциалов
Определяем потенциалы ui , vj . Для этого нужно найти любое решение системы уравнений, используя только заполненные клетки таблицы, то есть базисные переменные:
(Т.7) ui  + vj  = cij .
(Т.8)
| u1  + v1  | = 4 |
| u2  + v1  | = 3 |
| u2  + v2  | = 3 |
| u2  + v3  | = 8 |
Здесь 4 уравнения и 5 неизвестных. Поэтому одной переменной можно присвоить произвольное значение. Полагаем u1  = 0 . Решаем систему (Т.8).
v1  = 4 – u1  = 4; u2  = 3 – v1  = – 1; v2  = 3 – u2  = 4; v3  = 8 – u2  = 9 .
Находим оценки свободных клеток (то есть оценки свободных переменных) по формуле:
Δij  = cij  – ui  – vj .
Δ12  = c12  – u1  – v2  = 5 – 0 – 4 = 1;
Δ13  = c13  – u1  – v3  = 1 – 0 – 9 = – 8 .
Поскольку есть отрицательная оценка Δ13  = – 8 , то план не оптимален. Вводим переменную с отрицательной оценкой x13 в базис.
Переход к новому базису
Чтобы перейти к новому базису, в симплексном методе, мы выполняли линейные преобразования над системой ограничений. В транспортной задаче переход выполняется с помощью цикла.
- Цикл
- с начальной вершиной в заданной пустой клетке – это ломаная, все вершины которой расположены в занятых клетках, кроме одной начальной вершины. И при этом две соседние вершины цикла расположены или в одной строке, или в одном столбце.
Строим цикл для клетки (1, 3 ) . Пронумеруем его вершины, начиная со свободной клетки. 1 ) (1, 3 ); 2 ) (1, 1 ); 3 ) (2, 1 ); 4 ) (2, 3 ).
Переходим к новому базису, выполняя перераспределение поставок. Для этого находим минимальное значение поставки среди четных вершин цикла. В нашем случае это поставка 4 в клетке (2, 3 ) . В четных клетках уменьшаем поставки на 4, а в нечетных – увеличиваем на 4. Такое перераспределение поставок называют сдвигом по циклу. При этом поставка в клетке (2, 3 ) становится равной нулю. Ее мы выводим из базиса, а клетка (1, 3 ) становится заполненной, то есть входит в базис.
В результате получаем второй опорный план. Базисные переменные: x11  = 1, x13  = 4, x21  = 4, x22  = 6 . Свободные переменные: x12  = x23  = 0 . Значение целевой функции:
F2  = Σij cij xij  = 4 ⋅ 1 + 5 ⋅ 0 + 1 ⋅ 4 + 3 ⋅ 4 + 3 ⋅ 6 + 8 ⋅ 0 = 38 .
Для первого опорного плана было F1  = 70 . Мы видим, что значение целевой функции стало меньше.
Определение потенциалов нового плана
(Т.9)
| u1  + v1  | = 4 |
| u1  + v3  | = 1 |
| u2  + v1  | = 3 |
| u2  + v2  | = 3 |
Полагаем u1  = 0 . Решаем систему (Т.9).
v1  = 4 – u1  = 4; v3  = 1 – u1  = 1; u2  = 3 – v1  = – 1; v2  = 3 – u2  = 4 .
Находим оценки свободных клеток по формуле:
Δij  = cij  – ui  – vj .
Δ12  = c12  – u1  – v2  = 5 – 0 – 4 = 1;
Δ23  = c23  – u2  – v3  = 8 – (– 1 ) – 1 = 8 .
Поскольку отрицательных оценок нет, то план оптимален.
Ответ
Наименьшее значение целевой функции F = 38 . Оптимальный план показан в таблице 2 ⇑.
Использованная литература:
С. Гасс. Линейное программирование (методы и приложения). Москва, «Государственное издательство физико-математической литературы», 1961.
Общий курс высшей математики для экономистов. Под общей редакцией В. И. Ермакова. Москва, «ИНФРА-М», 2007.
К. Н. Лунгу. Линейное программирование. Руководство к решению задач. Москва, «ФИЗМАТЛИТ», 2005.
Д. Б. Юдин, Е. Г. Гольштейн. Задачи и методы линейного программирования. Москва, «Советское радио», 1961.
Автор: Олег Одинцов. Опубликовано: