4.2 Решение методом Гомори.
Одним из методов решения задач линейного целочисленного программирования является метод Гомори. Сущность метода заключается в построении ограничений, отсекающих нецелочисленные решения задачи линейного программирования, но не отсекающих ни одного целочисленного плана [5].
Рассмотрим алгоритм решения задачи линейного целочисленного программирования этим методом.
-
Решаем задачу симплексным методом без учета условия целочисленности. Если все компоненты оптимального плана целые, то он является оптимальным и для задачи целочисленного программирования. Если обнаруживается неразрешимость задачи, то и неразрешима задача целочисленного программирования.
-
Если среди компонент оптимального решения есть нецелые, то к ограничениям задачи добавляем новое ограничение, обладающее следующими свойствами:
- оно должно быть линейным;
- должно отсекать найденный оптимальный нецелочисленный план;
- не должно отсекать ни одного целочисленного плана.
Для удобного представление решения используется программа для работы с электронными таблицами MS Excel.
Для построения первого опорного плана систему неравенств приведем к системе уравнений путем введения дополнительных переменных (переход к канонической форме).
Определим минимальное значение целевой функции
при следующих условиях-ограничений:
Введем искусственные переменные x: в 1-м равенстве вводим переменную x4; в 2-м равенстве вводим переменную x5;
Для постановки задачи на минимум целевую функцию запишем так:
За использование искусственных переменных, вводимых в целевую функцию, накладывается так называемый штраф величиной М, очень большое положительное число, которое обычно не задается.
Полученный базис называется искусственным, а метод решения называется методом искусственного базиса.
Причем искусственные переменные не имеют отношения к содержанию поставленной задачи, однако они позволяют построить стартовую точку, а процесс оптимизации вынуждает эти переменные принимать нулевые значения и обеспечить допустимость оптимального решения.
Из уравнений выражаем искусственные переменные:
которые подставим в целевую функцию:
Матрица коэффициентов A = a(ij) этой системы уравнений имеет вид:
Базисные переменные это переменные, которые входят только в одно уравнение системы ограничений и притом с единичным коэффициентом.
Экономический смысл дополнительных переменных: дополнительные перемены задачи ЛП обозначают излишки сырья, времени, других ресурсов, остающихся в производстве данного оптимального плана.
Решим систему уравнений относительно базисных переменных: x4, x5
Полагая, что свободные переменные равны 0, получим первый опорный план:
X1 = (0,0,0,30,6)
Базисное решение называется допустимым, если оно неотрицательно.
Переходим к основному алгоритму симплекс-метода.
Проводим итерацию №0 для проверки критерия оптимальности.
Проверка критерия оптимальности.
Текущий опорный план не оптимален, так как в индексной строке находятся положительные коэффициенты.
Определение новой базисной переменной.
В качестве ведущего выберем столбец, соответствующий переменной x3, так как это наибольший коэффициент.
Определение новой свободной переменной.
Вычислим значения Di по строкам как частное от деления: bi / ai3
и из них выберем наименьшее:
min (30 : 6 , 6 : 1 ) = 5
Следовательно, 1-ая строка является ведущей.
Разрешающий элемент равен (6) и находится на пересечении ведущего столбца и ведущей строки (Таблица 6).
Таблица 6 – Симплекс-таблица с выделенным разрешающим элементом
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x4 |
30 |
5 |
4 |
6 |
1 |
0 |
x5 |
6 |
1 |
1 |
1 |
0 |
1 |
F(X1) |
36M |
-3+6M |
-4+5M |
-2+7M |
0 |
0 |
Формируем следующую часть симплексной таблицы.
Вместо переменной x4 в план 1 войдет переменная x3.
Строка, соответствующая переменной x3 в плане 1, получена в результате деления всех элементов строки x4 плана 0 на разрешающий элемент 6
На месте разрешающего элемента в плане 1 получаем 1.
В остальных клетках столбца x3 плана 1 записываем нули.
Таким образом, в новом плане 1 заполнены строка x3 и столбец x3.
Все остальные элементы нового плана 1, включая элементы индексной строки, определяются по правилу прямоугольника.
Для этого выбираем из старого плана четыре числа, которые расположены в вершинах прямоугольника и всегда включают разрешающий элемент.
Проводим пересчет симплекс-таблицу по разрешающему элементу (Таблица 7).
Таблица 7 – Симплекс-таблица после совершения итерации №0
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x3 |
5 |
5/6 |
2/3 |
1 |
1/6 |
0 |
x5 |
1 |
1/6 |
1/3 |
0 |
-1/6 |
1 |
F(X1) |
10+M |
-11/3+M |
-22/3+M |
0 |
1/3-11/6M |
0 |
Проводим итерацию №1 для проверки критерия оптимальности.
Текущий опорный план не оптимален, так как в индексной строке находятся положительные коэффициенты.
Определение новой базисной переменной.
В качестве ведущего выберем столбец, соответствующий переменной x2, так как это наибольший коэффициент.
Определение новой свободной переменной.
Вычислим значения Di по строкам как частное от деления: bi / ai2
и из них выберем наименьшее:
min (5 : 2/3 , 1 : 1/3 ) = 3
Следовательно, 2-ая строка является ведущей.
Разрешающий элемент равен (1/3) и находится на пересечении ведущего столбца и ведущей строки. (Таблица 8)
Таблица 8 – Симплекс-таблица с выделенным разрешающим элементом
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x3 |
5 |
5/6 |
2/3 |
1 |
1/6 |
0 |
x5 |
1 |
1/6 |
1/3 |
0 |
-1/6 |
1 |
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
F(X2) |
10+M |
-11/3+M |
-22/3+M |
0 |
1/3-11/6M |
0 |
Пересчет симплекс-таблицы.
Формируем следующую часть симплексной таблицы.
Вместо переменной x5 в план 2 войдет переменная x2.
Строка, соответствующая переменной x2 в плане 2, получена в результате деления всех элементов строки x5 плана 1 на разрешающий элемент 1/3
На месте разрешающего элемента в плане 2 получаем 1.
В остальных клетках столбца x2 плана 2 записываем нули.
Таким образом, в новом плане 2 заполнены строка x2 и столбец x2.
Все остальные элементы нового плана 2, включая элементы индексной строки, определяются по правилу прямоугольника.
Получаем новую симплекс-таблицу:
Таблица 9 – Симплекс-таблица после совершения итерации №1
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x3 |
3 |
1/2 |
0 |
1 |
1/2 |
-2 |
x2 |
3 |
1/2 |
1 |
0 |
-1/2 |
3 |
F(X2) |
18 |
0 |
0 |
0 |
-1-M |
8-M |
Проверка критерия оптимальности.
Среди значений индексной строки нет положительных. Поэтому эта таблица определяет оптимальный план задачи.
Окончательный вариант симплекс-таблицы:
Базис |
B |
x1 |
x2 |
x3 |
x4 |
x5 |
x3 |
3 |
1/2 |
0 |
1 |
1/2 |
-2 |
x2 |
3 |
1/2 |
1 |
0 |
-1/2 |
3 |
F(X2) |
18 |
0 |
0 |
0 |
-1-M |
8-M |
Так как в оптимальном решении отсутствуют искусственные переменные (они равны нулю), то данное решение является допустимым.
Оптимальный план можно записать так:
Решение получилось целочисленным. Нет необходимости применять метод Гомори.
Оптимальный целочисленный план можно записать так: