Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие ПП (введение главы 1 и 2).doc
Скачиваний:
18
Добавлен:
09.04.2015
Размер:
3.49 Mб
Скачать

2.2. Симплекс-метод

Название «симплекс-метод» связано с тем, что он впервые разрабатывался применительно к задачам линейного программирования, в которых допустимое множество представляло собой симплекс:

Другое название симплекс-метода – метод последовательного улучшения плана.

Рассмотрим каноническую задачу линейного программирования:

(2.2.1)

Допустимое множество задачи (2.2.1) может быть задано выражением:

. (2.2.2)

Столбцы матрицы размерностиобразуют-мерные векторы

,…,,…,;(2.2.3)

Условие в (2.2.1),, означает, чтоРас-

смотрим множество

, (2.2.4)

т.е. множество, состоящее из индексов при положительных координатах вектора . Тогда

.

Напомним, что векторовлинейно независимы, если изследует. Теперь введем понятие опорной точки.

Точка называется опорной точкой в задаче (2.2.1), если векторылинейно независимы.

Справедливы следующие утверждения:

1) если в задаче (2.2.1) множество не пусто, то оно имеет опорные точки и число их конечно;

2) если множество решений задачи (2.2.1) не пусто, то оно содержит хотя бы одну опорную точку из множества .

Пример 2.2.1. Найти опорные точки и решение задачи:

Здесь , , ,

Линейно независимым совокупностям столбцов матрицы соответствуют следующие наборы индексов:,,,,,,,,,. Для каждого из этих наборов будем решать систему уравнений

(2.2.5)

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

Рассмотрим набор . В этом случае система (2.2.5) имеет вид:

– решений нет.

Такой же результат дает рассмотрение наборов . Это означает, что ни один из столбцов матрицыне коллинеарен вектору. Рассмотрим набор. В этом случае система (2.2.5) может быть записана в виде:

и имеет решение

Оба значения в решении положительны. Формируем опорную точку: Находим значение целевой функции в опорной точке:. Наборусоответствует система

Ее решение содержит отрицательное значение, поэтому опорную точку в данном случае сформировать невозможно. Перейдем к рассмотрению набора. Система уравнений типа (2.2.5) в этом случае имеет вид:

Ее решение позволяет сформировать опорную точку, в которойДействуя аналогичным образом, для оставшихся наборов получаем следующие результаты:

–дает опорную точку , в которой;

–не позволяет сформировать опорную точку, так как решение системы уравнений содержит отрицательное значение;

–дает опорную точку , в которой

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

Следует отметить, что метод перебора, использованный в рассмотренном примере, на практике неприменим из-за недопустимо больших затрат времени на полный перебор в реальных задачах. Это подтверждает следующий оценочный расчет.

Пусть любые векторов извекторов (2.2.3) линейно независимы. Тогда число случаев, которые необходимо рассмотреть при фиксированном, составит

(2.2.6)

В рассмотренном выше примере 2.2.1 Для вычисления факториалапри больших значенияхможно воспользоваться приближенным выражением, полученным из формулы Стирлинга:

Тогда, считая значения итакже большими, из (2.2.6) получим:

.

Например, при получим

Для решения системы линейных уравнений требуется выполнить приблизительнопростейших арифметических операций. Тогда суммарное число операций для решениясистем уравнений составит

.

Операции, необходимые для проверки решений систем на положительность, учитывать не будем. При ,из последнего выражения получаем. Пусть быстродействие вычислителя составляетопераций в секунду. Тогда приближенное значение времени, требуемого на вычисления, составитс или примерно 300 лет.

В симплекс-методе предусмотрен направленный перебор опорных точек, при котором значение целевой функции в каждой очередной опорной точке строго больше, чем в предыдущей. Общее количество таких шагов при решении практических задач обычно составляет от до

Опорная точка (см. (2.2.2)) называется невырожденной, если

(2.2.7)

(мощность множества равна). Если в задаче линейного программирования (2.2.1) все опорные точки невырождены, то задача называется невырожденной. Симплекс-метод будем рассматривать применительно к невырожденным задачам. Вырожденная задача может быть сведена к невырожденной путем алгебраических преобразований.

