II. Пример.

Для решения транспортной задачи используют распределительный метод, реализуемый на основе алгоритма:

1. Формирование таблицы исходных данных в виде

Таблица 1

  В1 В2 В3 В4 В5 Наличие
А1
А2
А3
Потребность

 

А1, А2, А3 - пункты отправления груза, n = 3.

B1, B2, B3, B4, B5 - пункты назначения груза, m = 5.

В столбе "Наличие" - какое количесвто груза в каждом пункте отправления А1, А2, А3.

В строке "Потребность" - потребности в этом грузе каждого пункта назначения.

Модель задачи "Закрытая", так как суммы потребностей и возможностей (наличия) равны 1600.

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

2. Аналитическая форма модели имеет вид

(6)

 

х11 + х12 + х13 + х14 + х15 = 300

х21 + х22 + х23 + х24 + х25 = 400 (7)

х31 + х32 + х33 + х34 + х35 = 900

 

х11 + х21 + х31 = 250

х12 + х22 + х32 = 300

х13 + х23 + х33 = 350 (8)

х14 + х24 + х34 = 500

х15 + х25 + х35 = 200

 

 

3. Выполнение правила "Северо-Западного угла": Распределение груза начинается с левого верхнего угла и заканчивается правым нижним углом исходной (транспортной) таблицы.

3.1 При этом для получения исходного базисного решения должны выполняться условия:

- количество компонент не должно превосходить числа n + m - 1,

- должны соблюдаться ограничения (2) и (3).

3.2 Осуществление распределения груза между пунктами отправления и назначения:

- из А1 и В1 отправляется 250 единиц груза, то есть потребность В1 полностью удовлетворена,

- остаток груза в А1 (50 единиц) направляется в В2 и для полного удовлетворения его потребности из А2 отправляется 250 единиц груза из имеемых 400 (остаток в А2 150 единиц),

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

 

1 2 3 4 5 Таблица 2.

    В1 В2 В3 В4 В5 Наличие
А1 2 250 4 50
А2 6 250 3 150
А3 2 200 1 500 10 200
  Потребность

 

3.3 Получение плана перевозок путем подсчета затрат на его реализацию:

- перемножение транспортных тарифов (верхний левый угол таблицы на объем перевозок

500 200 450

1500 400

500 2000

- найти сумму

Z = 500 + 200 + 1500 + 450 + 400 + 500 + 2000 = 5550

4. Выполнение правила "наименьшего элемента в строке" (или "наименьшего элемента в столбце"): первоначально по строкам (по столбцам) заполняются те клетки исходной таблицы, то есть выбираются те маршруты перевозки грузов, для которых затраты на перевозку минимальны в строке (в столбце).

4.1 Заполнение клеток таблицы, в которых минимальны затраты первозок единицы груза (если одинаковы, то предпочтение выбору маршрута произвольно). В этом случае опорный план, составленный по правилу "наименьшего элемента", имеет вид

Таблица 3.

  В1 В2 В3 В4 В5 Наличие
А1 4 250 9 50
А2 1 250 4 150
А3 3 50 2 350 1 500
Потребность

 

4.2 Определение суммы

Z = 250 + 1000 + 150 + 700 + 500 + 450 + 600 = 3650 - это базисное решение (базисный план)

5 Проверка базисного решения на оптимальность, для чего вводятся два понятия:

1) цикл (замкнутый) свободной клетки -это последовательность клеток (i, j), котоая начинается со свободной (пустой) клетки и ею же заканчивается, причем в каждой строке и в каждом столбце при построении цикла должны быть использованы две и только две клетки (при этом: никакая последовательность занятых клеток не образует цикл и каждой свободной клетке соответствует единственный цикл);

2). оценка овободной клетки -разность между суммами тарифов cij в клетках цикла со знаком "+" и со знаком "-" (клетки цикла, начиная с пустой, обозначаются чередующимися знаками +, -, +, - и так далее)

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

5.2 Построение циклов пустых клеток для табл. 2, осуществляя движение против движения часовой стрелки (можно по движению)

- в табл. 2 восемь сводобных клеток с индексами (1,3), (1,4), (1,5), (2,1), (2,4) (2,5), (3,1), (3,2),

- циклы пустых клеток:

1.

2.

3.

4.

5.

6.

7.

8.

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

5.2. Определение сумм тарифов стоящих в клетках циклов со знаком "+" и знаком "-":

- со знаком "+" (5+6); (7+6+3); (9+6+2+10); (1+4); (5+2); (4+2+10); (6+3+1); (3+6)

- со знаком "-" (4+3); (4+3+1); (4+3+1); (6+2); (3+1); (3+1); (2+6+2); (2+6)

5.3. Определение разностей

V1,3 = (5+6) - (4+3) = 4

