АЛГОРИТМ ДЛЯ РЕШЕНИЯ СМЕШАННО-ЦЕЛОЧИСЛЕННЫХ ЗАДАЧ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

В пунктах 32.1 и 32.2 приведены алгоритмы для решения специальных дискретных задач (т-задача и М-за- дача) методом поиска. В пунктах 32.3 и 32.4 с помощью этих специальных алгоритмов обобщаются методы решения задач целочисленного программирования.

Пункт 32.1. т-задача и алгоритм ее решения. Формулировка /п-задачи:

где

Предполагается, что > 0 для всех / = 1, ..., п. Это соответствует предположению о том, что оптимальный план исходной задачи (без требования целочисленности) двойственно невырожденный (см. ниже 32.4). Ясно, что Ь в общем случае не является целочисленным вектором, иначе задача имела бы очевидное решение:

Положим , для которых система

совместна и /(у) = +ос в противном случае, очевидно, что /(у) — выпуклая функция на Нт и что

Легко видеть, что /п-задача эквивалентна задаче

Пусть () — выпуклое множество в т-мерном пространстве и 0 е <3. Рассмотрим следующую задачу:

Г-задача:

Теорема 32.1. Существует такое оптимальное решение Г-задачи у и соответственно такой х, что

причем х имеет только одну ненулевую компоненту.

Иными словами, оптимальное решение Г-задачи достигается на ребрах конуса