Пусть – очередная опорная точка, рассчитываемая в соответствии с алгоритмом работы симплекс-метода. Возможен один из трех вариантов:

1) является решением задачи (2.2.1);

2) задача (2.2.1) не имеет решений;

3) рассчитывается следующая опорная точка , причем

>

Вопрос об отыскании начальной опорной точки будет рассмотрен позже. Будем полагать, что получено значениеи раскроем условия реализации и содержание каждого из трех перечисленных выше вариантов.

Поскольку – опорная точка и задача невырождена, столбцылинейно независимы и выполнено (2.2.7). Столбцыобразуют базис в. Разложение произвольного векторапо базисуимеет вид:

, (2.2.8)

где – коэффициенты разложения.

Введем в рассмотрение величину

(2.2.9)

Здесь – координаты вектораиз целевой функции рассматриваемой задачи (2.2.1);– коэффициенты из (2.2.8).

Если , то

(2.2.10)

(2.2.11)

Теорема 2.2.1 (правило оптимальности).

Если то– решение задачи (2.2.1).

Доказательство. Используя (2.2.1), (2.2.3) и (2.2.4), запишем:

(2.2.12)

Последняя сумма в (2.2.12) не содержит нулевых слагаемых. Рассмотрим произвольную точку , где– допустимое множество задачи (2.2.1), определяемое согласно (2.2.2). Эта точка удовлетворяет уравнению

, (2.2.13)

правую часть которого преобразуем следующим образом:

Сравнивая полученное выражение с (2.2.12) и учитывая, что точку можно разложить по базису единственным образом, приходим к выводу о справедливости равенства

(2.2.14)

Подчеркнем, что (2.2.14) справедливо Найдем значение целевой функции в точке:

(2.2.15)

Из условия теоремы, а также из (2.2.9) и (2.2.11) следует:

Подстановка правой части последнего неравенства в (2.2.15) вместо приводит к неравенству

В процессе преобразований использовано выражение (2.2.14). Таким образом, . Следовательно,– решение задачи (2.2.1). Теорема доказана.

Допустим, что условие теоремы 2.2.1 не выполнено, т.е. . По аналогии с (2.2.8) имеем

(2.2.16)

Используя (2.2.16), запишем:

, (2.2.17)

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

(2.2.18)

Используя (2.2.18), преобразуем выражение (2.2.17):

(2.2.19)

Найдем значение целевой функции в точке :

(2.2.20)

Теорема 2.2.2 (правило отсутствия решения у задачи).

Если и если, то задача (2.2.1) не имеет решения.

Доказательство. Рассмотрим вектор ,, определенный в соответствии с (2.2.18);, так как,и. Кроме того, согласно (2.2.19),. Таким образом,. Из (2.2.20) следует, что

(2.2.21)

Если задать последовательность значений в виде, то, т.е. все точки будут принадлежать допустимому множеству (2.2.2) задачи, при этом в соответствии с (2.2.21) значения целевой функции будут стремиться к бесконечности:

,

т.е. максимум не достигается и, следовательно, задача не имеет решения. Теорема доказана.

Теорема 2.2.3.

Если и, то в невырожденной задаче (2.2.1) с помощью симплекс-метода можно осуществить переход от опорной точки, не являющейся решением задачи, к другой опорной точке со строгим увеличением значения целевой функции

Доказательство. Введем величину , которую определим следующим образом:

(2.2.22)

Отметим, что в силу (2.2.22) и (2.2.4). Подстановкав (2.2.18)

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

Очевидно, что (2.2.19) выполнено. Осталось показать, что . Это следует из (2.2.18) с учетом того, что, а также

Итак, при переходе к очередной опорной точке ее координаты определяются в соответствии с (2.2.18), где в качестве величины используется значение (2.2.22). В этом случае выражение (2.2.18) можно записать в более подробном виде:

(2.2.23)

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

(2.2.24)

Согласно (2.2.8), . Отсюда находим:

