Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ДПиДМО

.pdf
Скачиваний:
26
Добавлен:
27.03.2015
Размер:
1.97 Mб
Скачать

гда в исходном графе G гамильтонов цикл имеется.

Если применением ППС в задаче коммивояжера найдено решение с суммарной длиной обхода n (обходов меньшей длины в построенной задаче существовать не может), то граф G, очевидно, гамильтонов. Докажем справедливость обратного утверждения. Предположим противное, т.е. что граф G гамильтонов, а применением ППС строится решение задачи коммивояжера с суммарной длиной обхода большей, чем n. В таком случае суммарная длина обхода не меньше n + 1 + nε0, ибо реализуется по меньшей мере один элементарный переход длины 2 + nε0. Вместе с тем, так как граф G гамильтонов, оптимальное значение критерия в построенной задаче коммивояжера равно n. Разность между значением критерия для решения, построенного применением ППС, и оптимальным его значением оказывается не меньше nε0 + 1, а относительное отклонение критерия задачи при найденном ППС решении от оптимального его значения оказывается не меньшим ε0 + 1/n. Но это противоречит утверждению о том, что применяемая ППС строит ε0-оптимальное решение. Получаем, что применением ППС в построенной задаче коммивояжера решение с суммарной длиной обхода n строится тогда и только тогда, когда в исходном графе G гамильтонов цикл имеется. Таким образом, рассматриваемая ППС в полиномиальном времени решает проблему определения по произвольному графу, является ли он гамильтоновым. В предположении Р NP это невозможно. Методом от противного теорема доказана.

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

Пусть

max К(Х)

X D

произвольная задача дискретной оптимизации. Предполагаем, что для каждого X из D определена окрестность G(Х), при этом

171

X G(Х ). Решения, принадлежащие окрестности G(Х), – это в том либо ином смысле близкие X решения. Алгоритмы локальной оптимизации имеют следующую общую структуру:

1.Находим исходное допустимое решение Х0, Х0 D; полагаем k = 0.

2.По имеющемуся допустимому решению Хk определяем окрестность этого решения G(Хk); перебором принадлежащих окрестности решений находим решение Х*, оптимизирующее

значение критерия при условии, что X G(Хk). Если К(Хk) = = К(Х*), то Хk – локальный оптимум. В противном случае переходим к п. 3.

3.Полагаем k = k +1.

4.Полагаем Хk = Х* и переходим к п. 2.

Разработка конкретных алгоритмов локального поиска предусматривает несколько принципиальных этапов. Во-первых, нужно определить процедуру определения исходного допустимого решения. Иногда оказывается целесообразным осуществлять поиск, отправляясь из нескольких начальных точек (далее выбирается лучшее из полученных решений). Во-вторых, для рассматриваемой задачи нужно выбрать подходящий способ определения окрестностей; надо иметь в виду, что число точек в каждой совокупности G(Х) должно быть относительно небольшим (поиск оптимума в окрестности осуществляется перебором). Вместе с тем если окрестности слишком малы, то процесс поиска экстремума оказывается малоэффективным.

Отметим, что симплекс-метод решения задач линейного программирования может трактоваться как локальный поиск; совокупность D – вершины многогранника ограничений, окрестность каждой точки Х из D включает вершины, смежные с вершиной Х.

В задаче коммивояжера понятие k-окрестности (k – натуральное число, фиксирующее размер окрестности, k 2) определим следующим образом: гамильтонов цикл С* принадлежит k-окрестности гамильтонова цикла С, если С* можно получить из С путем замены не более чем k дуг. Выполненные экспери-

172

менты показывают, что использование систем окрестностей при k = 2 малоэффективно, при k = 3 получаются достаточно хорошие (в среднем) результаты; переход к значению k = 4 существенно увеличивает время вычислений и мало улучшает качество получаемых результатов.

3.4.Эвристические алгоритмы для задач синтеза расписаний обслуживания

Всвязи с большой вычислительной сложностью многих задач синтеза оптимальных расписаний обслуживания и диктуемыми условиями приложений жесткими ограничениями на продолжительности циклов решения таких задач целесообразными оказываются эвристические алгоритмы построения расписаний. Рассмотрим общие схемы некоторых эвристических алгоритмов, прежде всего для введенной в гл. 2 канонической задачи однопроцессорного обслуживания потока заявок; наложение каких-либо дополнительных ограничений на модель обслуживания здесь не предполагается.

