Смекни!
smekni.com

Математические методы исследования операций в экономике (стр. 27 из 37)

Данному преобразованию условий задачи будет соответ­ствовать преобразование симплекс-таблицы, показанное на рис. 4.2. На нем по соображениям обеспечения наглядности ис­пользованы обозначения (4.17) и предполагается, что текущий базис β(q) состоит из первых m столбцов.

Индексi соответствует выбранной для формирования отсе­чения строке симплекс-таблицы, содержащей нецелочисленное значение bi(q)).

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

совместно с добавленным столбцом

образуют сопряженный (двойственно допустимый) базис для сформированной задачи, а (ά1, ..., άm,-{άi}) являются ненуле­выми компонентами соответствующего псевдоплана. Исходя из этого, приходим к тому, что для решения вновь получен­ной задачи может быть эффективно применена процедура двойственного симплекс-метода (см. параграф 1.7).

Поскольку в начальном псевдоплане имеется только одна от­рицательная компонента (-{άi}), то из базиса должен быть вы­веден соответствующий ей вектор аn+1 . Далее, следуя рекомен­дациям алгоритма двойственного симплекс-метода, находим оптимальный план. Если он не является целочисленным, то опи­санные действия итеративно повторяются.

Если в ходе решения дополнительная переменная хn+1 вновь становится базисной, ее значение оказывается безразличным для основных переменных. Поэтому строку и столбец, отвеча­ющие ей, вычеркивают. С геометрической точки зрения это можно обосновать так: если псевдоплан оказывается внутри полупространства хn+1 ≥0, то дополнительное ограничение, оп­ределяемое гиперплоскостью хn+1=0, становится несущест­венным и опускается.

4.2.2. Описание алгоритма. Приведем обобщенную схе­му алгоритма Гомори. Структурно он делится на так называе­мые большие итерации. Каждая большая итерация содержит этапы:

1. Решение «текущей» задачи методами линейного програм­мирования (малые итерации). На первой итерации в качестве «текущей» задачи выступает нецелочисленный аналог исходной ЦЗЛП.

2. Определение первой нецелочисленной компоненты в оп­тимальном плане, полученном на этапе 1. Если все компоненты являются целочисленными, то алгоритм завершается.

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

Двойственный симплекс-метод является основой для метода Гомори, так как он позволяет учитывать новые дополнитель­ные ограничения (правильные отсечения) и переходить от те­кущего псевдоплана к новому оптимальному плану.

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

В качестве существенного замечания по поводу метода Гомори следует добавить, что при его практической реализации на ЭВМ следует считаться с ошибками округления, т, к. в усло­виях машинной арифметики практически ни один план не будет целочисленным. Кроме того, накапливающиеся погрешности могут внести возмущения в алгоритм и «увести» от оптимально­го целочисленного плана.

4.2.3. Пример решения ЦЗЛП методом Гомори. Рас­смотрим особенности применения метода Гомори на конкрет­ном примере. Пусть дана задача со следующими условиями:

Итерация 1. Используя обычный симплекс-алгоритм, реша­ем непрерывный аналог исходной задачи, в котором игнориру­ются условия целочисленности (4.28). В качестве исходного базиса можно взять первый и второй столбцы. На его основе заполняется таблица T(1,1) (первый индекс в обозначении табли­цы соответствует «большой» итерации, а второй — «малой»).

Как видно из строки оценок, данный базис является опти­мальным, однако соответствующий ему план х={11/5,17/5, 0)не является целочисленным, поэтому выбираем из таблицы T(1,1) строку, содержащую первый нецелый элемент, и согласно формуле (4.25) строим отсекающее ограничение:

после чего переходим к следующей «большой» итерации.

Итерация 2. С учетом сформированного отсекающего ог­раничения заполняем симплекс-таблицу T(2,1).

В соответствии с алгоритмом двойственного симплекс-мето­да переходим к следующему базису N(2,2))={1, 2, 3}.

План, достигнутый в таблицеT(2,2), является не только опти­мальным (b(2,2))>0), но и полностью состоит из целочислен­ных компонент, т. е. решение задачи найдено: х*=(1, 2,1) и f(x)=7.

4.3. МЕТОД ВЕТВЕЙ И ГРАНИЦ

4.3.1. Общая схема метода «ветвей и границ». Другим широко применяемым для решения задач дискретного програм­мирования методом является метод ветвей и границ. Впервые данный метод для решения ЦЗЛП предложили в 1960 г. Лэнг иДойг, а его «второе рождение» произошло в 1963г. в связи с выходом работы Литтла, Мурти, Суини и Кэрел, посвященной решению задачи о коммивояжере [33].

Вообще говоря, термин «метод ветвей и границ» является соби­рательным и включает в себе целое семейство методов, применяе­мых для решения как линейных, так и нелинейных дискретных задач, объединяемое общими принципами. Кратко изложим их.

Пусть стоит задача:

гдеD — конечное множество.

Алгоритм является итеративным, и на каждой итерации про­исходит работа с некоторым подмножеством множества D. На­зовем это подмножество текущим и будем обозначать его как D(q), гдеq — индекс итерации. Перед началом первой итерации в качестве текущего множества выбирается все множество D (D(1)=D),и для него некоторым способом вычисляется значе­ние верхней оценки для целевой функции maxf(x)≤ ξ( D(1)). Стандартная итерация алгоритма состоит из следующих этапов:

1°. Если можно указать планx(q)D(q), для которого f(x(q))≤ξ( D(q)), то x(q)=х* — решение задачи (4.29).

2°. Если такой план не найден, то область определенияD(q) некоторым образом разбивается на подмножества D1(q),D2(q), ..., Dlq(q), удовлетворяющие условиям:

Для каждого подмножества находятся оценки сверху (вер­хние границы) для целевой функции ξD1(q)D2(q), ..., ξDl1(q), уточняющие ранее полученную оценку ξD(q), то есть ξDi(q) ≤ ξD(q), i∊1:lq. Возможно одно из двух:

2.1. Если существует такой план х(q), что

то этот план оптимальный.

2.2. Если такой план не найден, то выбирается одно из мно­жеств Di(q),i∊1:lq (как правило, имеющее наибольшую оценку

Все имеющиеся к текущему моменту концевые подмножества, т. е. те подмножества, которые еще не подверглись процессу дробления, переобозначаются какD1(q+1),D2(q+1),...,Dl(q+1)(q+1),после чего процесс повторяется.

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

Конкретные реализации метода ветвей и границ связаны с правилами разбиения на подмножества (правилами ветвления) и построения оценок значений целевых функций на данных под­множествах (границ).

4.3.2. Решение ЦЗЛП методом ветвей и границ. Рас­смотрим применение алгоритма метода ветвей и границ для решения ЦЗЛП (4.2)-(4.3). Как уже упоминалось, черезD(q) обозначается подмножество множества допустимых планов за­дачи. Перед началом первой итерации (q = 1) в качестве теку­щего множества берется все множество D (D(1) = D), после чего решается стандартная задача линейного программирования (D(1), f). Нетрудно заметить, что она является непрерывным аналогом

исходной задачи (4.2)-(4.3). Если найденный оптималь­ный план

(1)содержит только целочисленные компоненты, то он является и оптимальным планом для (4.2)-(4.3):
(1)=x*. В противном случае значениеf(
(1)) становится оценкой (верх­ней границей) значения целевой функции на множестве D(1), и мы переходим к выполнению стандартной итерации алгоритма. Опишем входящие в нее этапы.