Доказательство. Пусть у — оптимальное решение Г- задачи. Так как — выпуклое множество, то существует опорная плоскость Н, проходящая через у и не пересекающаяся с открытым ядром множества С. Пусть Н = {у: ёУ = р}, где g = (?1( ё'2, ..., ?„,)> р — число.

Рассмотрим следующую задачу:

Н-задача:

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

Так как гиперплоскость Н не пересекается с ядром множества <3, то из теоремы 32.1 следует, что

Отсюда имеет место:

Н-задача в форме

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

Пусть х — оптимальное базисное решение этой задачи и у = Ах (х имеет только одну ненулевую компоненту). Чтобы доказать, что у является оптимальным решением Г-задачи, достаточно доказать, что у е Г(С}).

Предположим противное. Пусть у ёГ(ф).

Очевидно, что в этом случае у является внешней точкой множества (?. Ясно, что существует такое X е [0,1), что #еГ(<3).

Отсюда: ха — допустимое решение задачи

Следовательно, f{Ху)<хХс, и так как >,<1, то хХс < что противоречит предположению об оптимальности у. Значит, //еГ(С}).

Теорема доказана.

Эта теорема позволяет решать Г-задачу простым перебором всех точек пересечения ребер конуса КА с Г(<3).

При решении /п-задачи методом поиска лучше всего брать в качестве выпуклых множеств <3 — открытые прямоугольники следующего вида

где

Через Нк+(Н‘к) обозначим гиперплоскость в/п-мерном пространстве

В соответствии с теоремой 32.1 можно проверить, что задача

решается с помощью соотношения

где ак?! — элемент матрицы А из исходной /п-задачи.

Из следствия 31.2 пункта 31.1 следует, что

Множество можно определить следующим образом. Пусть, например,

Тогда

По построению ясно, что для всех ?.

Отметим, что в ходе вычисления не надо запоминать элементы множества {у: у е 0,; у = Ь(тос11)} и их значения {(у).

Замечание к блок-схеме, в может принимать несколько значений, если г' лежит на пересечении нескольких гиперплоскостей, дающих ограничения для 0;.

Пункт 32.2. Блок-схема 6 (упрощенная).

Блок-схема 6 Определение Б множеств

Пункт 32.2 (методы решения М-задачи).

М-задача является обобщенной формой /п-задачи. Формулировка М-задачи:

где А, с, Ь, х, у — определяются как в пункте 32.1.

Для понимания предполагаемых методов важно отметить, что компоненты вектора с1, как правило, не являются большими отрицательными числами.

Положим Р(у) = пипсх,

для тех у, для которых система

совместна и Р(у) = +оо — в противном случае.

Очевидно, что выпуклая функция на 11"' и М-задача эквивалентна задаче

Ясно,что

где х является оптимальным решением задачи

По предположению х не очень отличается от 0, т. е. вектор х не далеко от начала координат пространства К"'.

Первый метод решения Ш-задачи.

Строится последовательность у1, у2, ..., уг, в которой у'Ч — оптимальное решение задачи.

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

Имеем:

Соответственно, строим последовательность С1, <32,

С, где

Ясно, что & > р. Если выполняется ,

то у1 — оптимальное решение М-задачи. Если б5 > /, то строим /г+1 и С+1 и продолжаем проверку. Если оптимальное решение М-задачи значительно удалено от 0, то для нахождения решения потребуется много итераций.

Второй метод решения М-задачи.

Как и для решения /п-задачи, строится такая последовательность выпуклых множеств <3,, что Ах е и 0 е Q?, х — оптимальное решение задачи

Но вместо обобщенной Г-задачи решаем задачу

Ясно,что

Таким образом, получаем нижнюю оценку для решения Г-задачи и неравенство

является достаточным условием оптимальности вектора у*. С вычислительной точки зрения этот метод почти эквивалентен первому методу.

Третий метод решения М-задачи (непосредственное применение метода поиска).

Для решения обобщенной Г-задачи применяется следствие 31.2 из п. 31.1. Чтобы найти г1 такое, что

надо решать задач линейного программирования типа

При решении предыдущей Г-задачи и используя результаты предыдущих итераций (минимумы на гиперплоскостях). Такой алгоритм сходится так же быстро, как и алгоритм для решения т-задачи? Но первая итерация очень трудоемкая (сравни алгоритм из п. 31.4). Для сходимости третьего метода не играет роли, на сколько вектор х удален от 0.

Четвертый метод решения М-задачи (комбинированный метод). Этот метод является комбинацией второго и третьего метода.

Пренебрежем ограничением Вх < с1 при нахождении минимума на границе выпуклых множеств и начнем решать задачу вторым методом, но пока не требуем, чтобы Ах е<3, .

Начиная с этой итерации, когда Ах е <3, , ищем минимумы на гиперплоскостях методом линейного программирования, как в третьем методе. Такой метод не на много хуже, чем третий метод, но менее трудоемкий.

Для сходимости третьего и четвертого методов условие Су > 0, у = 1,..., п (двойственная невырожденность оптимального плана исходной задачи) не является необходимым.

Пункт 32.3 (алгоритм решения для специального класса задач). Рассмотрим задачу смешанно-целочисленного программирования в эквивалентной форме (IX).

Если для оптимального решения (х*ы,у’к) задачи выполняется неравенство

то (Хн,у1) будет оптимальным решением задачи (IX). Аналогично тому, как это было сделано в [3], можно показать, что это имеет место для определенного класса задач.

Для решения задачи (X) предлагается следующий метод. Решим задачу

для всех р е Р(м) методом динамического программирования [3] или методом из § 26, или каким-либо другим методом динамического программирования очень эффективно можно решать задачу (XI) для всех элементов группы р(ы).

Трудоемкость при решении задачи (XI) для всех р е еЕ(х) возрастает лишь незначительно по сравнению с решением задачи (XI) только для одного значения р. Оптимальное решение этой задачи есть функция ц - д;Лг(р). Потом решаем задачу

для всех методом поиска из пункта 32.1 (XII т-

задача).

Пусть оптимальное решение этой задачи г/А.(р). Найдем р’ из условия:

Легко проверить, что ягдХр*), ?/А(р*) — оптимальное решение задачи (X).

Значительно уменьшить вычислительную работу можно следующим образом. Упорядочим все решения задачи (XI) по возрастанию

Пусть I число элементов группы Р(м).

Построим последовательность ЧЧр1),..., Ч^р') решения задачи (XI) для р', 1 < I < г < 1.

Если

то *(р8), р(ря) — оптимальное решение задачи.

В противном случае определим Ч'(рг+1) и продолжаем проверку условия (32.2) для г: = г + 1.

Пункт 32.4 (общий алгоритм). Рассмотрим случай, когда для оптимального решения задачи (X) Хд^р’), г/*(р*) не выполняется соотношение (32.1).

Ищем последовательность ?-оптимальных решений задачи

алгоритмом из § 30 (см. упрощенную блок-схему).

Последовательно для каждого х‘к, ?=1,2,..., решаем задачу

Задача (XIV) решается одним методом из пункта 32.2 (XIV — М-задача). Пусть имеем

Если

то — оптимальное решение задачи (IX).

В противном случае определим и продолжаем проверку условия (32.3) для г := г + 1.

Если для решения М-задачи применяли третий или четвертый методы пункта 32.2, тогда этот метод и сходится, если для некоторых у еу =0. Если среди компонентов вектора с* имеются нулевые, то поступаем так же, как это предлагается в п. 32.2.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ ОРИГИНАЛ   След >