Следует указать две сферы приложений эвристических алгоритмов: 1) синтез расписаний приемлемого для практического использования качества; 2) получение нижних оценок, которые оказываются необходимыми для точного решения задач синтеза оптимальных расписаний методом ветвей и границ [13]. Вторая сфера предполагает многократное использование эвристического алгоритма в процессе решения одной задачи; он должен обладать достаточным быстродействием, хотя получаемые оценки могут быть относительно грубыми.

Вканонической модели однопроцессорного обслуживания заявки потока R = {1, 2, ..., n} считаются пронумерованными в

порядке их поступления (0 = t(1) t(2) ... t(n)). Дополнительно полагаем, что заявки, поступающие на обслуживание одновременно, получают очередные номера в порядке убывания показателя µ(i) = а(i)/τ(i).

Первый эвристический алгоритм тривиален, он основан на принципе «первый пришел – первым обслуживается» (ПП-ПО)

173

Результатом применения алгоритма ПП-ПО, с учетом принятого способа нумерации заявок, всегда является расписание ρ = (1, 2,

..., n). Как правило, более качественными оказываются расписания, конструируемые µ-алгоритмом, предусматривающим, что в каждый момент принятия решения по загрузке освободившегося процессора из совокупности ожидающих обслуживания выбирается заявка с наибольшим значением показателя µ = а(i)/τ(i).

Изложим идею следующего эвристического алгоритма, назовем его (p, q)-алгоритмом, здесь p и q – небольшие натуральные числа (n > p q). На первом этапе работы алгоритма рассматривается начальный отрезок входного потока (подпоток R1), содержащий заявки 1, 2, ..., p. Любым точным методом, эффективно работающим благодаря выбранному небольшому значению параметра p, строится минимизирующая суммарный штраф последовательность π1 обслуживания заявок этого подпотока; начальный, длины q, отрезок последовательности π1 считаем начальным отрезком синтезируемого расписания обслуживания ρ* заявок исходного потока R = {1, 2, ..., n}; заявки, нашедшие свое место в расписании ρ*, из потока R изымаются, получаемый в результате поток обозначаем R1; момент завершения обслуживания заявок, входящих в построенную начальную часть расписания ρ*, обозначим Т(ρ*,1). На втором этапе заявки потока R1, поступившие не позднее момента Т(ρ*,1), переупорядочиваются в порядке убывания значений показателя µ(i), получаемый поток обозначаем R(1); далее рассматривается начальный отрезок потока заявок R (1) (подпоток R2), содержащий p заявок; выбранным точным методом строится минимизирующая суммарный штраф последовательность обслуживания заявок этого подпотока π2; начальный, длины q, отрезок последовательности π2 считаем следующим отрезком синтезируемого расписания ρ* обслуживания заявок потока R; заявки, нашедшие свое место в расписании ρ*, из потока R изымаются, получаемый в результате поток обозначаем R 2; момент завершения обслуживания заявок, входящих в построенную к данному моменту начальную

174

часть расписания ρ*, обозначим Т(ρ*, 2). На третьем этапе заявки потока R 2, поступившие не позднее момента Т(ρ*, 2), переупорядочиваются в порядке убывания значений показателя µ(i), получаемый поток обозначаем R (2); далее рассматривается начальный отрезок потока R(2), содержащий p заявок, и т.д., вплоть до момента либо естественного завершения процесса, либо выполнения после некоторого k-го этапа условия Т (ρ*, k) t(n). При реализации последнего варианта заявки, не вошедшие в сформированную часть расписания, приписываются к ней справа в порядке убывания показателя µ(i).

Легко видеть, что верхней оценкой временной вычислительной сложности изложенного алгоритма (с учетом сортировок) является Сn log2 n, где С – не зависящая от n константа.

Существенна зависимость множителя С от выбора определяющих качество алгоритма значений параметров p и q. Пусть оптимальные решения получаемых частных задач с p заявками синтезируются методом динамического программирования. Тогда число элементарных операций, выполняемых при решении каждой частной задачи, прямо пропорционально р22 р. Общее число подлежащих решению задач с p заявками обратно пропорционально q. Получаем, что константа С прямо пропорциональна р22 р и обратно пропорциональна q. Чем больше значение p и меньше значение q, тем выше ожидаемое качество решения и тем больше трудоемкость алгоритма его синтеза.

