Algorytm Johnsona
Algorytm ten dotyczy zagadnienia harmonogramowania pracy dwóch maszyn (m=2) na n działkach roboczych (obiektach). Został sformułowany przy założeniu, że harmonogramowanie jest wieloetapowym procesem planowania. Algorytm S. Johnsona charakteryzuje się prostotą i małym zakresem obliczeń numerycznych.
Oznaczmy przez aj oraz bj (j=1,2,…,n) czasy wykonania robót na obiekcie j odpowiednio: przez pierwszą i drugą maszynę (i=1,2) oraz niech i1, i2,…, in oznacza permutację, określającą optymalną kolejność
Przyjąć r=1, s=n.
Znaleźć najmniejszą liczbę spośród czasów aj, bj (j=1,2,…,n).
Jeżeli liczbą tą jest ak, to ik=k oraz r=r+1, jeżeli zaś liczbą tą jest bl, to is=1 oraz s=s-1.
Usunąć ze zbiorów czasu trwania parę (ak, bk) lub (al, bl).
Powtórzyć postępowanie od punktu 2.
j i |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
a |
8 |
4 |
1 |
6 |
3 |
7 |
5 |
b |
5 |
6 |
4 |
3 |
5 |
2 |
1 |
Iteracja 1
Przyjmujemy r=1, s=7
Wyznaczamy:
min{a1, a2, a3, a4, a5, a6, a7, b1, b2, b3, b4, b5, b6, b7}= a3=1
Ponieważ liczbą tą jest a3 to i1=3 oraz r=1+1=2
Usuwamy ze zbioru parę (a3, b3)=(1,4)
Powtórzyć postępowanie od punktu 2
Iteracja 2
Przyjmujemy r=2, s=7
Wyznaczamy:
min{a1, a2, a4, a5, a6, a7, b1, b2, b4, b5, b6, b7}= b7=1
Ponieważ liczbą tą jest b7 to i2=7 oraz s=7-1=6
Usuwamy ze zbioru parę (a7, b7)=(5,1)
Powtórzyć postępowanie od punktu 2
Iteracja 3
Przyjmujemy r=2, s=6
Wyznaczamy:
min{a1, a2, a4, a5, a6, b1, b2, , b4, b5, b6}= b6=2
Ponieważ liczbą tą jest b6 to i3=6 oraz s=6-1=5
Usuwamy ze zbioru parę (a6, b6)=(7,2)
Powtórzyć postępowanie od punktu 2
Iteracja 4
Przyjmujemy r=2, s=5
Wyznaczamy:
min{a1, a2, a4, a5, b1, b2, b4, b5}= a5=3
Ponieważ liczbą tą jest a5 to i4=5 oraz r=2+1=3
Usuwamy ze zbioru parę (a5, b5)=(3,5)
Powtórzyć postępowanie od punktu 2
Iteracja 5
Przyjmujemy r=3, s=5
Wyznaczamy:
min{ a1, a2, a4, b1, b2, b4,}= b4=3
Ponieważ liczbą tą jest b4 to i5=4 oraz s=5-1=4
Usuwamy ze zbioru parę (a4, b4)=(6,3)
Powtórzyć postępowanie od punktu 2
Iteracja 6
Przyjmujemy r=3, s=4
Wyznaczamy:
min{a1, a2, b1, b2}= a2=4
Ponieważ liczbą tą jest a2 to i3=2 oraz r=3+1=4
Usuwamy ze zbioru parę (a2, b2)=(4,6)
Powtórzyć postępowanie od punktu 2
Iteracja 7
Przyjmujemy r=4, s=4
Wyznaczamy:
min{a1, b1 }= b1=5
Ponieważ liczbą tą jest a1 to i7=1 oraz s=4-1=3
Usuwamy ze zbioru parę (a1, b1)=(8,5)
i1 |
i2 |
i3 |
i4 |
i5 |
i6 |
i7 |
3 |
7 |
6 |
5 |
4 |
2 |
1 |