А.А. Колоколов, Т.В. Леванова, Институт информационных технологий и прикладной математики СО РАН
1. Введение
В [1] описаны алгоритмы для решения частично целочисленных задач производственно-транспортного типа, основанные на идее декомпозиции Бендерса и метода направленного перебора. В данной работе предлагаются декомпозиционные алгоритмы для простейшей задачи размещения (ПЗР), задачи о p-медиане [2, 8] и некоторых других постановок, в которых наряду с отсечениями Бендерса для решения целочисленной подзадачи используется лексикографический перебор L-классов [?]. Краткое сообщение о них имеется в [7].
Рассмотрим ПЗР в следующей постановке. Дано конечное множество пунктов возможного размещения предприятий и список клиентов. Предприятия производят однородный продукт в неограниченном количестве. Известны стоимости размещения предприятий в указанных пунктах и затраты на удовлетворение спроса каждого клиента. Требуется разместить предприятия и прикрепить к ним клиентов так, чтобы суммарные производственно-транспортные затраты были минимальны. Введем некоторые обозначения:
m - число пунктов возможного размещения предприятий, i - номер предприятия,
n - число клиентов, j - номер клиента,
ci - стоимость размещения предприятия в пункте i;
tij - затраты на удовлетворение спроса клиента j предприятием i (включающие издержки на производство и транспортировку);
xij - часть всей продукции, которую необходимо доставить с предприятия i клиенту j;
Обозначим
Мы используем следующую модель ПЗР:
| (1) |
| (2) |
| (3) |
| (4) |
2. Алгоритм перебора L - классов
В [?] и других работах развивается подход к анализу и решению задач целочисленного программирования, основанный на регулярных разбиениях пространства Rn. Много результатов было получено с помощью L-разбиения.
Дадим определение L-разбиения. Пусть
1) Каждая точка
2) Если X ограниченное множество, то фактор-множество X/L - конечно.
3) L - разбиение согласовано с лексикографическим порядком, то есть для любого X все элементы X/L могут быть линейно упорядочены следующим образом:
Если X ограничено, то X/L можно представить в виде
Рангом L - класса V называется число
Алгоритм перебора L - классов основан на идее поиска элемента L - разбиения, непосредственно следующего за данным L - классом в порядке лексикографического возрастания (для задачи на минимум).
Пусть
| (5) |
Соответствующая задача линейного программирования (ЛП) состоит в нахождении лексикографически минимального элемента множества M.
Пусть
В противном случае мы ищем V' такой, что
Если не существует соседнего дробного L-класса, то либо мы получаем оптимум задачи БП, либо приходим к выводу, что задача не имеет решения. Процесс является конечным, так как M ограничено.
Опишем алгоритм перебора L - классов. Для простоты номер итерации будем опускать.
Шаг 0. Решаем исходную задачу ЛП. Если она не имеет решения или ее решение целочисленное, процесс завершается. В противном случае идем на шаг 1.
Шаг 1. Обозначим через
|
Формируем задачу ЛП путем добавления к исходной ограничений
|
Ее целевая функция
1)
2)
a) x'p < 1; если p=1, процесс завершается, в противном случае идем на шаг 2;
b) x'p = 1; идем на шаг 1.
Шаг 2. Находим максимальный номер
|
ее целевая функция
1)
2)
a)
В результате работы алгоритма перебора L-классов мы получаем лексикографически монотонную последовательность представителей L-классов множества M/L.
3. Декомпозиционный алгоритм
После фиксирования всех переменных zi мы получаем из (1)-(4) транспортную задачу T(z) и соответствующую ей двойственную задачу D(z) с переменными
| (6) |
| (7) |
| (8) |
Оптимальное решение этой задачи используется для построения отсечения Бендерса.
Опишем основные шаги декомпозиционного алгоритма.
Предварительный шаг. Формулируем исходную задачу целочисленного программирования P(1): найти лексикографически минимальное решение системы, состоящей из неравенства
|
и нескольких ограничений вида
| (9) |
|
Обозначим z(k), x(k) , v(k), u(k) - оптимальные решения задач P(k), T(z(k)), D(z(k)) соответственно, и z(0), x(0) - лучшее из известных решений задачи (1)-(4) со значением целевой функции F(0).