Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2014 Методы решен. оптимиз. задач.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

5.5 Оптимизация плана комплексных работ

В предыдущих подразделах для анализа сети был рассмотрен метод критического пути (МКП), при реализации которого продолжительности работ предполагались заданными (фиксированными). Последующие возможные увеличения продолжительностей работ осуществлялись в пределах найденного с помощью МКП значения длины критического пути и без учета высвобождающихся при этом затрат. В этом разделе рассмотрим оптимизационные задачи, возникающие после применения МКП в случае необходимости изменения Tкр.

Предположим, что в сетевом графике продолжительность каждой работы (i,j) не фиксирована, а лишь известен интервал ее изменения [Lij,Uij,]. Обозначим продолжительность работы (i,j) переменной yij. Тогда, yijÎ[Lij,Uij,]. Изменение продолжительности работы либо требует дополнительных затрат, если имеется в виду ее более быстрое исполнение, либо приводит к уменьшению затрат, если наблюдается увеличение продолжительности. Будем считать, что зависимость затрат от продолжительности работ линейна, то есть затраты на выполнение работы (i,j) равны bij-aijyij, где bij³0, aij³0.

Очевидно, что затраты на выполнение всего проекта будут минимальны при yij=Uij. Полагая yij=Uij найдем длину критического пути Tвкр. Если нас не устраивает полученное значение времени исполнения проекта Tвкр, то можно попытаться его уменьшить. Для этого необходимо уменьшить, по меньшей мере, продолжительность критических работ, что потребует дополнительных затрат. Обозначим желаемую продолжительность исполнения проекта T0. Пусть ti- неизвестный нам момент наступления i-го события. При сделанных допущениях можно построить математическую модель, предназначенную для минимизации общей стоимости проекта, продолжительность исполнения которого не больше T0. Математическая модель имеет вид

S (bij-aijyij)® min

(i,j)ÎS ti,yij

ti +yij £ tj для всех (i,j)ÎS, (3)

tn- t0 £ T0,

Lij £ yij £ Uij для всех (i,j)ÎS,

где S есть множество всех дуг сети.

Задача (3) позволяет найти оптимальные значения продолжительностей работ yij при заданных продолжительности проекта T0, отношениях предшествования, верхних и нижних пределах продолжительности каждой работы.

Задача линейного программирования (3) эквивалентна задаче (4)

S aijyij® max

(i,j)ÎS ti,yij

ti -tj+yij £ 0 для всех (i,j)ÎS, (4)

-t0 +tn £ T0,

Lij £ yij £ Uij для всех (i,j)ÎS.

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

Этот результат позволяет в ситуации, когда T0>Tпкр, рассматривать вместо задачи (4) более простую задачу (5)

S aijyij® max

(i,j)ÎКр ti,yij

ti -tj+yij£0 для всех (i,j)ÎКр, (5)

-t0+tn £T0,

Lij £ yij £ Uij для всех (i,j)ÎКр, где Кр – множество дуг, принадлежащих критическим путям.

Если критический путь единственен, то задачу (5) можно упростить. Для этого перенумеруем работы, лежащие на критическом пути, 1,2,…,k. Обозначим продолжительности этих работ xi для i=1,2,…,k. Величины aij, отвечающие критическим работам, назовем ci.

Тогда задачу (5) можно переписать в виде непрерывной задачи о ранце с двухсторонними ограничениями на переменные.

k

S cixi® max

i=1 xi

k

S xi £ T0 (6)

i=1

Li £ xi £ Ui для i=1,2,…,k.

Здесь Li,Ui ( i=1,2,…,k) - это значения Lij,Uij , соответствующие критическим работам. Для задачи (6) существует простой метод решения.

Алгоритм решения задачи (6).

  1. Упорядочим критические работы в порядке убывания значений ci: i1,i2,…,ik .

  2. Полагаем T0=T0 -å Li , j=1 , i=1

  3. Вычисляем z=min { Uij-Lij,T0 }, xij =Lij +z. Присваиваем T0=T0-z.

  4. Если j< k , то увеличиваем j на 1 и переходим к шагу 3.

  5. Работа алгоритма завершена.

Пример 5.

Для сетевого графика из примера 1 найти оптимальные значения сроков наступления событий ti и продолжительностей работ yij при заданных продолжительности проекта T0 =33, отношениях предшествования, определенных в примере 1, верхних и нижних пределах продолжительности каждой работы, заданных в таблице 6.

Таблица 6

Работа

Lij

Uij

aij

(0,1)

3

4

1

(0,2)

4

6

3

(0,4)

6

9

4

(1,5)

7

8

3

(2,3)

4

7

6

(3,4)

0

0

0

(3,5)

0

0

0

(4,6)

8

10

4

(5,6)

4

6

2

(6,7)

1

4

2

(7,8)

7

9

1

Полагаем yij=Uij, и при этих значениях продолжительностей работ методом критического пути проводим анализ сети (см. пример 2). Величина критического пути равна Tвкр =36. Величина предкритического пути равна Tпкр =32. Это означает, что T0 >Tпкр , и уменьшить время исполнения проекта можно за счет сокращения продолжительности работ, лежащих на критическом пути. Для этого достаточно решить задачу (6), которая в данном случае имеет вид :

3x1 +6x2 +0x3+4x4 +2x5 +x6 ® max

