причем по условию задачи xii =0, i∊1: n.
Допустимыми планами служат связные маршруты, однозначно определяемые упорядоченным набором посещаемых пунктов:
Каждый такой маршрут можно отождествить с перестановкой n чисел (упорядоченной выборкой из n элементов по n). В свою очередь, таким перестановкам взаимно однозначно соответствуют матрицы X, у которых в каждой строке и каждом столбце содержится точно одна единица.
С учетом сказанного задача коммивояжера принимает вид целочисленной задачи линейного программирования:
Условия (4.8) и (4.9) с содержательной точки зрения означают, что в каждый пункт можно въехать и выехать только один раз. Приведенная форма записи задачи коммивояжера (4.6)-(4.10) не является самой рациональной и предназначена только для того, чтобы подчеркнуть ее общность с другими задачами дискретного программирования. Существует и другая форма, которая более ярко отражает комбинаторный характер данной проблемы:
гдеD — множество перестановок чисел от 1 до n.
Отдельно следует остановиться на том, что задача коммивояжера имеет большое количество содержательных аналогов. Скажем, к аналогичной модели приведет задача разработки графика переналадки оборудования, которое может выпускать разные типы изделий, но требует определенных затрат (временных или материальных) при переходе с одного технологического режима на другой.
4.1.4. Задачи с разрывными целевыми функциями. Как уже упоминалось выше, многие экономические системы характеризуются наличием так называемых постоянных затрат, которые должны быть произведены независимо от объема производства. Учет в моделях этих и подобных факторов приводит к появлению в них целевых функций, не обладающих свойством непрерывности. В качестве примера может быть приведена транспортная задача с фиксированными доплатами. Она отличается от транспортной задачи в матричной постановке, рассмотренной в главе 3, тем, что в ней затраты по перевозке груза из i-го пункта производства в j-й пункт потребления определяются как
где сi,j — по-прежнему издержки на перевозку единицы груза;
di,j — фиксированная доплата за аренду транспортныхсредств.
При таких предпосылках целевая функция суммарных затрат на перевозку
содержит «скачкообразные» разрывы, что существенно затрудняет ее минимизацию, поэтому стандартный метод решения основан на следующем преобразовании. Если ввести вспомогательные переменные уi,j, такие, что
то целевая функция примет вид
Действительно, если уi,j =0 , то переменные хi,j =0, а при уi,j =1 неравенства (4.15) становятся несущественными, поскольку они и так справедливы для любого опорного плана. Следовательно, задача (4.16) эквивалентна исходной задаче (4.13). В силу характера ограничений (4.14)-(4.15) задача (4.16) является задачей частично-целочисленного программирования.
Перечисленные примеры далеко не исчерпывают всего многообразия задач дискретного программирования. Однако более подробное их рассмотрение требует привлечения достаточно сложного математического аппарата и выходит за рамки данной книги.
В последующих параграфах мы остановимся на способах решения наиболее известных и хорошо изученных дискретных задач. Излагаемые ниже методы не имеют универсального характера, с каждым из них связаны определенные ограничения и, соответственно, ответ на вопрос о выборе того или иного из них зависит от конкретных особенностей решаемой задачи. Более того, цель изложения состоит в том, чтобы создать у читателя общие представления об основных идеях и подходах, не углубляясь далеко в вычислительные и математические тонкости, которыми буквально изобилуют алгоритмы дискретного программирования. Заметим также, что достаточно эффективный и широко применяемый подход к решению целочисленных задач основан на сведении их к задачам транспортного типа. Это объясняется тем, что если в условиях транспортной задачи значения запасов (аi) и потребностей (bj) являются целочисленными, то целочисленным будет и оптимальный план.
4.2.1. Основные идеи и принципы*. Данный метод, который также носит название метода отсекающих плоскостей, предназначен для решения ЦЗЛП в канонической форме (4.2)-(4.3). Кратко представим его основные идеи.
* Впервые был предложен Р.Гомори в 1957-1958 гг.
Отправной точкой для решения задачи (4.2)-(4.3) является решение ее непрерывного аналога, т. е. КЗЛП без учета условий целочисленности. Если получаемый в результате оптимальный план х* содержит только целые компоненты, то мы автоматически получаем и соответствующее решение ЦЗЛП. В противном случае к системе ограничений задачи должно быть добавлено такое ограничение, для которого:
- найденный нецелочисленный оптимальный план х* не удовлетворяет вновь добавляемому ограничению;
- любой допустимый целочисленный план непрерывной задачи (4.2)-(4.3) удовлетворяет вновь добавляемому ограничению.
Такое ограничение называют правильным отсечением. В первой геометрической интерпретации правильному отсечению соответствует гиперплоскость, отсекающая от выпуклого многогранного множества допустимых плановD некоторый многогранник, не содержащий целочисленных планов.
Добавив сформированное отсекающее ограничение к уже существующим, мы получаем новую оптимизационную задачу, после чего вычислительный процесс итеративно повторяется.
Теперь необходимо несколько более подробно остановиться на принципах формирования отсекающих ограничений. Воспользуемся системой обозначений, применявшихся при изложении вычислительных методов линейного программирования. Пусть β(q) — оптимальный базис, полученный на последней итерации решения нецелочисленной ЗЛП. Если обозначить через αi,j и άi коэффициенты матрицы задачи и вектора ограничений в текущем базисе (A(β(q)) и b(β(q)))
то i-ое уравнение в системе ограничений задачи примет вид:
Так как план x(β(q)) является базисным, то в каждом уравнении все коэффициенты αi,j, соответствующие базисным столбцам (j∊N(β(q))), равны нулю за исключением некоторого αi,ji =1, на основе чего из (4.18) получаем:
Если представить каждый коэффициент αi,j в виде суммы целой и дробной частей αi,j =[αi,j]+{αi,j}, то получим
или
Из (4.21) следует, что если все хj,j∊1: n являются целыми, то целым будет и выражение
стоящее в левой части(4.21), и, стало быть, правая часть данного уравнения:
также должна быть целой. Предположим, что
тогда, в силу того, что 0 ≤ {άi} < 1, а {αi,j} ≥ 0, xj ≥ 0, должно выполняться неравенство
Однако неравенства (4.22) и (4.23) противоречат требуемой целочисленности правой части (4.21)xj(β(q)). Следовательно, для целочисленных решений должно выполняться условие, противоположное неравенству (4.22), или, что то же самое,
В то же время (4.24) не выполняется для любого нецелочисленного базисного плана х. Действительно, небазисные компоненты плана равны нулю: хj=0 , j∊N(β(q)), и (4.24) приобретает вид {άi} ≤0 <=> {άi}=0, но это противоречит предположению о нецелочисленности плана х, т. к. в базисном плане хi = άi . Все сказанное позволяет утверждать, что ограничение (4.24) задает правильное отсечение.
Таким образом, с точки зрения организации техники, вычислений для осуществления правильного отсечения мы должны к системе ограничений нецелочисленной линейной задачи, решаемой на q-й итерации, добавить условие
гдеxn+1 ≥0 — фиктивная переменная, добавляемая для преобразования неравенства в строгое равенство. Ей соответствует нулевой коэффициент в целевой функции.