V1,4 = (7+6+3) - (4+3+1) = 16 - 8 = 8

V1,5 = (9+6+2+10) - (4+3+1) = 19

V2,1 = (1+4) - (6+2) = -3

V2,4 = (5+2) - (3+1) = 7 - 4 = 3

V2,5 = (4+2+10) - (3+1) = 16 - 4 = 12

V3,1 = (6+3+1) - (2+6+2) = 10 - 10 = 0

V3,2 = (3+6) - (2+6) = 9 - 8 = 1

Так как среди Vij есть отрицательная V2,1 = -3, то исходный план перевозок может быть улучшен.

6. Улучшение исходного плана:

- в цикле свободной клетки с минимальной отрицательной оценкой Vij (если таких оценок больше одной) выбирается минимальное значение груза в клетках со знаком "-" и помещается в свободную клетку;

- так как в 1,1 и 2,2 одинаковое количество груза по 250 единиц, то в свободную клетку 2,1 помещается 250 единиц груза;

- перераспределение груза по циклу: найденное минимальное количество груза добавляются к грузу в клетках со знаком "+" и вычитается из груза в клетках со знаком "-",

то есть в клетке 1,2 будет 300 единиц груза, а клетки 1,1 и 2,2 окажутся пустыми;

- выполнение п.5 - проверка оптимальности нового плана

  В1 В2 В3 В4 В5 Наличие
А1 4 300
А2 1 250 3 150
А3 2 200 1 500 10 200
Потребность

 

путем подсчета оценок свободных клеток Vij ;

- вычислительный процесс продолжается до тех пор пока все оценки свободных клеток станут положительными или равными нулю.

 

 

Пример 5.

Сетевое планирование.

I.Пусть есть конечное множество X = {xi}, xi Î Х. Тогда можно получить граф G = {X, Г), где Г - закон соответствия множества Х графу G. Если X = {А, В, С, D, E) и ГА = {B, C, D}, ГB = {B}, ГC = {B, D, E}, ГD = {A, C} и ГЕ = О, то можно дать графическое и табличное представления графа

 

 

Основные понятия и определения:

Вершиной - графа называется элемент множества, образующего граф.

Дугой графа - ориентированная пара вершин графа.

Путем на графе - последовательность сцепленных дуг, позволяю­щих пройти из одной вершины

в другую.

Контуром - путь, начальная вершина которого совпадает с конечной.

Петля - дуга, начало и конец которой совпадают.

Ребром - неориентированная дуга, т. е. дуга, у которой не указано направление движения.

Цепь - сцепленная последовательность ребер или дуг.

Связный граф - между каждой парой его вершин существует хотя бы одна цепь.

Предок вершины - вершина, из которой выходит дуга, входящая в данную вершину.

Потомок вершины - вершина, в которую входит дуга, исходящая из данной вершины.

Граф G - множество вершин V, соединенных множеством ребер R, то есть G={V, R}.

Ориентированный граф (орграф) G - множество вершин V, соединенных множеством дуг D, то есть G={V, D}.

II.Для связного графа без контуров решается задача декомпозиции его вершин на слои так, чтобы:

1). все элементы (вершины) данного слоя не имели предков в предыдущем слое, а элементы последнего слоя - потомков;

2). порядок вершин внутри одного и того же слоя безразличен.

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

 
 

Пусть имеется орграф без контуров вида (Рис.1):

     
 
1. Вершина А не имеет предков - она образует 1-й слой. Вершину вычеркивают вместе с дугами, которые из неё выходят, и получают новый орграф вида Рис.2.
 
 
3. Вершина G не имеет предков, то есть образует 3-й слой. Вершину G вычеркивают вместе с исходящими из неё дугами и получают новый орграф вида Рис.4
 
 

         
 
2. На полученном орграфе вершины C, D, B не имеют предков, то есть они образуют 2-й слой. Вершины C, D, B вычеркивают вместе с дугами, изходящими из них и получают новый орграф вида Рис.3
 
 
3. Вершина G не имеет предков, то есть образует 3-й слой. Вершину G вычеркивают вместе с исходящими из неё дугами и получают новый орграф вида Рис.4
 
   
4. Вершины E, F не имеет предков, то есть образуют 4-й слой. Вершины E, F вычеркивают вместе с исходящими из них дугами и получают новый орграф вида Рис.5

   
 
5. Вершины H, L не имеют предков, то есть образуют 5-й слой. Вершины H, L вычеркивают вместе с исходящими из них дугами и получатют новый орграф в виде Рис. 6
 
 
6. Вершина К не имеет предков, то есть образует 6-й слой. Вершину К вычеркивают вместе с исходящей из неё дугой и остается вершина, не имеющая предков, то есть образующая 7-й слой. Рис. 7 - последний, так как у вершины М нет потоков.
 
 

 
 

 