x1 +x2 +x3+x4 +x5 +x6 £33,

4£x1 £6,

4£x2 £7,

0£x3 £0,

8£x4 £10,

1£x5 £4,

7£x6 £9.

Переменные xi обозначают продолжительность работ, принадлежащих критическому пути. При этом переменная x3 соответствует фиктивной работе, и поэтому x3 =0 (далее эту переменную не рассматриваем). Упорядочим переменные в соответствии с убыванием коэффициентов целевой функции {2,4,1,5,6}.

Полагаем T0=33-(4+4+0+8+1+7)=9.

Тогда, x2 =4+min{7-4,9}=7, уменьшаем T0 =9-3=6,

x4 =8+min{10-8,6}=10, уменьшаем T0 =6 –2=4,

x1 =4+min{6-4,4}=6, T0 =4-2=2,

x5 =1+min{4-1,2}=3, T0 =2-2=0,

x6 =7+min{9-7,0}=7, T0 =0.

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

Таблица 7

Работа

Переменная Xi, соответству-ющая работе

Оптимальная продолжительность работы

Yij

Lij

Uij

(0,1)

4

3

4

(0,2)

X1

6*

4

6

(0,4)

9

6

9

(1,5)

8

7

8

(2,3)

X2

7*

4

7

(3,4)

X3

0*

0

0

(3,5)

0

0

0

(4,6)

X4

10*

8

10

(5,6)

6

4

6

(6,7)

X5

3*

1

4

(7,8)

X6

7*

7

9

Пример 6.

Для сетевого графика, изображенного на рис. 4, найти оптимальные значения продолжительностей работ yij при заданных в таблице 8 отношениях предшествования, верхних и нижних пределах продолжительности каждой работы и продолжительности проекта T0 =15.

Сетевой график для примера 5.

Рисунок 4.

Таблица 8

Работа

Lij

Uij

aij

(0,1)

2

8

1

(0,2)

5

10

8

(1,2)

1

4

6

(1,3)

4

8

7

(2,3)

6

8

5

Полагая yij=Lij, находим Tнкр. При заданных значениях продолжительностей работ Tнкр=11. Так как T0 >Tнкр, то задача разрешима. При yij= Uij, величины критического и предкритического путей равны Tвкр =20 и Tпкр =18 соответственно. Это означает, что T0<Tпкр и нельзя уменьшить время исполнения проекта только за счет сокращения продолжительности работ, лежащих на критическом пути. Таким образом, для определения продолжительности работ необходимо решить задачу (5), которая для данного примера при t0=0 имеет вид:

y0,1+8y0,2+6y1,2+7y1,3+5y2,3® max

y0,1-t1 £0

y0,2-t2 £0

y1,2+t1-t2£0 (7)

y1,3+t1-t3£0

y2,3+t1-t3£0

t3£15

2£y0,1£8

5£y0,2£10

1£y1,2£4

4£y1,3£8

6£y2,3£8.

Сформулированная задача имеет слишком большую для ручного счета размерность (число ограничений m=16, число переменных n=8, а после приведения задачи к каноническому виду возрастет до n=29). Поэтому для решения задачи рекомендуем воспользоваться программой SIMPLEX, разработанной на кафедре исследования операций и предназначенной для решения задач линейного программирования.

До сих пор мы рассматривали оптимизационные модели, в которых ограничивающим фактором являлась продолжительность проекта T0. В тех случаях, когда таким фактором является стоимость выполнения проекта C0, можно сформулировать следующую оптимизационную задачу :

Tкр=tn-t0 ® min

ti,yij

ti - tj +yij£0 для всех (i,j)ÎS,

(8)

S (bij-aijyij) £ C0

(i,j)ÎS

Lij £ yij £ Uij для всех (i,j)ÎS.

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

Пусть Сн – затраты на выполнение проекта при yij=Uij. Задача (8) разрешима тогда и только тогда, когда С 0³Cн.

Задача (8) эквивалентна задаче линейного программирования (9):

Tкр=tn-t0 ® min

ti,yij

ti +yij £tj для всех (i,j)ÎS,

(9)

S aijyij ³ D0, где D0= S bij -C0,

(i,j)ÎS (i,j)ÎS

Lij £ yij £ Uij для всех (i,j)ÎS.

Задачу (9) как и задачу (4) можно решить симплекс-методом. Для этого можно воспользоваться программой SIMPLEX.

Пример 6.

Для сетевого графика изображенного на рис. 2 найти оптимальные значения продолжительностей работ yij, минимизирующих время выполнения проекта в целом при заданных в таблице 8 отношениях предшествования, верхних и нижних пределах продолжительности каждой работы и D0 =201.

Задача (9) для данного примера при t0=0 имеет вид:

t3® min

y0,1-t1 £0

y0,2-t2 £0

y1,2+t1-t2£0

y1,3+t1-t3£0 (10)

y2,3+t1-t3£0

y0,1+8y0,2+6y1,2+7y1,3+5y2,3³201

2£y0,1£8

5£y0,2£10

1£y1,2£4

4£y1,3£8

6£y2,3£8.

В результате работы программы было получено следующее оптимальное решение y0,1=6, y0,2=10, y1,2=4, y1,3=8, y2,3=7, t 1=6, t2=10, Tкр=t 3=17.