Дискретные задачи оптимизации в экономике, планировании и управлении. Учебное пособие
.pdf
всевозможных 1 ≤ K ≤ L ≤ N. При этом оптимальные деревья на одном запросе (K = L) состоят из единственной вершины – корня, а оптимальные деревья на запросах M = L – K определяются через оптимальные деревья на запросах 1, …, M – 1. Таким образом, начав с отдельных вершин, за N циклов доберемся до искомого оптимального дерева. Для вычисления понадобятся также SKL = pK + ... + pL.
Рассмотрим построение оптимального дерева на примере. Допустим, жители 5 крупнейших российских городов получают информацию в общей поисковой системе о своем городе, причем количество запросов на одного жителя для всех городов одинаково и, следовательно, величины p1,... pN пропорциональны их населению, которое составляет на 1 января 2012 года (в млн человек) показателям, приведенным в табл. 3.4.
Таблица 3.4
|
Население городов |
|
|
|
|
Екатеринбург |
|
1,41 |
Москва |
|
11,61 |
Нижний Новгород |
|
1,26 |
Новосибирск |
|
1,50 |
Санкт-Петербург |
|
4,95 |
Оптимальные деревья для M = 1 и M = 2 очевидны (рис. 3.2). Для троек оптимальное дерево может быть получено при сравнении вариантов, например, для {Екатеринбург, Москва, Нижний Новгород} имеем три возможных дерева (рис. 3.3), для которых получаем соответственно P = S12 + POPT12 = 14,13, P = p1 + p3 = 2,67, P = S23 + POPT23 = 14,43.
Ек-бург |
Москва |
Н-Н. |
Новосиб. |
СПб |
|
Москва |
Москва |
Новосиб . |
СПб |
||
|
|
||||
Ек-бург |
|
|
Н-Н. |
Н-Н. |
Новосиб. |
|
|
|
Рис. 3.2. Выбор TOPT12 |
|
|
31
Ек-бург
Н-Н.
Москва |
Москва |
Москва |
Н-Н. Ек-бург Н-Н. Ек-бург
Рис. 3.3. Выбор TOPT13
Вопросы и упражнения
1.Во сколько раз увеличится количество вычислений (сложений и сравнений чисел) при:
1) увеличении планового периода в два раза?
2) увеличении срока службы оборудования с 4 до 6 лет?
2.Определите все возможные оптимальные траектории для рассмотренного в разделе 3.1.примера.
Решить задачу об оптимальной замене оборудования (автомобиля) при следующих условиях. Считать, что в зависимости от срока службы рыночная стоимость автомобиля составляет: при сроке службы 1 год – 60% от стоимости нового, при сроке службы 2, 3 и 4 года – соответственно 40%, 30%, 25%, а затраты на реализацию – 2%. Годовые затраты на эксплуатацию полагать равными по отношению
кстоимости нового автомобиля – для нового 10%, для послужившего 1, 2 и 3 года – соответственно 15%, 25% и 30%; использование свыше 4 лет запрещено. Определить оптимальный план приобретения и замены автомобилей на 8 лет.
Задайте поисковику в Интернете в качестве запроса слова и словосочетания «неориентированный граф», «орграф», «псевдограф», «мультиграф», «гиперграф». Считая количество найденных документов показателем частоты запросов, постройте на этих словах и выражениях оптимальное поисковое дерево.
32
4.ЗАДАЧА СЕТЕВОГО ПЛАНИРОВАНИЯ КАК ОПТИМИЗАЦИОННАЯ ЗАДАЧА НА СЕТИ
Ей наверняка приходилось затрачивать массу времени на то, чтобы судить народ Израиля. Где же она находила время для ведения домашнего хозяйства, для супруга? Я не могу ответить на этот вопрос за Девору, но у меня есть ответ для тех жен, которые работают сегодня. Планирование!
Пегги Масгроу. «Женщины в Библии»
4.1. Постановка задачи. Сетевой график
Задача сетевого планирования есть задача оптимального по времени выполнения комплекса взаимосвязанных работ (проекта). В ходе решения этой задачи определяются моменты начала и окончания каждой работы.
Исходными данными для ее решения являются:
1)продолжительность каждой работы:
2)взаимосвязь некоторых работ во времени.
Эта взаимосвязь рассматривается в единственной форме: для некоторых работ (практически это большинство работ) выделяются множества предшествующих работ, среди которых выделяются подмножества непосредственно предшествующих работ. Каждая работа может быть начата только тогда, когда выполнены все предшествующие работы. Непосредственно предшествующими работами для работы i являются те, которые не являются предшествующими для какой-либо из работ, предшествующих i. Из данного определения вытекает, что для начала работы i достаточно выполнения множества ее непосредственно предшествующих работ I1i.
|
|
Таблица 4.1 |
|
|
Данные о работах для планирования |
||
|
|
|
|
Работа |
Предшествующие работы |
Продолжительность |
|
1 |
– |
10 |
|
2 |
– |
9 |
|
3 |
1 |
8 |
|
4 |
1,2 |
10 |
|
5 |
1,2 |
18 |
|
6 |
3,4 |
9 |
|
33
Естественным изображением комплекса работ в их взаимосвязи кажется его представление в виде орграфа с узлами-работами и дугами, выражающими последовательность работ. Такое изображение называется моделью «узел-работа» (рис. 1.4).
1 |
3 |
4
2

