Каноническая форма задачи линейного программирования.

Приведение к канонической форме

Задача линейного программирования называется задачей в канонической форме, если она имеет вид

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru .

Приведение к канонической форме:

1. Если Каноническая форма задачи линейного программирования. - student2.ru , то соответствующее ограничение умножается на (-1). При этом, если соответствующее ограничение – неравенство, то знак неравенства меняется на противоположный.

2. Если Каноническая форма задачи линейного программирования. - student2.ru , то функция заменяется на следующую Каноническая форма задачи линейного программирования. - student2.ru .

3. Если имеется неравенство Каноническая форма задачи линейного программирования. - student2.ru , то оно заменяется на уравнение Каноническая форма задачи линейного программирования. - student2.ru , при Каноническая форма задачи линейного программирования. - student2.ru и Каноническая форма задачи линейного программирования. - student2.ru .

Если имеется неравенство Каноническая форма задачи линейного программирования. - student2.ru , то оно заменяется на уравнение Каноническая форма задачи линейного программирования. - student2.ru , при Каноническая форма задачи линейного программирования. - student2.ru и Каноническая форма задачи линейного программирования. - student2.ru .

Переменная Каноническая форма задачи линейного программирования. - student2.ru называется дополнительной переменной и показывает, на сколько левая часть неравенства отличается от правой.

Пример 1.6. Привести ЗЛП к каноническому виду.

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru .

1.Устранение неотрицательных чисел в правой части:

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru .

2. Изменение целевой функции:

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru .

3,4. Замена неравенств в ограничениях равенствами:

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru .

Это окончательный вид ЗЛП.

Заметим, что в соответствующем примере есть первая и третья дополнительные переменные. Для удобства номер дополнительной переменной соответствует номеру строки, в которой она присутствует.

В дальнейшем почти всегда ЗЛП будут рассматриваться только в канонической форме.

Геометрический смысл ЗЛП

Определение1: Множество называется выпуклым, если с любыми двумя точками, принадлежащими этому множеству, ему принадлежит весь отрезок соединяющий эти точки.

Аналитическое определение: Множество G называется выпуклым, если для любых Каноническая форма задачи линейного программирования. - student2.ru и Каноническая форма задачи линейного программирования. - student2.ru Каноническая форма задачи линейного программирования. - student2.ru Каноническая форма задачи линейного программирования. - student2.ru , где Каноническая форма задачи линейного программирования. - student2.ru .

Пример выпуклого множества рис. 1.7.1, 1.7.2.

Рис. 1.7.1 Рис. 1.7.2 Рис. 1.7.3

Пример невыпуклого множества рис. 1.7.3.

Из всех приведенных выше примеров множеств следует, что допустимое множество ЗЛП выпукло.

Определение 2: Точка выпуклого множества называется крайней, если она не принадлежит внутренней области никакого отрезка ненулевой длины полностью лежащего в множестве.

Аналитическое определение: Точка Каноническая форма задачи линейного программирования. - student2.ru называется крайней точкой, если из того, что Каноническая форма задачи линейного программирования. - student2.ru , Каноническая форма задачи линейного программирования. - student2.ru и Каноническая форма задачи линейного программирования. - student2.ru , где Каноническая форма задачи линейного программирования. - student2.ru Каноническая форма задачи линейного программирования. - student2.ru Каноническая форма задачи линейного программирования. - student2.ru .

Как следует из определения, если множество является многогранником, то крайними точками являются вершины этого многогранника (см. рис. 1.7.1). Здесь множество крайних точек ограничено. Заметим, что число крайних точек может быть и бесконечным, если множество не является многогранником. Из рис. 1.7.2 видно, что крайними точками являются все точки окружности.

Рассмотрим ЗЛП в каноническом виде.

Каноническая форма задачи линейного программирования. - student2.ru (1.7.1)

Каноническая форма задачи линейного программирования. - student2.ru .

Утверждение 1. Допустимое множество G ЗЛП выпуклое.