В результате проведенной декомпозиции исходный орграф (Рис.1) можно представить в упорядоченном виде, то есть в виде слоев (Рис.8), что упрощает анализ структуры графа.

 

 

С E H

А D G F L K M

B

 

Слои 1 2 3 4 5 6 7

Рис.8

 

III. Проект -совокупность действий, выполнение которых необходимо для достижения некоторой цели (наступления события), причем длительность реализации (выполнения) каждого действия известна и они связаны отношением порядка (обязательным предшествованием).

Ход выполнения проекта иллюстрируют сетевым графиком, представляющим собой взвешенный орграф, в котором вершины - это события от Е1 до Еn, которые должны возникать по мере осуществления проекта, а дуги - это переходы от одного события Еi к другому Ej, то есть процессы выполнения действий Pij .Дугам приписывают продолжительности ваыполнения соответствующих действий (часы, дни, недели, месяцы и т.п.) - этим определяется взвешенность орграфа (сетевого графика осуществления проекта).

 

 

       
 
   
На Рис.9 представлен фрагмент сетевого графика, который соответствует части проекта строительства объекта. Событие Е1 - "начало выполнения проекта". Событие Еn - "окончание выполнения проекта".  
 

 

 


Рис.9

 

Например, событие Е8 - "начало закладки фундамента", а действия, предшествующие этому событию: (Р4,8) - "рытье котлована под фундамент" и (Р6,8) - "подвозка железнодетонных блоков для фундамента". Продолжительность Р4,8 10 временных единиц, а Р6,8 – пять.   .

 

 


Из сетевого графика проекта (Рис.10) видно:

1) от события Е1 к событию Еn можно пройти различными путями;

2) наступление каждого последующего события может произойти только тогда, когда будет завершено самое продолжительное действие, обуславливающее его наступление;

3) самый длинный путь в сетевом графике определяет кратчайшие сроки осуществления проекта - это критический путь;

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

 

IV.Пусть в результате декомпозиции полного сетевого графика на слои выделен некоторый k-й слои, взвешенный орграф которого представлен на Рис.10.

 

 
 


 

Рис. 10

 

Алгоритм определения времени насатупления событий Е2…Е12:

1. Событию Е1 приписывается t1 = 0.

2. Для каждой вершины Е2…Е12 рассматриваются дуги, которые из неё выходят.

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

4. Сравниваются результаты, выбирается из них наибольший и приписывается вершине (событию), соответствующей концу дуги.

Пример:

1.Из Е1 выходят три дуги: Р1,2 с весом 8, Р1,3 с весом 13 и Р1,4 с весом 9. Так как для Е1 принято t1 = 0, то 0+8=8, 0+13=13, 0+9=9 и, следовательно, событию Е3 приписывается t3 = 13, а дуга Р1,3 входит в критический путь.

1. Из Е3 входят четыре дуги: Р3,4, Р3,8, Р3,9 и Р3,6 , но Е3 непосредственно связано с Е4, следовательно, в критический путь входит дуга Р3,4 с весом 7, а время наступления события Е4 равно t4 = 13+7=20, кроме того Р1,33,4 = 20, Р3,8 = 6, Р3,9 = 9 и Р3,6 = 12, то есть выбирается Р1,3 + Р3,4 =20.

2. Из Е4 выходят три дуги Р4,7 с весом 8, Р4,10 с весом 6 и Р4,8 с весом 9. Так как t4 = 20, то 20+8=28, 20+6=26, 20+9=29 и, следовательно, событию Е8 приписывается t8=29, а дуга Р4,8 входит в критический путь.

3. Из Е8 выходят три дуги Р8,7 с весом 8, Р8,10 с весом 13 и Р8,11 с весом. Так как t8=29, то 29+8=37, 29+13=42, 29+5=34 и, следовательно, событию Е10 приписывается t10=42, а дуга Р8,10 входит в критический путь.

4. Из Е10 выходят две дуги Р10,11 с весом 6 и Р10,12 с весом 17, но Е10 непосредственно связано с Е11, следовательно, в критический путь входит дуга Р10,11 с весом 6, а время наступления события Е11 равно t11=42+6=48, кроме того Р10,1111,12=19, а Р10,12=17, то есть выбирается Р10,1111,12=19.

5. Из Е11выходит только одна дуга Р11,12 с весом 13, она и входит в критический путь.

Следовательно, проект может быть реализован, то есть наступят все 12 событий, за 61 единицу времени. Действия, соответствующие дугам Р1,3, Р3,4, Р4,8, Р8,10, Р10,11, Р11,12, составляют критический путь : Е1, Е3, Е4, Е8, Е10, Е11, Е12.