6 5 
Рис. 4.1. Модель «узел-работа»
Тем не менее гораздо чаще используют другое графическое представление, называемое моделью «дуга-работа». Что касается узлов, они представляют собой события окончания совокупности непосредственно предшествующих работ для какой-либо работы или группы работ.
Это представление оказывается не вполне симметричным, приходится вводить фиктивные работы. Тем не менее именно такое представление делает задачу сетевого планирования типичной задачей оптимизации на сетях, рассмотрение которых было начато в предыдущем разделе. Общие черты постановки и решения таких задач состоят в следующем:
1.Условия задачи определяет некоторый связный граф или мультиграф (ориентированный или неориентированный), всем ребрам которого приписываются определенные веса.
2.На вершинах последовательно, начиная с выделенной вершины, определяется некоторая величина (функция Беллмана), выражающая наилучший достижимый результат для частичной задачи.
3.Функция Беллмана определяется для очередной вершины через ее значения в смежных вершинах (т.е., в математической терминологии – рекурсивно). Метод решения определяет порядок расчета вершин.
В рассматриваемой нами задаче функцией Беллмана является самый ранний возможный срок наступления события. Для финальной вершины, означающей завершение проекта, функция Беллмана выражает основную искомую величину – минимальный срок его выполнения.
34
Подчеркнем, что ранее решенные задачи об оптимальной замене оборудования и об оптимальном поисковом дереве решались именно по такой схеме. В первой задаче сеть (орграф) был изображен на рис. 3.1, функцией Беллмана являются совокупные затраты с начала планового периода, рекуррентной формулой для ее расчета является (3.2).
Во втором случае граф явно не выписывался, но без труда может быть определен. Вершинами графа являются диапазоны значений (например, «Екатеринбург», «Екатеринбург, Москва, Нижний Новгород, Новосибирск», «Москва, Нижний Новгород»), связи между ними выражают отношение вхождения меньшего диапазона в больший (здесь первый и третий входят во второй), а функцию Беллмана здесь нужно понимать расширительно, как оптимальное дерево для этого диапазона значений. Рекуррентное соотношение для функции Беллмана означает выбор оптимального дерева из альтернативных вариантов, порождаемых тройками (левое поддерево, корень, правое поддерево) при всевозможных выборах значения для корня в диапазоне (например, «Нижний Новгород» для второго). Здесь левое поддерево является ранее построенным оптимальным деревом для левого поддиапазона (слева от значения для корня), а правое – для правого поддиапазона, так что сформулированный рекурсивный порядок расчета имеет место и здесь.
Рассмотрим получение сетевого графика на основе отношения непосредственного предшествования. Сетевой график – это, вообще говоря, взвешенный мультиорграф, поскольку несколько работ могут вестись параллельно. Веса его ребер – продолжительности работ. Фиктивные работы имеют нулевую продолжительность. Для расчета минимальной продолжительности проекта он может быть упрощен до орграфа, в котором из параллельных ребер выбрано ребро с максимальной продолжительностью. Порядок его построения таков:
1.Для каждой работы i представить множество предшествующих I1i работ в виде упорядоченной последовательности. Выявить совокупность всех различных таких наборов работ I1i (для чего лексикографически упорядочить их). В рассмотренном примере таких последовательностей три ({1}, {1,2} и {3,4}).
2.Связать с каждым из наборов работ вершину сетевого графика. Связать вершину также с событием окончания каждой работы, кроме работ, которые не являются последующими ни для каких других работ. Добавить в сетевой график еще две вершины: начальную и конечную, первую – как начальную для работ, которым не предшествуют никакие работы, вторую – как конечную для работ, которые не
35
предшествуют никаким работам. В рассмотренном примере имеются вершины «начало», «конец», «1к», «2к», «3к», «4к» «5к», «6к», а также «3н», соответствующая окончанию работы 1 и началу работы 3, «4, 5н», соответствующее окончанию работ 1 и 2 и началу работ 4
и5, «6», соответствующее окончанию работ 3 и 4 и началу работы 6.
3.Связать вершины ребрами – работами. Соединить вершину «начало» с вершинами, соответствующими окончанию работ, не имеющих предшествующих, ребрами, соответствующими этим работам. Соединить события начала каждой группы работ, имеющих один и тот же набор предшествующих работ, с событиями окончания каждой из этой группы работ. В результате получим несвязный граф, представленный на рис. 4.2.
1к |
4,5н |
3к |
|
|
6н |
Начало |
|
4к |
2к |
3н |
конец |
Рис. 4.2.
4. Добавим ребра-фиктивные работы – от вершины окончания работ к вершинам начала работ, для которых они являются непосредственно предшествующими (рис. 4.3).
1к |
3н |
3к |
|
|
6н |
начало |
|
4к |
2к |
4,5н |
конец |
Рис. 4.3.
5. Заменить поочередно все последовательности «дуга–фиктивная работа» – «вершина» – «дуга–действительная работа» или «дуга– действительная работа» – «вершина» – «дуга–фиктивная работа» на «дуга–действительная работа», если вершина инцидентна только этим двум дугам. Перенумеровать оставшиеся вершины.
36
В рассмотренном примере в результате исчезают вершины «3н» с входящими дугами–фиктивными работами, а потом «2к», «3к» и «4к» с исходящими дугами–фиктивными работами. В результате сетевой график упрощается до представленного на рис. 4.4.
23
|
1 |
|
4 |
|
|
6 |
|
|
|
|
|
1 |
|
|
4 |
|
|
2 |
5 |
|
|
|
3 |
5 |
|
Рис. 4.4.
Заметим, что в результате построения сетевого графика мы определили не только множества событий, но и отношения (непосредственного) предшествования и (непосредственного) следования между ними, т.е. для каждого события j определили множества непосредственно предшествующих и непосредственно последующих событий (J1j и J2j).
4.2. Метод критического пути
Метод критического пути выявляет ту последовательность работ, начинающуюся в момент начала проекта, которая имеет наибольшую продолжительность и тем самым определяет продолжительность проекта. Вначале последовательно, от начала к концу проекта для каждого события определяют так называемый ранний срок его наступления, т.е. самый ранний момент времени, когда можно приступить к работам, начинающимся этим событием. Ранний срок наступления события окончания проекта и равен искомой минимальной продолжительности проекта.
Потом производят вычисления от конца проекта так называемых поздних сроков наступления событий, т.е. самых поздних моментов времени, при которых выполнение последующих работ закончится не позже минимального времени.
Ранний срок является самым ранним возможным моментом окончания последней из работ, завершающихся этим событием. Следовательно, для его вычисления необходимо знать ранние сроки наступления всех событий, начинающих работы, завершающиеся данным событием.
37
Сроки наступления событий принято отсчитывать от начала проекта, хотя это и несущественно. Поэтому
Tр1 = 0. |
(4.1) |
События можно разделить по этапам (K0,…, KM). Событие нулевого этапа – начало проекта (J11 = ). Для событий первого этапа J1j = K0 = {1}. Каждое событие j произвольного k-го этапа – это событие, для которого все предшествующие события относятся к предшествующим этапам. Формально это условие записывается как
J1 j K0 K1 ... Kk −1.
В рассмотренном выше примере K1 = {2}, так как только для этого события непосредственно предшествующим является лишь начало проекта. Далее видно, что K2 = {3}, K3 = {4}, K1 = {5}.
Отсюда вытекает простой способ определения Tрj. Если известны все
Tрj, j K0 K1 ... Kk 1, то для любого j Kk каждая работа, оканчи-
−
вающаяся j-м событием, а начало – событие l K0 K1 ... Kk 1,
−
может быть закончена начиная с момента времени Tрl + tlj. Когда все эти работы закончены, происходит j–е событие. Поэтому для вычисления Tрj используется формула
Tрj = max {Tрl + tlj | l J1j}, j Kk, k = 1, …, M. |
(4.2) |
Система соотношений (4.1) – (4.2), если последние записывать в виде последовательности M групп соотношений (для k = 1,…, M), представляет собой каноническую форму применения метода динамического программирования. Для ее фактического применения требуется разделять события по этапам.
Однако можно организовать процесс вычислений, чтобы каждая из формул (4.2) применялась лишь один раз, но при этом не было необходимо явно разделять события по этапам.
Определим для каждого события количество предшествующих N1j, для которых значения Tрj еще не определены. В начале N11 = 0, N1j > 0 при всех j > 1. Алгоритм состоит в следующем:
1.Определяем Tр1 = 0 и для всех l J21, полагая N1l = N1l-1.
2.На очередном цикле находим первую по номеру вершину, для
которой N1j = 0, но Tрj не вычислено, вычисляем Tрj по формуле (4.2)
идля всех l J2j полагаем N1l = N1l-1.
3.Процесс завершается, когда не осталось вершин без определенного значения Tрj.
38
Оказывается, что при выполнении алгоритма вершины вычисляются в порядке принадлежности к K0,…, KM.
Рассмотрим его применение на нашем примере. Для нашего случая N1j = 1 для j = 2, а для j = 3,4,5 N1j = 2.
После первого шага алгоритма изменяются значения N1j: N12 = 0, N12 = 1.
На первом цикле имеем единственную вершину со значением N1j = 0. По формуле (4.2) получаем Tр2 = Tр1 + t1 = 10. Теперь N13 = 0, N14 = 1.
На втором цикле N1j = 0 при j = 3. Получаем Tр3 = max {Tр1 + t2, Tр2} = 10. Теперь N14 = 0, N15 = 1.
На третьем цикле N1j = 0 при j = 4. Получаем Tр4 = max {Tр2 + t3, Tр3 + t4} = 20, N15 = 9.
На четвертом цикле N1j = 0 при j = 5. Получаем Tр5 = max {Tр3 + t5, Tр4 + t6} = max {10 + 18,20 + 9} = 29.
Теперь не осталось ни одной вершины с неопределенным значением Tрj. Следовательно, алгоритм завершается.
Из характера взаимосвязей между сроками можно прийти к выводу, что некоторые работы можно сдвинуть во времени без увеличения времени выполнения проекта. Ясно также, что такая возможность существует не для всех работ. Ведь если начало каждой из работ мы отодвинем по отношению к моменту начального события для нее не менее чем на T > 0, то события этапа K1 отодвинутся не менее чем на
T, этапа K2 – не менее чем на 2 T и т.д., а проекта в целом – не менее чем на M T. Совокупность этих работ образуют критический путь от начального до конечного события, в котором никакая работа не может быть сдвинута во времени. Возможно наличие нескольких критических путей, но каждая работа, которую нельзя сдвигать во времени, принадлежит хотя бы одному критическому пути. Для расчета возможных временных резервов (или их отсутствия) для всех работ вводится понятие позднего срока наступления события Tпj. Для определения его используются аналогичные (4.1) –(4.2) рекуррентные соотношения, рассчитываемые от конца проекта к его началу:
Tпm = Tрm; Tпj = min {Tпl – tjl | l J2j}, j = m – 1, …, 1,
порядок расчета которых аналогичен, но в обратном времени. При этом всегда получается Tп1 = 0.
Врассматриваемом примере последовательность определения Tпj
иих значения будут следующими:
39
Tп5 = 29; Tп4 = Tп5 – t6 = 20;
Tп3 = min {Tп5–t5, tп4–t4} = min {29–18, 20–10} = 10;
Tп2 = min {Tп4–t3, Tп3} = min {20–8, 10} = 10.
Оказалось, что все поздние сроки событий совпали с ранними, что не характерно для проектов и в данном случае скорее связано с малым количеством работ проекта. Таким образом, никакое событие нельзя сдвинуть во времени без увеличения времени выполнения проекта в целом.
Тем не менее в отношении отдельных работ это не так, некоторые работы сдвинуть можно. Независимым резервом времени работы называется то максимальное время, на которое может быть сдвинут момент ее окончания безотносительно ко времени выполнения остальных работ, чтобы время выполнения проекта не увеличилось. Для работы, начинающейся событием i и заканчивающейся событием j, он рассчитывается по формуле
Dнезавис ij = max {Tpj – Tпi – tij, 0}.
Формула имеет такой смысл: если начальное событие состоится в поздний срок, а заключительное – ранний, то разница между этими временами составляет гарантированный промежуток времени, в течение которого работа может быть выполнена. Если она превышает продолжительность работы, то работа имеет гарантированный резерв времени.
В данном примере он существует для второй и пятой работы и составляет соответственно 10 – 0 – 9 = 1 и 29 – 10 – 18 = 1. Остальные работы никаких временных резервов не имеют. Они образуют два критических пути – 1) 1-я, 3-я, 6-я работы и 2) 1-я, фиктивная, 4-я и 6-я работы.
Полный резерв времени вычисляется по формуле
Dполн ij = Tпj – Tрi – tij.
Таким резервом можно воспользоваться, только если предшествующие события происходили в свои ранние сроки, а для последующих работ резервов, кроме независимого, не остается, так как завершающее работу событие должно произойти в свой поздний срок. В данном случае, поскольку ранние и поздние сроки всех событий совпадают, полный резерв совпадает с независимым. В более общем случае полный резерв делят между собой работы, образующие последовательность.
40