Реально вместо изложенной канонической (p, q)-процедуры целесообразно применение ее естественных модификаций. Так в случае когда на некотором (k + 1)-м этапе в совокупность рассматриваемых р заявок подпотока входят только уже поступившие заявки, а первая поступающая позднее момента времени Т(ρ*, k) заявка имеет большее значение показателя µ(i), то эту заявку следует зачислить в число перспективных к включению на данном этапе.

Концепция (p, q)-алгоритма играет существенную роль и для периодов с относительно большим горизонтом планирования, когда точной может быть информация о моментах поступления

175

только идущих вначале заявок, для последующих заявок моменты прибытия известны как ожидаемые средние значения. Тогда реализация этапов синтеза (p, q)-алгоритмом расписания обслуживания ρ* синхронизируется с поступлением уточненных данных о моментах прибытия последующих заявок. С учетом периодичности поступления таких данных выбираются значения параметров p и q.

Идея следующего эвристического алгоритма, именуемого алгоритмом вставки, тоже достаточно проста. На первом этапе определяем оптимальную последовательность π1 обслуживания заявок 1 и 2 в предположении, что других заявок нет; при этом подсчитываются суммарные штрафы по двум указанным заявкам для обеих возможных последовательностей их обслуживания. На втором этапе: если заявка 3 поступает ранее момента завершения обслуживания первой в π1 заявки, подсчитываются суммарные штрафы для трех последовательностей, получаемых из π1 приписыванием заявки 3 к π1 слева, справа и ее вставкой в промежутке между первым и вторым элементом этой последовательности; если заявка 3 поступает между моментами завершения обслуживания первой и второй заявки последовательности π1, суммарные штрафы подсчитываются для двух последовательностей, получаемых из π1 приписыванием заявки 3 справа и ее вставкой между двумя имеющимися элементами последовательности; если заявка 3 поступает не ранее момента завершения обслуживания второй заявки последовательности π1, приписываем заявку 3 к π1 справа. Через π2 обозначаем ту из последовательностей, для которой суммарный штраф минимален. При определении расположения произвольной заявки k составленную на предыдущем этапе последовательность πk-2 разбиваем на две последовательные части π′k–2 и π*k–2, где π′k–2 – максимально возможная по числу элементов начальная часть такая, что реализация расписания π′k–2 завершается не позднее момента прибытия заявки k; далее из πk–2 путем вставки заявки k на место между частями π′k–2, π*k–2 и на все места правее указанного

176

получаем ряд последовательностей обслуживания; для каждой из полученных последовательностей вычисляем суммарный штраф, последовательность с минимальным значением суммарного штрафа обозначаем πk–1. Итогом работы алгоритма является последовательность обслуживания πn–1.

Оценка временной вычислительной сложности алгоритма вставки Сn2, где С – не зависящая от n константа.

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

Отметим возможность построения для канонической задачи однопроцессорного обслуживания алгоритмов локальной оптимизации. При этом k-окрестность произвольного расписания ρ образуют расписания, каждое из которых получается из ρ путем некоторого перераспределения мест между k заявками, в последовательности ρ идущими подряд. Начальный для процедуры локальной оптимизации вариант расписания может быть построен одним из ранее изложенных эвристических алгоритмов (например, (p, q)-алгоритмом или алгоритмом вставки).

Следует также отметить, что идеи, положенные в основу (p, q)-алгоритма и алгоритма вставки, легко адаптируются для синтеза расписаний обслуживания потоков заявок в системах с параллельными и последовательными процессорами. Соответствующие вычислительные процедуры могут входить и как отдельные модули в алгоритмы более сложной структуры.

Сейчас рассмотрим сформулированную в гл. 2 задачу синтеза расписания обслуживания потока поступающих в дискретном времени заявок R = {1, 2, ..., n} в системе, состоящей из m иден-

тичных параллельных процессоров Πj ( j =1, m ). Для этой зада-

чи в гл. 2 записаны рекуррентные соотношения динамического программирования, однако определяемый ими вычислительный процесс очень трудоемок и реально осуществим лишь при малом числе процессоров и небольшом количестве заявок в пото-

177

ке. Основанная на декомпозиции эвристическая процедура состоит в последовательном выполнении двух этапов.

