Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦП.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
398.34 Кб
Скачать

6.2 Метод Гомори (алгоритм отсечения)

  1. Решается исходная задача до получения оптимального решения.

  2. Если решение целочисленное, то процесс заканчивается. Иначе – переход к пункту 3.

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

  4. Добавление данного сечения к условиям оптимального решения образует расширенную (порождённую) задачу, после чего – возврат к пункту 1.

Если в процессе решения в симплекс-таблице появится строка с нецелым свободным членом и целыми коэффициентами, то соответствующее уравнение не имеет решения в целых числах, следовательно, и исходная задача в целых числах не решается.

Предположим, что на некоторой итерации текущее оптимальное решение получено с помощью симплексного алгоритма. Допустим, что – базисная переменная в i-й строке на последней итерации. Тогда: (18)

где b имеет дробное значение, следовательно, не удовлетворяет условиям целочисленности, тогда на шаге 3 ограничение записывается в следующем виде:

(отсечение) (19)

где - дробная часть , а - дробная часть b.

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

Теоретически доказано, что алгоритм Гомори сходится к оптимуму за конечное число итераций, однако он не гарантирует получения допустимого целочисленного решения до самой последней итерации.

7. Метод Гомори может быть распространен на решение частично-целочисленных задач. В данном случае используется обычный симплекс-метод. Различие между решением полностью и частично-целочисленных задач состоит в способе построения ограничений.

Ограничения для частично-целочисленных задач формируются в виде :

- дробная часть свободного элемента базисной переменной

  • к оэффициент, рассчитываемый для небазисных переменных по правилам

Определяем для xj , не подчиненных требованию целочисленности.

П о (**) считаем ij для xj подчиненным требованием целочисленности.

8. Метод ветвей и границ.

В общей постановке позволяет решать как полностью, так и частично целочисленные задачи.

Пусть задача имеет вид :

(1)

(2)

(4)

(3)

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

(5)

Для задачи ЦП определить границы изменений можно следующим образом :

lj=0

Для определения Uj решают задачу ЛП следующего вида:

Обобщение lj=0 не приводит к потере общности задачи.

Пусть есть переменная xj, пусть xj* - целое число, которое удовлетворяет ограничению:

lj<xj*<Uj-1

Тогда оптимальное решение задачи вида (1)-(5) будет удовлетворять ограничениям вида :

(6)

(7)

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

Алгоритм :

Обозначим каждую из выполняемых итераций t. Предположим, что для каждой итерации имеется нижняя граница ЦФ (Yt). На практике полагают, что значение Y1 либо строго меньше, либо равно оптимальному значению ЦФ решения задачи.

Если о ЦФ ничего не известно, то можно предположить, что Y1= -.

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

На 1 итерации есть 1 задача, которая описывается выражениями (1), (2), (3), (4), (5), а на произвольной итерации t выполняются следующие шаги :

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

  2. Решить выбранную задачу. Если она не имеет допустимого решения, или если получается значение ЦФ < или = Yt, то принять Yt+1=Yt и перейти к шагу 1. В противном случае к шагу 3.

  3. Если полученное оптимальное решение задачи ЛП удовлетворяет целочисленным ограничениям, то зафиксировать его, приняв Yt+1 = соответствующему значению ЦФ и вернуться к шагу1. В противном случае перейти к шагу 4.

  4. Выбрать любую переменную xj, где , не имеющую целого значения в полученном оптимальном решении выбранной задачи ЛП.

Пусть bj соответствует этому значению, а [bj]- целая часть bj

Добавить 2 задачи ЛП в основной список : эти 2 задачи идентичны задачам на шаге1, но в одной из них нижняя граница xj заменяется на значение ([bj]+1), а в другой верхняя граница заменяется на [bj].

Принять Yt+1=Yt и вернуться к шагу1.

При остановке алгоритма в случае когда фиксируется допустимое решение, дающее Yt, то это решение оптимально, в противном случае этого решения не существует.

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

По этой причине этот метод называют приближенно двойственным.