Доказательство: Пусть Каноническая форма задачи линейного программирования. - student2.ru и Каноническая форма задачи линейного программирования. - student2.ru - это означает, что Каноническая форма задачи линейного программирования. - student2.ru , Каноническая форма задачи линейного программирования. - student2.ru и Каноническая форма задачи линейного программирования. - student2.ru , Каноническая форма задачи линейного программирования. - student2.ru . Возьмем Каноническая форма задачи линейного программирования. - student2.ru , где Каноническая форма задачи линейного программирования. - student2.ru . Так как Каноническая форма задачи линейного программирования. - student2.ru , Каноническая форма задачи линейного программирования. - student2.ru , Каноническая форма задачи линейного программирования. - student2.ru и Каноническая форма задачи линейного программирования. - student2.ru , то Каноническая форма задачи линейного программирования. - student2.ru . Теперь подставим Каноническая форма задачи линейного программирования. - student2.ru в левую часть уравнения (7), получим Каноническая форма задачи линейного программирования. - student2.ru , то есть Каноническая форма задачи линейного программирования. - student2.ru . Таким образом Каноническая форма задачи линейного программирования. - student2.ru , что и требовалось доказать.

Из рис. 1.4.1, 1.4.3 следует, что, если ЗЛП имеет решение, то всегда существует оптимальная крайняя точка. Таким образом, если задача имеет решение, то для его поиска достаточно перебрать только крайние точки.

Вновь рассмотрим ЗЛП в канонической форме

Каноническая форма задачи линейного программирования. - student2.ru (1.7.2)

Каноническая форма задачи линейного программирования. - student2.ru , где Каноническая форма задачи линейного программирования. - student2.ru , Каноническая форма задачи линейного программирования. - student2.ru .

Будем считать, что Каноническая форма задачи линейного программирования. - student2.ru , то есть матрица А имеет m линейно независимых столбцов. Допустимое решение Каноническая форма задачи линейного программирования. - student2.ru , Каноническая форма задачи линейного программирования. - student2.ru , называется базисным решением или опорным планом, если положительным значениям Каноническая форма задачи линейного программирования. - student2.ru , соответствуют линейно независимые столбцы матрицы А.

Базисное решение имеет не больше, чем m положительных компонент. Если число положительных компонент равно m, то решение называется невырожденным, и соответствующие столбцы матрицы А образуют базис в m-мерном пространстве. Если число положительных компонент меньше m, то решение называется вырожденным. Тогда, чтобы получить базис, к тем столбцам, которые соответствуют положительным компонентам, надо добавить столбцы с нулевыми компонентами.

Сформулируем без доказательства.

Утверждение 2: Каждому базисному решению ЗЛП соответствует крайняя точка выпуклого множества G. Каждой крайней точке выпуклого множества G соответствует базисное решение ЗЛП. Таким образом, если ЗЛП – разрешима, то для нахождения оптимального решения достаточно перебрать только базисные решения, число которых конечно и не превосходит Каноническая форма задачи линейного программирования. - student2.ru .

Рассмотрим сначала способ перестроения базисного решения системы Каноническая форма задачи линейного программирования. - student2.ru без условия неотрицательности.

Пусть матрица А имеет вид

Каноническая форма задачи линейного программирования. - student2.ru ,

где Е – единичная матрица.

Обозначим через Каноническая форма задачи линейного программирования. - student2.ru множество номеров единичных столбцов матрицы А и через Каноническая форма задачи линейного программирования. - student2.ru множество остальных номеров столбцов. Вектор X представим в виде Каноническая форма задачи линейного программирования. - student2.ru , где Каноническая форма задачи линейного программирования. - student2.ru и Каноническая форма задачи линейного программирования. - student2.ru Вектор Каноническая форма задачи линейного программирования. - student2.ru представим в виде Каноническая форма задачи линейного программирования. - student2.ru . Тогда система примет вид

Каноническая форма задачи линейного программирования. - student2.ru .

Если положить Каноническая форма задачи линейного программирования. - student2.ru , то получим базисное решение Каноническая форма задачи линейного программирования. - student2.ru .

Будем получать новое базисное решение, заменяя один из базисных столбцов на столбец ранее принадлежащий Каноническая форма задачи линейного программирования. - student2.ru . Это можно сделать с помощью алгоритма Жордана-Гаусса.

Пусть выбрано Каноническая форма задачи линейного программирования. - student2.ru (номер столбца, который будет вводиться в базис) и Каноническая форма задачи линейного программирования. - student2.ru - направляющий элемент.

· Шаг 1: l-строка делится на направляющий элемент.

· В новой итерации эта строка будет иметь номер k.

· Каноническая форма задачи линейного программирования. - student2.ru ,

· Каноническая форма задачи линейного программирования. - student2.ru ,

· Каноническая форма задачи линейного программирования. - student2.ru .

Шаг 2: Для Каноническая форма задачи линейного программирования. - student2.ru

Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru .

Шаг 3: Каноническая форма задачи линейного программирования. - student2.ru ,

Каноническая форма задачи линейного программирования. - student2.ru .

Наши рекомендации