Теоретические основы методов отсечения
Содержание
Введение 3
1.Постановка линейной
2.Теоретические основы
2.1 Первый алгоритм Гомори 12
2.2 Второй алгоритм Гомори 18
Заключение 20
Список используемых источников 23
Введение
Среди практически важных задач отыскания условного экстремума линейной функции важное место занимают задачи с требованием целочисленности всех (части) переменных. Они получили название задач целочисленного (частично целочисленного) программирования.
Исторически первой задачей целочисленного типа является опубликованная венгерским математиком Е. Эгервари в 1932 г. задача о назначении персонала.
Существуют различные методы решения таких задач, и заметное место среди них занимают методы отсечения. Рассмотрим в этой работе некоторые из методов отсечения, предварительно более подробно разобравшись с постановкой линейных целочисленных задач.
Методы отсечений относятся к численным методам решения дискретных задач оптимизации (методам дискретного программирования). Они предназначены для решения целочисленных задач линейного программирования (ЛП). Идея методов отсечения состоит в следующем.
Первоначально решается
1) полученное нецелочисленное решение ему не удовлетворяет;
2) все целочисленные точки допустимого множества исходной задачи ему удовлетворяют. Такое ограничение называется правильным отсечением.
Затем решается расширенная
Геометрически добавление каждого такого линейного ограничения означает проведение гиперплоскости, отсекающей от многогранника допустимых решений очередной непрерывной задачи ЛП оптимальную точку с нецелочисленными координатами, но не затрагивающей ни одной из целочисленных точек этого многогранника. Поэтому методы, опирающиеся на эту идею, получили название методов отсечений.
Основная идея методов отсечения заключается в построении такой эквивалентной задачи линейного программирования, при которой исходная задача целочисленного программирования сводится к ее решению. Иногда это называют линейной аппроксимацией целочисленного программирования.
Методы целочисленного программирования значительно отличаются от методов оптимизации и по существу относятся к дискретной математике. Они не обладают таким единством, как методы вариационного исчисления, и в большинстве представляют собой набор частных приемов, пригодных для решения частных задач. Однако актуальность этих методов требует их дальнейшего развития и совершенствования, так как наиболее важные прикладные задачи типа оперативно-календарного планирования сводятся к задачам целочисленного программирования.
Методы отсечения используют процедуру линейного программирования для последовательности задач, в которые постепенно вводятся линейные ограничения, и тем самым реализуется процесс правильного отсечения. Основу всех методов этой группы составляют алгоритмы Гомори и их модификации.
1. Постановка линейной целочисленной задачи
Среди совокупности п неделимых предметов, каждый i-и (i=1,2,…, п) из которых обладает по i-й характеристике показателем и полезностью найти такой набор, который позволяет максимизировать эффективность использования ресурсов величины .
Математическая модель этой задачи может быть представлена следующим образом:
в области, определенной условиями
найти решение при котором максимизируется (минимизируется) значение целевой функции
(4)
Если , то (1–4) является моделью задачи целочисленного программирования, если - моделью задачи частично целочисленного программирования.
Частным случаем задачи целочисленного программирования является задача с булевыми переменными. Ее математическая модель в общем виде записывается следующим образом:
в области, определенной условиями
(5); (6)
найти решение , при котором максимизируется (минимизируется) значение функции
(7)
К классу задач целочисленного программирования примыкают задачи, в которых условие целочисленности всех или части переменных заменено требованием дискретности. А именно, для каждой j-и переменной заранее определен набор значений (не обязательно целых), которые она может принимать: где .
Предполагается, что ранжированы, т.е. . Математическая модель общей задачи дискретного программирования может быть представлена следующим образом:
в области, определенной условиями
найти решение , при котором максимизируется (минимизируется) линейная функция
(10)
Условие (9) определило название этого класса; задач. Если , то (8–10) называется задачей дискретного программирования; если , то (8–10) называется задачей частично дискретного программирования.
Условие (2–3) задачи (1–4) и условие (6) задачи (5–7) являются частным случаем условия (9) задачи (8–10). Действительно, (2–3) соответствует тому случаю, когда для . Условие (9) соответствует случаю, когда .
Для задач целочисленного типа определено
понятие допустимого и
Вектор , удовлетворяющий условиям (1–3) (соответственно (8–9)), называется допустимым решением задачи (1–4) (соответственно (8–10)). Допустимое решение, при котором функция (4) (соответственно (10)) достигает наибольшего (наименьшего) значения, называется оптимальным решением.
Определив понятие допустимого
и оптимального решения, естественно
поставить вопрос об их нахождении.
Казалось бы, что естественный путь
решения целочисленной задачи состоит
в решении соответствующей
2. Теоретические основы методов отсечения
Запишем общую задачу целочисленного программирования: в области, определенной условиями
(11); (12); - целые, (13)
максимизировать функцию: (14).
Назовем для кратности задачу (11–14) (£ц, C) – задачей. Соответствующую ей задачу без требования целочисленности переменных, т.е. задачу (11, 12, 14) назовем (£, C) – задачей. Поставим вопрос: нельзя ли решение (£ц, C) – задачи получить путем решения некоторой специальным образом построенной задачи без требования целочисленности переменных и такой, что оптимальные решения исходной (£ц, C) – задачи и задачи без требований целочисленности переменных будут совпадать. Другими словами: нельзя ли хорошо изученный аппарат решения задач линейного программирования приспособить к решению целочисленных задач. Принципиальный ответ на этот вопрос дает следующая теорема.
Теорема. Пусть £ – многогранник, £ц – множество его целых точек, R – выпуклая, линейная оболочка множества £ц, тогда:
1) R=Rц – целочисленный многогранник;
2) Rц = £ц;
3) R* – множество опорных решений задачи (£ц, C) содержится в многограннике Rц.
Доказательство. Докажем, что R – целочисленный многогранник. По условию теоремы £ – многогранник, поэтому множество его целых точек (оно обозначено через £ц) конечно. Поскольку R – выпуклая линейная оболочка этого конечного множества точек, R – тоже многогранник.
По самому определению выпуклой линейной оболочки, она содержит все опорные планы множества, на которое она натянута, т.е. многогранник R содержит все целочисленные точки £ц. Поэтому R – целочисленный многогранник. Обозначим его через Rц. Первая часть теоремы доказана.
Докажем, что Rц совпадает с £ц. Так как R – выпуклая оболочка точек множества £ц, то £ц ÍRц.
Покажем, что справедливо также
и противоположное неравенство–
Доказательство 3-го пункта теоремы является совершенно очевидным. Так как R* – множество опорных решений задачи (£ц, C), то R*Í£ц но £ц=Rц, поэтому R*ÍRц
Теорема доказана.
Следствием из этой теоремы является тот вывод, что оптимальное решение задачи, областью определения которой является выпуклая оболочка, натянутая на область поиска целочисленного решения, совпадает с оптимальным решением исходной целочисленной задачи.
Доказанная теорема и
В 1954 г. Дж. Данциг высказал идею о том, что построение выпуклой оболочки целочисленной области для задачи (£ц, C) можно осуществлять поэтапно и решать получаемые при этом задачи. Однако при этом возникли вопросы как строить ограничения новой задачи и как обеспечить конечность процесса.
Ответ на эти вопросы был впервые получен Р. Гомори, который предложил алгоритмы решения целочисленных и. частично целочисленных задач.
Алгоритм Р. Гомори состоит из следующих процедур:
- Решается (£, C) – задача, соответствующая исходной (£ц, C) – задаче.
- Полученное оптимальное решение (£, C) – задачи, если оно существует, проверяется на целочисленность. Если условие целочисленности выполняется по всем переменным, то оптимальное решение (£, C) – задачи есть оптимальное решение (£ц, C) – задачи. Если условие целочисленности не выполняется хотя бы по одной координате, то переходят к третьему этапу. Если (£, C) – задача, оказывается неразрешимой, то (£ц, C) – задача тоже решения не имеет.
- Строится дополнительное ограничение, обладающее тем свойством, что с его помощью отсекается часть области, в которой содержится оптимальное решение (£, C) – задачи и не содержится ни одного допустимого решения (£ц, C) – задачи. Процесс построения дополнительных ограничений и решения получаемых при этом (£, C) – задач продолжается до тех пор, пока не получим целочисленного решения или не убедимся в неразрешимости задачи.
При этом свойства, которыми должно обладать каждое из дополнительных ограничений при переходе от одной задачи к другой следующие:
- дополнительное ограничение должно быть линейным, чтобы оставаться в области применимости аппарата линейного программирования;
- дополнительное ограничение должно отсекать часть области, в которой не содержится допустимых решений целочисленной (£ц, C) – задачи, но есть найденное оптимальное решение нецелочисленной (£, C) – задачи, т.е. ограничение должно обладать свойством правильности, которое не позволяет потерять оптимальное решение исходной (£ц, C) – задачи.
Пусть х (£, C) – оптимальное решение (£, C) – задачи, которое является недопустимым решением для (£ц, C) – задачи. Неравенство
(15)
определяет правильное отсечение, если удовлетворяет
а) условию отсечения: x(£, C) удовлетворяет неравенству (15)
б) условию правильности: любое допустимое решение задачи (£ц, C), удовлетворяет неравенству (15).
Методы, основанные на использовании процедуры построения правильных отсечений, получили название методов отсечения.
2.1 Первый алгоритм Гомори
Следуя общей схеме методов отсечения, решим (£, C) – задачу (11, 12, 14), соответствующую (£ц, C) – задаче (11–14). Пусть x(£, C) – ее оптимальное решение. Проанализируем координаты x(£, C) на целочисленность. Если все координаты вектора x(£, C) целые, то x(£, C) = x(£ц, C). Если хотя бы одна координата, пусть xi, будет нецелой, поступим следующим образом.
Обозначим через N совокупность небазисных переменных и на основании последней симплексной таблицы запишем разложение xi по небазисным переменным xi, jÎN
(16)
Так как xi – нецелая величина, обозначим ближайшее целое число, не превосходящее xi, через [xi] и определим дробную часть: {xi}= xi - [xi]. Очевидно, (xi)>0.
Покажем, что по i-и строке симплексной таблицы (£, C) – задачи (в которой стоит нецелая координата решения) можно определить дополнительное линейное ограничение, обладающее свойствами правильности.
Теорема. Пусть - допустимое решение (£ц, C) – задачи, тогда соотношения
, (17)
, - целое,
определяют правильное отсечение.
Доказательство.
Запишем выражение (16) в виде:
Используя для этого выражения формулу (17), получим:
или
На основании предположений теоремы о допустимости решения
(£ц, C) – задачи xi – целое. Величины [xio], - целые по определению, следовательно, zi – тоже целое.
Итак, zi определенное формулой (17), целое. Докажем что . Доказательство будем вести от противного. Пусть .-
Это значит, что . По определению дробной части . По условию теоремы x – допустимое решение (£ц, C) – задачи, поэтому . Следовательно,
Тогда должно выполняться:
Итак, из предположения отрицательности zi, сразу же получаем т.е. zi – нецелое. Поскольку ранее было показано, что zi, определенное формулой (17), является целым, то тем самым мы пришли к противоречию. Следовательно, предположение, что zi < 0, неверное. Теорема доказана.
Следствие. Любое оптимальное решение x(£, C) (£, C) – задачи, не являющееся допустимым решением (£ц, C) – задачи, не удовлетворяет условию правильного отсечения (17).
Доказательство. Пусть х (£, C) – оптимальное решение (£, C) – задачи, xi0 – дробное.
Покажем, что х (£, C) не удовлетворяет условию отсечения. Поскольку план оптимален, все небазисные переменные xi, для jÎN равны нулю. Поэтому . Учитывая это, подставим xio в формулу (17):
zi(x (£, C))= – {xi0}+0<0,
что противоречит условию неотрицательности zi. Следствие доказано.
Очевидно, что количество дополнительных ограничений будет нарастать по мере решения вспомогательных (£, C) – задач, оптимальные планы которых будут содержать нецелые координаты, т.е. возникает проблема размерности.
Р. Гомори предложил прием, позволяющий ограничить размеры рассматриваемых симплексных таблиц вспомогательных задач величиной (n+2) (k+1), где n – количество переменных (£, C) – задачи, k – число небазисных переменных ее. Этот прием основывается на том, что нас интересует дополнительное ограничение лишь как способ отсечения нецелочисленного оптимального решения вспомогательной задачи, полученной на данном шаге, и перехода к следующей задаче.
Последовательность (£, C) – задач пометим индексом k=0,1,…, соответствующим номеру итерации в последовательном приближении к решению исходной (£ц, C) – задачи, и обозначим (£k, C). При этом (£0, C) – задача соответствует (£, C) – задаче (задаче без требования целочисленности).
Переменную zi, которая определяется дополнительным линейным ограничением (7) и строится по некоторой нецелочисленной координате оптимального решения (£k, C) – задачи (k =0, 1, 2,…) обозначим xn+k+l.
Чтобы размерность последовательности (£k, C) – задач не возрастала, вычеркнем из симплекс-таблицы переменную, по которой построено дополнительное линейное ограничение.
После сделанных замечаний перейдем непосредственно к изложению вычислительной схемы.
1. Решим (£k, C) – задачу (вначале k = 0) методом последовательного улучшения плана.
Пусть в базис оптимального решения вошли векторы As1,…, Asm. Параметры последней симплексной таблицы обозначим через xij:
.
Если, все базисные составляющие оптимального решения x(£k, C) (£k, C) – задачи целые, то x(£k, C) = x(£ц, C). Если некоторая координата xio оптимального решения x(£k, C) нецелая, то перейдем к п. 2.
2. Если среди совокупности координат оптимального решения x(£k, C) имеется единственная нецелая координата, то дополнительное линейное ограничение (17) строится по этой координате. Если нецелых координат в x(£k, C) более одной, то выберем координату с наименьшим номером. Пусть ею оказалась xi0. Составим дополнительное линейное ограничение
(18); (19)
3. Добавим условия (18, 19) к условиям (£k, C) – задачи. Получим новую (£k+1, C) – задачу. Так как оптимальное решение x(£k, C) (£k, C) – задачи определяло одну из вершин многогранника условий, то оно может быть выбрано в качестве первоначального опорного решения для вновь полученной задачи. А это означает, что последнюю симплексную таблицу (£k, C) – задачи можно взять в качестве исходной для (£k+1, C) – задачи, дополнив ее условием (18).
Итак, симплексная таблица для (£k+1, C) – задачи получается из последней симплексной таблицы для (£k, C) – задачи путем окаймления (i+1) – й строкой с элементами:
где – небазисные переменные (£k, C) задачи.
Получим новую задачу, переменными которой являются . Условия этой задачи разрешены относительно xsl,…, xsm переменных и новой переменной xn+k+1, а линейная форма выражена через небазисные переменные (£k, C) – задачи. Так как мы занимаемся максимизацией F(x) и решение х* для (£k, C) – задачи оптимально, то все Di > 0. Поэтому процесс перехода к новому решению (£k+1, C) – задачи не может быть осуществлен по методу уточнения плана. В то же время и поэтому вектор А0 симплексной таблицы не является опорным решением для (£k+1, C) – задачи, так как решением называется вектор, все координаты которого неотрицательны и удовлетворяют условию принадлежности области £k+l. Поэтому назовем полученный вектор псевдорешением задачи (£k+1, C) и перейдем к дальнейшему преобразованию симплекс-таблицы.
Обозначим через k номер псевдорешения (£k, C) – задачи; тогда направляющей строкой является i+k+1-я строка, k =0, 1, 2,…. Поэтому на каждом этапе преобразования таблицы вектор Ai+k+i будет выводиться из таблицы. Можно доказать, что через конечное число шагов либо будет найдено целочисленное решение, либо будет обнаружена ее неразрешимость, а тем самым неразрешимость (£ц, C) – задачи.
Если решение (£k, C) – задачи завершается построением оптимального целочисленного решения x*, то m, первых его компонент определяют решение целочисленной задачи; если среди координат х* есть дробные, то одна из дробных компонент (ранее определенным правилом) порождает дополнительное ограничение и процесс решения должен быть продолжен с новой окаймляющей строкой. Строка, используемая ранее для окаймления, вычеркивается и больше для построения расширенных задач не восстанавливается.
Процедуру решения (£k, C) – задачи (k=0, 1,…) и анализа полученного решения назовем большой итерацией. Номер большой итерации совпадает с номером решаемой (£k, C) – задачи.
Результатом большой итерации является переход к новой (£k+1, C) – задаче либо окончание решения задачи.
Теорема. Пусть множество оптимальных планов задачи (£0, C) ограничено и выполняются следующие условия:
1) сi – целые коэффициенты целевой функции F(x) (i =1,2,…, n), строка целевой функции в симплексной таблице учитывается при выборе строки для построения правильного отсечения;
2) справедливо одно
из двух утверждений: либо
Тогда первый алгоритм Гомори
требует конечного числа
2.2 Второй алгоритм Гомори
Второй алгоритм Р. Гомори предназначается для решения задач, в которых требование целочисленности наложено на некоторые переменные (в частности и на все). Мы его рассмотрим применительно к задачам частично целочисленного типа, понимая, что вычислительная схема будет справедливой и для задач, полностью целочисленных.
Пусть в области, определенной условиями:
(20); (21)
– целые, (22)
требуется максимизировать функцию
(23)
Метод решения задачи (20–23) основывается на той же идее, что и метод решения полностью целочисленных задач. А именно: строится область £k, которая при k = 0 определяется условиями (20–21); решается полученная при этом задача линейного программирования (20–21, 23). Если задача (20–21, 23) оказывается разрешимой, то полученное оптимальное решение ее анализируется на допустимость для исходной задачи целочисленного программирования (20–23). Если найденное решение оказывается целочисленным, то одновременно оно будет оптимальным для (20–23). Если оптимальное решение (£k, C) – задачи оказывается недопустимым для исходной задачи (20–23), то осуществляется построение правильного отсечения и переход к решению новой задачи,
Второй алгоритм Р. Гомори формулируется в виде следующей теоремы:
Теорема. Пусть х(£k, C) – оптимальное решение (£k, C) – задачи, – элементы соответствующей ему симплексной таблицы. Если – нецелое , то (24); – целое, (25)
где
(26)
определяет правильное отсечение. Блок-схема второго алгоритма Р. Гомори аналогична блок-схеме первого алгоритма Р. Гомори и отличается лишь правилом построения коэффициентов правильного отсечения.
Правило построения правильного отсечения
Пусть x(£k, C) не удовлетворяет условию целочисленности, – элементы симплексной таблицы, соответствующей полученному оптимальному решению (£k, C) – задачи. Выберем i0=min {i | i Î (1, 2,…, n), xi0k – нецелое} и строим правильное отсечение по формулам (24 – 26).
Условия конечности второго алгоритма Гомори:
1) Целевая функция F(x) удовлетворяет условию целочисленности. Это учитывается при выборе строки k для построения правильного отсечения.
2) Выполнено по крайней мере одно из двух условий:
2') целевая функция ограничена снизу на многогранном множестве £= £0;
2») задача (£0ц, C) имеет по крайней мере один план.
С помощью второго алгоритма Гомори можно (в случае n1=n) решать и полностью целочисленную задачу линейного программирования. Однако в этом случае нет оснований для сравнения эффективности второго и первого алгоритмов Гомори.
Заключение
Попробуем охарактеризовать поведение алгоритмов метода отсечения при решении задач целочисленного линейного программирования. В качестве меры продолжительности вычислений могут рассматриваться количество симплексных итераций I и количество правильных отсечений (дополнительных линейных ограничений) D.
Для первого алгоритма Гомори и различных его обобщений I и D также тесно связаны между собой (как показывает эксперимент, в большинстве случаев решение отдельной задачи (£, С) требует сравнительно небольшого количества симплексных итераций).
Переходим к изложению отдельных свойств алгоритмов метода отсечения.
Числа I и D имеют (в среднем) тенденцию к возрастанию с увеличением числа переменных и ограничений, ростом порядка коэффициентов задачи и увеличением заполненности матрицы .
Это явление кажется естественным, но опыт показывает, что в дискретном программировании «естественное» и «правдоподобное» не всегда оказывается правильным. Точнее говоря, опыт, накопленный на задачах линейного программирования, нельзя механически переносить на задачи целочисленного линейного программирования.
Прежде всего, обращает на себя внимание «нерегулярность», «непредсказуемость» поведения алгоритмов метода отсечения. Для ряда задач оптимальное решение не удавалось получить после многих тысяч итераций, в то время как другие задачи решались за несколько десятков итераций.
Большое влияние на число итераций оказывает правило выбора порождающей строки. Здесь также имеет место «нерегулярность» – в то время как одно правило приводит к успеху за десятки итераций, другое не дает решения после тысяч итераций.
В настоящий момент отсутствует исчерпывающее объяснение удач или неудач различных вычислительных экспериментов. Все же для задачи коммивояжера и задачи теории расписаний является правдоподобным следующее соображение.
Формулировка этих задач на языке целочисленного программирования является «неестественной». Для задачи сравнительно небольшой в «естественной» формулировке, в модели целочисленного линейного программирования фигурирует большое количество ограничений и переменных. Возможно, что для этих задач более перспективными являются комбинаторные методы (например, метод ветвей и границ для задачи коммивояжера). Впрочем, последнее утверждение является спорным, так как комбинаторные методы очень чувствительны к специфике задач, введению дополнительных условий и т.п.