Переход к канонической форме ЗЛП
Каноническая форма ЗЛП — задача линейного программирования вида ax = b , где a — матрица коэффициентов, b — вектор ограничений.
Инструкция . Выберите количество переменных и количество строк (количество ограничений). Полученное решение сохраняется в файле Word .
Математическая модель ЗЛП называется основной, если ограничения в ней представлены в виде уравнений при условии неотрицательности переменных.
Математическая модель называется канонической, если ее система ограничений представлена в виде системы m линейно независимых уравнений (ранг системы r=m), в системе выделен единичный базис, определены свободные переменные и целевая функция выражена через свободные переменные. При этом правые части уравнений неотрицательны (bi ≥ 0).
Переменные, входящие в одно из уравнений системы с коэффициентом один и отсутствующие в других уравнениях называются базисными неизвестными, а все другие – свободными.
Решение системы называется базисным, если в нем свободные переменные равны 0, и оно имеет вид:
Xбаз = (0, 0; b1, …, bm), f(Xбаз) = c0
Базисное решение является угловой точкой множества решений системы, т.е. определяет вершину многоугольника решений модели. Среди таких решений находится и то, при котором целевая функция принимает оптимальное значение.
Базисное решение называется опорным, если оно допустимо, т.е. все правые части уравнений системы (или неравенств) положительны bi ≥ 0.
Компактная форма канонической модели имеет вид:
AX = b
X ≥ 0
Z = CX(max)
Понятие допустимого решения, области допустимых решений, оптимального решения задачи линейного программирования.
Определение 1 . Вектор X, удовлетворяющий системе ограничений ЗЛП, в том числе и условиям неотрицательности, если они имеются, называется допустимым решением ЗЛП.
Определение 2 . Совокупность всех допустимых решений образует область допустимых решений (ОДР) ЗЛП.
Определение 3 . Допустимое решение, для которого целевая функция достигает максимума (или минимума), называется оптимальным решением.
- эти значения удовлетворяли некоторой системе линейных уравнений или неравенств;
- при этих значениях целевая функция обращалась бы в минимум или максимум.
- неравенства, входящие в систему ограничений задачи, преобразовать в уравнения с помощью введения дополнительных переменных;
- если целевая функция F→max (максимизируется), она заменяется на функцию –F→ min (которая минимизируется).
Пример №1 . Следующую задачу ЛП привести к каноническому виду: F(X) = 5x1 + 3x2 → max при ограничениях:
2x1 + 3x2≤20
3x1 + x2≤15
4x1≤16
3x2≤12
Модель записана в стандартной форме. Введем балансовые неотрицательные переменные x3, x4, x5, x6, которые прибавим к левым частям ограничений-неравенств. В целевую функцию все дополнительные переменные введем с коэффициентами, равными нулю:
В первом неравенстве смысла (≤) вводим базисную переменную x3. Во 2-ом неравенстве смысла (≤) вводим базисную переменную x4. В третьем неравенстве вводим базисную переменную x5. В 4-м неравенстве — базисную переменную x6. Получим каноническую форму модели:
2x1 + 3x2 + 1x3 + 0x4 + 0x5 + 0x6 = 20
3x1 + 1x2 + 0x3 + 1x4 + 0x5 + 0x6 = 15
4x1 + 0x2 + 0x3 + 0x4 + 1x5 + 0x6 = 16
0x1 + 3x2 + 0x3 + 0x4 + 0x5 + 1x6 = 12
F(X) = 5x1 + 3x2 + 0x3 + 0x4 + 0x5 + 0x6 → max Пример №2 . Найти два опорных решения системы
x1 + 2x4 – 2x5 = 4
x3 + 3x4 + x5 = 5
x2 + 3x5 = 2 Ответ: X = (4;2;5;0;0) Пример №3 . Привести к канонической форме следующую ЗЛП.
F = 2x1 — x2 + 4x3 -2x4 → min
при ограничениях:
7x1 –x2 +5x3 + x4 = -10
3x1 +5x2 -9x3 + 2x4 = 6
x1 –x2 -2x3 + 6x4 ≥ 7
x1 +x2 -5x3 ≤ 11
7x1 –x2 -3x3 — x4 ≤ 9
x1 ≥0 , x2 ≥0 (обратите внимание, что переменные x3 и x4 имеют произвольный знак) Для приведения ЗЛП к канонической форме необходимо:
1. Поменять знак у целевой функции
— F = -2x1 + x2 — 4x3 +2x4 → max 2. В левые части трех последних неравенств внести дополнительные переменные x5, x6, x7 со знаком плюс или минус в зависимости от знака неравенства.
7x1 –x2 +5x3 + x4 = -10
3x1 +5x2 -9x3 + 2x4 = 6
x1 –x2 -2x3 + 6x4 –x5 = 7
x1 +x2 -5x3 +x6 = 11
7x1 –x2 -3x3 — x4 +x7 = 9
x1 ≥0 , x2 ≥0, x5 ≥0 , x6 ≥0, x7 ≥0 3. Так как переменные x3 и x4 произвольного знака, то они заменяются разностями неотрицательных переменных.
7x1 –x2 +5(x8 – x9) + (x10 – x11) = -10
3x1 +5x2 -9(x8 – x9) + 2(x10 – x11) = 6
x1 –x2 -2(x8 – x9) + 6(x10 – x11) –x5 = 7
x1 +x2 -5(x8 – x9) +x6 = 11
7x1 –x2 -3(x8 – x9) — (x10 – x11) +x7 = 9
x1 ≥0 , x2 ≥0, x5 ≥0 , x6 ≥0, x7 ≥0 , x8 ≥0, x9 ≥0 , x10 ≥0, x11 ≥0 4. Соответствующая целевая функция примет вид:
— F = -2x1 + x2 — 4(x8 – x9) +2(x10 – x11) → max см. также Как привести каноническую задачу линейного программирования к стандартной форме Пример №2 . Преобразовать следующие задачи ЛП к канонической форме и решить их симплекс-методом.
4.1. Каноническая форма задачи линейного программирования
Запись целевой функции и системы ограничений в различных задачах линейного программирования неодинаков: в одних задачах требуется найти минимум целевой функции, а в других – максимум; в одних случаях искомые переменные зависят от одного индекса, а в других – от двух; в одних задачах ограничения заданы в виде системы линейных неравенств, а в других – в виде системы линейных уравнений. На практике возможны также задачи, в которых часть ограничений имеет вид линейных неравенств, а часть – линейных уравнений. Также не во всех задачах может требоваться неотрицательность переменных .
Учет такого разнообразия задач линейного программирования требует разработки специальных методов для решения отдельных их классов. Мы же сосредоточим свое внимание на изучении общих свойств и методов линейного программирования, записанных в так называемой канонической форме.
Если в задаче линейного программирования система исходных ограничений приобретает вид уравнений типа
или
и нужно найти максимум линейной целевой функции
,
то считается, что задача линейного программирования записана в канонической форме.
Любую задачу линейного программирования можно легко свести к канонической форме. В общем случае для этого достаточно уметь, во-первых, свести задачу минимизации целевой функции к задаче ее максимизации, во-вторых, переходить от ограничений-неравенств к ограничениям-равенствам, и в-третьих, менять те переменные, которые не подчинены условию неотрицательности.
В том случае, когда нужно найти минимум функции , можно перейти к нахождению максимума функции , поскольку справедливо утверждение: .
Ограничение-неравенство исходной задачи, которое имеет вид «» , можно превратить в ограничение-уравнение путем добавления к его левой части дополнительной неотрицательной переменной, а ограничение-неравенство вида «»– путем вычитания из его левой части дополнительной неотрицательной переменной.
Заметим, что количество введенных дополнительных неотрицательных переменных всегда равно количеству неравенств в исходной системе ограничений.
Введены дополнительные переменные имеют вполне конкретный экономический смысл. Так, если в ограничениях исходной задачи линейного программирования отражаются расходы и наличие производственных ресурсов, то числовое значение дополнительной переменной показывает объем соответствующего неиспользованного ресурса.
Отметим также, что если некоторая переменная не подчиняется условию неотрицательности, то ее нужно заменить двумя неотрицавтельными переменными и , приняв .
Пример. Записать в канонической форме следующую задачу линейной оптимизации: найти минимум функции при ограничениях
В данной задаче нужно найти минимум целевой функции, а система ограничений включает четыре неравенства. Для того, чтобы записать ее в канонической форме, нужно перейти от ограничений-неравенств к ограничениям-уравнениям, а также превратить целевую функцию.
Так как количество неравенств, входящих в систему ограничений задачи , равно четырем, то этот переход должен быть осуществлен с введением четырех дополнительных неотрицательных переменных. При этом во втором и четвертом неравенствах стоит знак «» , поэтому к их левой части дополнительные переменные добавляем. В первом и третьем неравенствах – знак «», значит от их левой части дополнительные переменные вычитаем.
Также превращаем целевую функцию, поменяв все знаки на противоположные, и находим ее максимум.
Таким образом, данная задача линейного программирования будет записана в следующем каноническом виде:
найти максимум функции
при ограничениях