(2.2.25)

Подставив это выражение в (2.2.24), получим:

, (2.2.26)

где .

Итак, в соответствии с (2.2.26), произвольный вектор выражен через. Следовательно, множество векторовобразует базис в пространствеи, таким образом, векторылинейно независимы. Отсюда следует, что точка, координаты которой определяются в соответствии с (2.2.23), является опорной, причем. Теорема доказана.

После определения новой опорной точки и множестваформулы (2.2.8) и (2.2.9) приобретают вид:

(2.2.27)

Способ вычисления коэффициентов разложения по базису , а также значенияустанавливает следующая теорема.

Теорема 2.2.4 (связь между параметрами итераций).

справедливы соотношения:

(2.2.28)

(2.2.29)

Доказательство. Используя соотношения (2.2.8) и (2.2.25), выполним следующие преобразования:

(2.2.30)

где

Таким образом, справедливость соотношений (2.2.28) доказана, причем их единственность следует из единственности разложения (2.2.30) вектора по базису.

Перейдем к доказательству соотношения (2.2.29). Запишем:

(2.2.31)

где в соответствии с (2.2.9). Используя полученный результат (2.2.31), а также формулу (2.2.9), преобразуем второе выражение в (2.2.27):

Таким образом, подтверждена справедливость формулы (2.2.29). Теорема

доказана.

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

Пример 2.2.2

Здесь

Первую опорную точку найдем с помощью метода, использованного в примере 2.2.1. Набору соответствует линейно независимая совокупность столбцов. В этом случае система (2.2.5) имеет вид:

Ее решение позволяет сформировать опорную точку, при этом. Очевидно, что найденная опорная точка является невырожденной. На первом шаге (первой итерации) решения рассматриваемой задачи симплекс-таблица должна быть заполнена значениями величин, представленных в табл. 2.2.1. Сами значения показаны в соответствующих ячейках табл. 2.2.1а и получены следующим образом.

Таблица 2.2.1 Таблица 2.2.1а

1

0

-3

-3

1

0

1

1

2

1

0

0

-7

-4

-2


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

Аналогично для коэффициентов разложения вектора , также входящего в базис (), получаем,. В соответствии с (2.2.11). Коэффициенты,находим из системы:

По формуле (2.2.9) вычислим значение :

Определяем значения коэффициентов и:

Находим значение :

Значение целевой функции в рассматриваемой опорной точке :

Анализ табл. 2.2.1а показывает, что выполнены условия теоремы 2.2.3. Для выполнения следующей итерации определим, используя выражение (2.2.22), значения величины и индекса. В таблице имеется два отрицательных значения:и. Можно выбрать любое из них. Выберем, соответственно. В результате просмотра столбца табл. 2.2.1а от значениявверх находим единственное положительное значение. Поэтому в данном случае при определении минимума в (2.2.22) нет альтернативы, следовательно:

и

Используя (2.2.23), определим координаты следующей опорной точки:

; ;;. Таким образом,. В соответствии с теоремой 2.2.3,. Следовательно,. На данном шаге симплекс-таблица должна быть заполнена значениями величин, представленных в табл. 2.2.2; сами значения приведены в табл. 2.2.2а. Значения в табл. 2.2.2а получены следующим образом. Зна-

Таблица 2.2.2 Таблица 2.2.2а

1

3

0

3

4

0

1

1

2

1

0

7

0

10

5


чения иуже определены. Коэффициенты разложения векторовипо базису, который из них и состоит, можно определить сразу:;. Соответственно. Разумеется, такие же результаты для этих величин дает применение формул (2.2.28) и (2.2.29), по которым также рассчитаны значения 2-го и 4-го столбцов таблицы:

Значение целевой функции Посколькуи, выполнены условия теоремы 2.2.1 и, следовательно, точкаявляется решением задачи.

Работая с симплекс-таблицей, можно сократить объем вычислений. Заполнить строку новой таблицы – это значит получить вектор вида

или вида При получении вектора первого вида значениярассчитываются в соответствии с (2.2.28):

