Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
151
Добавлен:
10.12.2013
Размер:
1.07 Mб
Скачать

Пример 7.1. Выведем условие отсечения для задачи

L=2x1+x2 max;

15x1+30x2 96;

xj 0, int.

Приводим неравенство к каноническому виду

15x1+30x2+ x3=96

и решаем непрерывную задачу симплекс-методом. Получаем оптимальную симплекс-таблицу

Базис

А0

А1

А2

А3

А1

1

2

0

3

Графическое решение показано на рис. 7.4.

Записываем уравнение (7.3) по переменной x1:

x1+2x2+ x3=.

Дробную часть кроме свободного члена имеет только коэффициент при x3. Следуя (7.7), получаем условие отсечения

x3 или x3 6.

Очевидно, что в оптимальном решении НЗ оно не выполняется (х3*=0). Условие отсечения можно записать и через основные переменные. Так как х3=96-15х1-30х2, то 96-15х1-30х2 6 и окончательно имеем х1+2х2 6. Граница по этому ограничению показана на рис. 7.4 пунктирной линией. Легко убедиться, что все вершины усеченного множества целочисленные. ▲

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

Перед добавлением условие отсечения приводится к равенству:

. (7.8)

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

Таким образом, согласно 1-му алгоритму Гомори необходимо выполнить следующие действия.

  1. Преобразовать условия задачи так, чтобы все коэффициенты стали целыми.

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

  3. Проверить решение на целочисленность: если решение целочисленное, то зафиксировать получение оптимального решения и перейти на 9.

  4. Если не все переменные целые, то из оптимальной таблицы выбрать переменную с наибольшей дробной частью.

  5. Выписать из симплекс-таблицы строку с выбранной базисной переменной.

  6. Выделить дробные части коэффициентов в полученном уравнении и записать условие отсечения согласно (7.7).

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

  8. Решить расширенную задачу двойственным симплекс-методом. Если задача разрешима, перейти на 3. Иначе зафиксировать неразрешимость целочисленной задачи.

  9. Конец.

Гомори доказал сходимость этого алгоритма.

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

Пример 7.2. Применим приведенный алгоритм к задаче

L=2x1+x2max;

2x1+x2  7,5;

12x1+7x2 55;

5x1+2x2+х5 18;

Соседние файлы в папке Лекции по Гольду