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ść

  1. Przyjąć r=1, s=n.

  2. Znaleźć najmniejszą liczbę spośród czasów aj, bj (j=1,2,…,n).

  3. 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.

  4. Usunąć ze zbiorów czasu trwania parę (ak, bk) lub (al, bl).

  5. 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

  1. Przyjmujemy r=1, s=7

  2. Wyznaczamy:

min{a1, a2, a3, a4, a5, a6, a7, b1, b2, b3, b4, b5, b6, b7}= a3=1

  1. Ponieważ liczbą tą jest a3 to i1=3 oraz r=1+1=2

  2. Usuwamy ze zbioru parę (a3, b3)=(1,4)

  3. Powtórzyć postępowanie od punktu 2

Iteracja 2

  1. Przyjmujemy r=2, s=7

  2. Wyznaczamy:

min{a1, a2, a4, a5, a6, a7, b1, b2, b4, b5, b6, b7}= b7=1

  1. Ponieważ liczbą tą jest b7 to i2=7 oraz s=7-1=6

  2. Usuwamy ze zbioru parę (a7, b7)=(5,1)

  3. Powtórzyć postępowanie od punktu 2

Iteracja 3

  1. Przyjmujemy r=2, s=6

  2. Wyznaczamy:

min{a1, a2, a4, a5, a6, b1, b2, , b4, b5, b6}= b6=2

  1. Ponieważ liczbą tą jest b6 to i3=6 oraz s=6-1=5

  2. Usuwamy ze zbioru parę (a6, b6)=(7,2)

  3. Powtórzyć postępowanie od punktu 2

Iteracja 4

  1. Przyjmujemy r=2, s=5

  2. Wyznaczamy:

min{a1, a2, a4, a5, b1, b2, b4, b5}= a5=3

  1. Ponieważ liczbą tą jest a5 to i4=5 oraz r=2+1=3

  2. Usuwamy ze zbioru parę (a5, b5)=(3,5)

  3. Powtórzyć postępowanie od punktu 2

Iteracja 5

  1. Przyjmujemy r=3, s=5

  2. Wyznaczamy:

min{ a1, a2, a4, b1, b2, b4,}= b4=3

  1. Ponieważ liczbą tą jest b4 to i5=4 oraz s=5-1=4

  2. Usuwamy ze zbioru parę (a4, b4)=(6,3)

  3. Powtórzyć postępowanie od punktu 2

Iteracja 6

  1. Przyjmujemy r=3, s=4

  2. Wyznaczamy:

min{a1, a2, b1, b2}= a2=4

  1. Ponieważ liczbą tą jest a2 to i3=2 oraz r=3+1=4

  2. Usuwamy ze zbioru parę (a2, b2)=(4,6)

  3. Powtórzyć postępowanie od punktu 2

Iteracja 7

  1. Przyjmujemy r=4, s=4

  2. Wyznaczamy:

min{a1, b1 }= b1=5

  1. Ponieważ liczbą tą jest a1 to i7=1 oraz s=4-1=3

  2. Usuwamy ze zbioru parę (a1, b1)=(8,5)

i1

i2

i3

i4

i5

i6

i7

3

7

6

5

4

2

1