Algorytm PD dla 1|| P (w i T i )
Mariusz Makuchowski
4 kwietnia 2019
Sformułowanie problemu: 1|| X w i T i
.
Mamy do wykonania n zadań na pojedynczej maszynie.
Jeśli dane zadanie jest spóźnione naliczana jest kara.
Szukamy uszeregowania o minimalnej sumie kara.
Sformułowanie problemu: 1|| X w i T i
.
Każde zadanie opisane jest trzema parametrami:
p
i- czas trwania, w
i- waga,
d
i- porządany termin zakończenia.
Dla zadania i zakończonego w C
iwyznaczane jest spóźnienie:
T
i=
0 dla C
i¬ d
iC
i− d
idla C
i> d
iMinimalizujemy sumę ważonych spóźnień:
X
i
w
iT
iPrzykład:
Dane: n = 4
p
1= 2 w
1= 3 d
1= 4 p
2= 4 w
2= 3 d
2= 3 p
3= 1 w
3= 4 d
3= 5 p
4= 3 w
4= 2 d
4= 2
t M
1
C1= 2
2
C2= 6
3
C3= 7
4
C4= 10
X
i
w
iT
i= 3 · (0) + 3 · (6 − 3) + 4 · (7 − 5) + 2 · (10 − 2) = 33
Przykład: rozwiązanie optymalne
Dane: n = 4
p
1= 2 w
1= 3 d
1= 4 p
2= 4 w
2= 3 d
2= 3 p
3= 1 w
3= 4 d
3= 5 p
4= 3 w
4= 2 d
4= 2
t M
2
C2= 4
3
C3= 5
1
C1= 7
4
C4= 10
X
i
w
iT
i= 3 · (7 − 4) + 3 · (4 − 3) + 4 · (0) + 2 · (10 − 2) = 28
Algorytm PD
F (I) = min
k∈In F (I \ {k}) + K
k(C (I)) o
I - zbiór zadań
F (I) - kara optymalnego uszerwgowania zadań I
K
k(t) - kara zadania k zakończonego w czasie t
C (I) - długość uszeregowania zadań I
Algorytm PD
Dane: n = 4
p
1= 2 w
1= 3 d
1= 4 p
2= 4 w
2= 3 d
2= 3 p
3= 1 w
3= 4 d
3= 5 p
4= 3 w
4= 2 d
4= 2
F ({1, 2, 3, 4}) = min
F ({ A 1, 2, 3, 4}) + K
1(c) F ({1, 2, 3, 4}) + K A
2(c) F ({1, 2, A 3, 4}) + K
3(c) F ({1, 2, 3, 4}) + K A
4(c) c = C ({1, 2, 3, 4})=10
K
1(10) = 3 · (10 − 4) = 18 K
2(10) = 3 · (10 − 3) = 21
K
3(10) = 4 · (10 − 5) = 20 K
4(10) = 2 · (10 − 2) = 16
Przykład obliczeń:
Dane: n = 4
p1= 2 w1= 3 d1= 4 p2= 4 w2= 3 d2= 3 p3= 1 w3= 4 d3= 5 p4= 3 w4= 2 d4= 2
F (0000) = 0 C (0001) = 2 F (0001) = 0 = min
F (0000) + K1(2) = 0 + 0 = 0 C (0010) = 4 F (0010) = 3 = min
F (0000) + K2(4) = 0 + 3 = 3
C (0011) = 6 F (0011) = 9 = min
F (0010) + K1(6) = 3 + 6 = 9 F (0001) + K2(6) = 0 + 9 = 9 C (0100) = 1 F (0100) = 0 = minF (0000) + K3(1) = 0 + 0 = 0
C (0101) = 3 F (0101) = 0 = min
F (0100) + K1(3) = 0 + 0 = 0 F (0001) + K3(3) = 0 + 8 = 8C (0110) = 5 F (0110) = 3 = min
F (0100) + K1(5) = 0 + 3 = 3 F (0010) + K3(5) = 12 + 0 = 12C (0111) = 7 F (0111) = 12 = min
F (0110) + K1(7) = 3 + 9 = 12 F (0101) + K2(7) = 0 + 12 = 12 F (0011) + K3(7) = 9 + 8 = 17
Przykład obliczeń: ostatnia iteracja
Dane: n = 4
p1= 2 w1= 3 d1= 4 p2= 4 w2= 3 d2= 3 p3= 1 w3= 4 d3= 5 p4= 3 w4= 2 d4= 2
Optymalne rozwiązania podproblemów:
F (0111) = 12 F (1011) = 23 F (1101) = 8 F (1110) = 15
Kary ostatniego z zadań, kończącego się w czasie C (1111) = 10:
K1(10) = 3 · (10 − 4) = 18 K2(10) = 3 · (10 − 3) = 21 K3(10) = 4 · (10 − 5) = 20 K4(10) = 2 · (10 − 2) = 16
Minimalna kara problemu to:
F (1111) = min
F (1110) + K1(10) = 15 + 18 = 33 F (1101) + K2(10) = 8 + 21 = 29 F (1011) + K3(10) = 23 + 20 = 43 F (0111) + K4(10) = 12 + 16 = 28
= 28