V. Следует обозначить ti - ранний срок (ожидаемое время) наступления события Еi. a t*i - предельный срок (предельное время) наступления события Еi , превышение которого приведет к увеличению времени реализации всего проекта. При этом, следует учесть, что для критических событийц (Е1, Е3, Е4, Е8, Е10, Е11, Е12 на Рис.10) должно выполняться условие t*i = ti, так как такое событие не допускает никакого запаздывания в сроках его наступления, то есть критические действия (Р1,3, Р3,4, Р4,8, Р8,10, Р10,11, Р11,12 на Рис.10) не допускают никакой зедержки в их выполнении.

Резервным интервалом события Еi (интервалом свободы события) [ti. t*i] называют интервал времени, в течении которого может наступить событие Еi без изменения общего времени реализации проекта tn . Определение резервных интервалов событий осуществляется по сетевому графику (Рис.10), идя от конечного события Е12, то есть снизу вверх.

Пример:

1. Наступление события Е7 отделено от наступления события Е10 действием длительностью 4 единицы времени, то есть действие Р7,10 может начатся за 4 единицы времени до наступления события Е10. Следовательно, событие Е7 должно произойти в интервале [37, 42-4=38].

2. Наступление события Е9 отдельно от наступления события Е11 на 5 единиц времени и поэтому событие Е9 должно прроизойти в интервале [33, 48-5=43].

3.Событие Е6 отделяет от события Е9 действие Р6,9, выполняемое за 8 единиц времени, от события Е8 - 3 единицы времени, от события Е7 - 5 единиц времени. Производится сравнение 33-8=25, 29-3=26, 37-5=32. Наименьшая из сравниваемых величин и есть верхняя граница интервала [23, 25].

4. Событие Е5 отделяется от события Е9 три единицы времени, то есть резервный интервал для события Е5 равен [17, 33-3=30].

5. Событие Е2 отделяет от Е5 и Е6 соответственно 9 и 6 единиц времени, тогда 17-8=9, 23-6=17 и, выбирая наименьшее значение, получают резервный интервал для Е2 равный [8, 9].

Следовательно, моменты наступления событий Е2, Е5, Е6, Е7, Е9 могут быть в следующих интервалах:

Е1: 0,Е2: [8, 9], Е3: 13, Е4:20, Е5: [17, 30], Е6: [23, 25],

Е7: [37, 38], Е8:29, Е9: [33, 43], Е10:42, Е1148, Е12:61,

а на критическом пути интервалы сводятся к точечным моментам времени.

VI.Для каждого действия Рij необходимо определить какая задержка модет быть допущена при его выполнении без того чтобы это привело к нарушению срока наступления события Еj. Для каждого действия существует три резерва времени:

1) свободный резерв времени - это возможная отсрочка начала выполнения действия, обозначается R1ij, то есть если ti и tj - ожидаемые сроки наступления событий Еi и Еj, между которыми происходит действие Рij длительнотью tij , то

R1ij = tj - ti - tij;

свободный резерв времени критических действий равен нулю, так как они не могут быть задержаны;

2) полный резерв времени действия Рij определяется по формуле

R2ij =t*j - ti - tij;

3) независимый резерв времени действия Рij определяется по формуле

R3ij = tj - t*i - tij;

или, чтобы не получать отрицательныхз значений R3ij = max (0, tj - t*i - tij).

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

Существенное различие между резервным интервалом события Еi и свободным или полным резервом действия Рij состоит в том, что:

- резервный интервал события - это запаздывание, которое может быть допущено в наступлении события Еi без изменения фиксированных сроков наступления критических событий и, в частности, конечного, то есть без изменения tn,

- свободный резерв действия - это отсрочка начала выполнения действия Рij без изменения ожидаемого срока наступления события Еj, а полный резерв действия - это максимально допустимая отсрочка начала выполнения действия Рij .

Пример:

1. В предыдущем примере определено, что интервал свободы события Е6 есть [23, 25]. Тогда свободный резерв действия Р6,9 равен

R16.9 = t9 - t6 - t6.9 = 33 - 23 - 8 = 2 единицы времени.

Следовательно, действие Р6,9 может начаться в момент 23+2=25 без изменения времени (срока) наступления события Е9, который равен t9 = 33 единицы времени.

Аналогично определяются свободные резервы времени для всех остальных действий.

2. Полный резерв действия Р6,9 равен

R26.9 = t*9 - t6 - t6,9 = 43 - 23 - 8 = 12

 

Следовательно, действие Р6,9 может начаться в момент 23+12=35, не вызывая задержку в реализации проекта.

3. Независимый резерв действия Р6,9 равен

R36.9 = t9 - t *6 - t6,9 = 33 - 25 - 8 = 0.

 

 

Пример 6.