при , где,;при.

Используя (2.2.23), получаем, что при . При. Поэтому приследует из строкивычесть строку, умноженную на некоторое число (), такое, чтобы на-м месте новой строки получился нуль. Приследует разделить строкуна некоторое число (), такое, чтобы на-м месте новой строки получить единицу. При получении вектора второго вида (последней строки новой таблицы) воспользуемся формулой (2.2.29), которую запишем в виде:

, где .

Для вычисления значения целевой функции используем формулу (2.2.21), преобразовав ее следующим образом:

.

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

Пример 2.2.3

Здесь

Для отыскания первой опорной точки рассмотрим набор , которому соответствует линейно независимая совокупность столбцов,. В этом случае система (2.2.5) записывается в виде:

Полученное решение позволяет сформировать опорную точку , при этом. Найденная опорная точка является невырожденной. На первом шаге решения данной задачи симплекс-таблица должна быть заполнена значениями величин, представленных в табл. 2.2.3. Сами значения приведены в соответствующих ячейках таблицы 2.2.3а и получены следующим образом.

Таблица 2.2.3 Таблица 2.2.3а

1

-1

1

0

1

2

1

0

1

3

-4

-3

0

0

-2

Коэффициенты разложения векторов по базису, который из них состоит, записываем сразу:;. В соответствии с (2.2.11). Коэффициентынаходим из системы:

Используя формулу (2.2.9), найдем значение :

Получим значения :

Находим значение :

Значение целевой функции в рассматриваемой опорной точке :.

Из анализа табл. 2.2.3а следует, что выполнены условия теоремы 2.2.3. В таблице имеется два отрицательных значения :и. Выберем, тогда. В результате просмотра столбца табл. 2.2.3а от значениявверх находим два положительных значения:и. Затем, используя (2.2.22), определяем значение индекса:

Таким образом, используемый на следующей итерации новый базис формируется из старого путем замены столбца (так как) столбцом(так как). При этом в новой симплекс-таблице будут представлены коэффициенты разложения векторов() по новому базису. Состав новой симплекс-таблицы отражает табл. 2.2.4, а значения входящих в нее величин – табл. 2.2.4.а. Значения величин в табл. 2.2.4а получены следующим образом.

Таблица 2.2.4 Таблица 2.2.4а

1

-1

1

0

1

0

3

-2

1

1

0

-7

4

0

2


Поскольку , а, первую строку табл. 2.2.4а получаем путем деления первой строки табл. 2.2.3а на число, которое обеспечит получение единицы на-м, т.е. на первом месте новой строки. Это число равно единице, поэтому в данном случае первые строки таблиц 2.2.3а и 2.2.4а совпадают. Вторая строка табл. 2.2.4а получена путем вычитания из второй строки табл. 2.2.3а ее первой строки, умноженной на такое число, которое обеспечивает получение нуля на-м, т.е. на первом месте новой строки. Легко убедиться в том, что это число равно 2. Третья строка табл. 2.2.4а получена путем вычитания из третьей строки табл. 2.2.3а ее первой строки, умноженной на такое число, которое обеспечивает получение нуля на-м, т.е. на первом месте третьей строки новой таблицы. Это число равно –4. Опорная точка, полученная на данной итерации:.

Анализ полученной табл. 2.2.4а показывает, что условия теоремы 2.2.3 выполнены и поэтому возможна очередная итерация. В последней строке таблицы имеется одно отрицательное значение :. Поэтому. В результате просмотра столбца таблицы от значениявверх находим одно положительное значение:. Следовательно,. Поэтому очередной новый базис формируется из предыдущего путем замены столбца(так как) столбцом(так как).