На первом этапе строится расписание обслуживания ρ 0 – «нулевой» вариант искомого решения. При этом используется модифицированная на случай m параллельных процессоров многошаговая (p, q)-процедура, где p и q – относительно небольшие натуральные числа, q p < n. При реализации каждого шага этой процедуры с учетом того, что число p подлежащих обслуживанию заявок невелико, можно использовать метод динамического программирования.

В результате выполнении первого этапа мы получаем расписание ρ 0, которое разделяет поток заявок R = {1, 2, ..., n} на m подпотоков, заявки j-го подпотока должны обслуживаться про-

цессором Πj ( j =1, m ).

Второй этап – построение расписания обслуживания ρ1 путем решения m канонических задач однопроцессорного обслуживания. В подлежащей решению j-й задаче процессор Пj дол-

жен обслужить заявки j-го подпотока, j =1, m . Для решения ка-

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

178

Глава 4. ДИСКРЕТНЫЕ МНОГОКРИТЕРИАЛЬНЫЕ ЗАДАЧИ. МНОГОКРИТЕРИАЛЬНОЕ ДИНАМИЧЕСКОЕ ПРОГРАММИРОВАНИЕ

Важной особенностью многих проблем, возникающих в процессах принятия решений в системах планирования, управления и проектирования, является наличие нескольких показателей, по которым решения оцениваются. Рассмотренные в предыдущих разделах модели и методы в таких случаях оказываются недостаточными. В последние десятилетия значительное внимание уделяется изучению дискретных оптимизационных задач в многокритериальных постановках. При этом возникают вопросы – какие решения следует считать целесообразными (оптимально-компромиссными) и как эти решения строить. В данной главе излагается ряд подходов к решению многокритериальных задач, строятся соответствующие алгоритмы. Отметим, что по имеющейся исходной информации единственное целесообразное решение многокритериальной задачи определить, как правило, невозможно. Поэтому в процессах решения многокритериальных задач существенную роль играет лицо, принимающее решения (ЛПР). Именно ЛПР определяет тип решающей процедуры и при необходимости назначает ее параметры. В случае, если найдено многоэлементное множество оп- тимально-компромиссных решений, ЛПР осуществляет выбор одного из них.

4.1.Концепция Парето-оптимального решения и схемы компромисса между критериями

Пусть

max (Q1 (x),Q2 (x),..., Ql (x))

(4.1)

x D

 

– произвольная задача многокритериальной оптимизации. Век-

179

тор-функция Q(x) = (Q1 (x),Q2 (x), ..., Ql (x)) отображает область

допустимых решений D в множество DQ из l-мерного пространства критериев:

DQ ={Q | Q = (Q1 (x),Q2 (x), ..., Ql (x))},

где x D; элементы множества DQ именуются оценками. Каждая оценка Q(x) характеризует порождающее ее решение x. Два допустимых решения задачи (4.1) эквивалентны, если их оценки одинаковы. Обозначим через M произвольное множество оценок; оценка w = (w1, w2, …, wl) из M называется недоминируемой в M, если в этом множестве не найдется оценки w= (w1, w2, …,

wl) такой, что wi wi , i =1, l , причем по меньшей мере одно из

записанных неравенств выполняется как строгое. Недоминируемые в DQ оценки именуются эффективными (по Парето) [19]. Множество всех эффективных оценок образует обозначаемую через E область компромиссов рассматриваемой задачи, E DQ . Обратное отображение Q –1 совокупности E в область допустимых решений D определяет полную совокупность Па- рето-оптимальных решений. Очевидно, что любое целесообразное решение многокритериальной задачи должно быть Паре- то-оптимальным.

Первый подход к решению задачи (4.1) заключается в построении для нее полной совокупности эффективных оценок с одновременным обеспечением возможности восстановления по любой эффективной оценке Парето-оптимального решения, порождающего эту оценку. Подход универсален в следующем смысле: ЛПР получает возможность выбрать любое целесообразное решение, имея полную информацию о его характеристиках. Недостатком данного подхода является высокая вычислительная сложность проблемы синтеза полной совокупности эффективных оценок для задач большой размерности. Одной из причин сложности может быть большое количество эффективных оценок. Приведем два примера, показывающих, что количество эффективных оценок может иметь достаточно большой по-

180