Состав величин, характеризующий содержание очередной симплекс-таблицы, отражает табл. 2.2.5. Значения этих величин, представленные в табл. 2.2.5.а, получены следующим образом. Поскольку , а, первая строка табл. 2.2.5а получена путем вычитания из первой строки табл. 2.2.4а ее второй строки, умноженной на такое число, которое обеспечивает получение нуля на-м, т.е. на втором месте новой строки. Это число равно. Вторая строка табл. 2.2.5а получена в результате деления второй строки табл. 2.2.4а на число, обеспечивающее получение единицы на-м, т.е. на втором месте новой строки. Это число равно. Наконец, третья строка табл. 2.2.5а получена путем вычитания из третьей строки табл. 2.2.4а ее второй строки, умноженной на число, при котором обеспечивается получение нуля на-м, т.е. втором месте новой строки. Требуемый результат получается при использовании числа. Опорная точка, по лученная на данной итерации:.

Таблица 2.2.5 Таблица 2.2.5а

1

0

0

1

-

0

0

-


Анализ табл. 2.2.5а показывает, что условия теоремы 2.2.3 вновь выполнены. В последней строке таблицы имеется одно отрицательное значение :. Следовательно,. В результате просмотра столбца таблицы от значениявверх находим одно положительное значение:. Поэтому. Очередной базис формируется из предыдущего путем замены столбца(так как) столбцом(так как). Очередная симплекс-таблица содержит величины, представленные в табл. 2.2.6. Значения этих величин приведены в табл. 2.2.6а и получены следующим образом. Так как, а, первая строка табл. 2.2.6а получена путем деления первой строки табл. 2.2.5а на число, которое обеспечивает значение, равное единице, на-м, т.е. третьем месте новой строки. Это число равно

Таблица 2.2.6 Таблица 2.2.6а

3

0

1

1

4

2

1

0

1

3

2

0

0

3

7


. Вторая строка табл. 2.2.6а сформирована в результате вычитания из второй строки табл. 2.2.5а ее первой строки, умноженной на число, при котором на -м, т.е. третьем месте в новой строке получился нуль. Это число равно. Третья строка табл. 2.2.6а получена путем вычитания из третьей строки табл. 2.2.5а ее первой строки, умноженной на число, обеспечивающее на-м, т.е. третьем месте новой строки значение, равное нулю. Такой результат достигается при использовании числа. Опорная точка, полученная на данной итерации:.

Анализ табл. 2.2.6а показывает, что выполнены условия теоремы 2.2.1. Следовательно, точка является решением задачи. Значение целевой функции в этой точке равно 7.

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

Рассмотрим в качестве исходной стандартную задачу линейного программирования и сведем ее к канонической задаче:

(2.2.32)

Рассмотрим случай, когда . Как и прежде, будем полагать, что матрицаимеет размерность. Допустимое множество канонической задачи в (2.2.32) можно представить в виде:

где – единичная матрица размерности,– ее столбцы;

–матрица, составленная из матриц и;

–вектор, составленный из векторов и.

Поскольку векторы образуют множество линейно независимых векторов и(т.е.,), ясно, что точкаявляется опорной точкой рассматриваемой канонической задачи. Итак, в приведенном частном случае, когда стандартную задачу присводим к канонической, опорная точка находится практически сразу. Теперь рассмотрим общий случай.

Дана каноническая задача линейного программирования:

(2.2.33)

Без ограничения общности в задаче (2.2.33) считаем . Воспользуемся так называемым методом искусственного базиса. Введем в рассмотрение вектори сформулируем задачу линейного программирования:

(2.2.34)

Здесь матрица и векторте же, что и в задаче (2.2.33). На основании рассмотренного выше частного случая, связанного с задачей (2.2.32), заключаем, чтоесть опорная точка задачи (2.2.34). Из этой точки начинаем счет симплекс-методом и получаем решениерассматриваемой задачи (2.2.34). Поскольку

возможны два случая.

Первый случай.

столбцы линейно независимы при. Значит,– опорная точка исходной задачи (2.2.33).

Второй случай.

. В этом случае задача (2.2.33) не имеет допустимых решений, т.е. . Докажем это. Предположим, чтои рассмотрим точку. Сформируем точку. Она будет удовлетворять ограничениям задачи (2.2.34) тогда и только тогда, когда, т.е. когда, а это противоречит условию. Следовательно, в рассматриваемом случае задача (2.2.33) не имеет решений.