Algorytm genetyczny dla problemu gniazdowego z ograniczeniem

Transkrypt

Algorytm genetyczny dla problemu gniazdowego z ograniczeniem
Algorytm genetyczny dla problemu gniazdowego z
ograniczeniem bez czekania
Mariusz Makuchowski
Instytut Cybernetyki Technicznej, Politechnika Wrocławska
Słowa kluczowe: (problem gniazdowy, ograniczenie bez czekania, rozwiązania super-aktywne, rozwiązania
pseudo-aktywne, algorytm genetyczny)
Streszczenie: W pracy analizuje się problem gniazdowy z ograniczeniem bez czekania z kryterium optymalizacji
będącym terminem zakończenia wykonywania wszystkich zadań. Przedstawia się klasę rozwiązań superaktywnych oraz jej rozszerzenie – klasę rozwiązań pseudo-aktywnych. Na bazie omówionych klas rozwiązań
proponuje się dwa algorytmy genetyczne. Jakość proponowanych algorytmów ocenia się na podstawie przeprowadzonych badań numerycznych, wykorzystując literaturowe przykłady testowe.
1. WPROWADZENIE
W pracy rozwaŜa się problem gniazdowy (ang. job shop problem) z dodatkowym ograniczeniem
bez czekania (ang. no-wait). Optymalizowaną funkcją celu jest termin zakończenia wykonywania
wszystkich zadań (ang. makespane). Problem ten róŜni się od swojego klasycznego odpowiednika
wymogiem rozpoczęcia wykonywania operacji dokładnie w chwili zakończenia wykonywania jej
poprzednika technologicznego (bezzwłocznie). Ograniczenie to jest typowe dla wielu rzeczywistych
procesów produkcyjnych, w których przetwarzany produkt zmienia swoje własności fizycznochemiczne, przykładowo podczas wyrobu stali [1], produkcji Ŝywności [2], czy wyrobu elementów
betonowych [3].
Z punktu widzenia złoŜoności obliczeniowej, juŜ klasyczny problem gniazdowy jest silnie NPtrudny, co zostało pokazane w pracy [4]. Analizowało go wielu badaczy, co zaowocowało opracowaniem szeregu algorytmów (róŜnego rodzaju). Dla niewielkich instancji dedykowane są algorytmy
dokładne, bazujące na technice „dziel i ograniczaj” (ang. branch and bound) [5], a dla pozostałych
algorytmy przybliŜone, najczęściej algorytmy popraw [6,7]. Problem gniazdowy z ograniczeniem bez
czekania jest takŜe problemem silnie NP-trudnym [4], nawet w przypadku zredukowanym do dwóch
maszyn [8]. Choć teoretyczna złoŜoność obu wymienionych wariantów problemu gniazdowego jest
identyczna, to wielu badaczy uwaŜa, z praktycznego punktu widzenia, problem z ograniczeniem bez
czekania, za znacznie trudniejszy. Przykładowo przedstawiony w pracy [9] algorytm dokładny,
bazujący na metodzie podziału i ograniczeń, potrafi rozwiązać w sensownym czasie instancje o liczbie
zadań nie większej niŜ 15 przy 5 maszynach i nie większej niŜ 10 przy 10 maszynach. Ponadto
rozwaŜany problem doczekał się wielu algorytmów przybliŜonych bazujących na róŜnorodnych
technikach. Przykładowo w pracy [10] przedstawiono algorytm oparty na technice poszukiwania z
zabronieniami, w pracy [11] algorytm oparty na technice symulowanego wyŜarzania, a w pracy [12]
algorytm genetyczny z elementami symulowanego wyŜarzania.
Dalszy układ pracy jest następujący. W rozdziale drugim podaję sformułowanie matematyczne
rozwaŜanego problemu oraz wprowadzam najpotrzebniejsze oznaczenia wykorzystywane w dalszej
części pracy. W rozdziale trzecim definiuję dwie klasy rozwiązań, tzn. rozwiązania super-aktywne oraz
rozwiązania pseudo-aktywne. Następnie przeprowadzam eksperyment numeryczny mający na celu
praktyczną ocenę najlepszych rozwiązań występujących w danej klasie. W rozdziale czwartym opisuję
zaproponowane algorytmy genetyczne, bazujące na wcześniej opisanych rozwiązaniach superaktywnych oraz pseudo-aktywnych. Rozdział ten kończę badaniami numerycznymi z wykorzystaniem
znanych w literaturze przykładów testowych. Uzyskane rezultaty porównuję do algorytmu literaturowego GASA [12], uwzględniając zarówno czas pracy algorytmu jak i jakość otrzymanych rozwiązań.
Ostatni piąty rozdział zawiera ogólne uwagi autora, zarówno na temat zaproponowanych klas
rozwiązań super-aktywnych i pseudo-aktywnych jak i zastosowania podejścia ewolucyjnego do
rozwiązywania instancji rozwaŜanego problemu.
2. SFORMUŁOWANIE PROBLEMU
Problem gniazdowy z ograniczeniem bez czekania i funkcją kryterialną, będącą terminem zakończenia wykonywania wszystkich zadań, oznaczany jest w notacji Graham'a przez: J | no − wait | C max ,
[13]. MoŜe on być sformułowany zgodnie z notacją zaproponowaną w pracy [12] w następujący
sposób:
Dany jest zbiór maszyn M = {1,2,… , m } oraz zbiór zadań J = {1,2,… , n } wykonywanych na tych
maszynach. Dla kaŜdego zadania k ∈ J dany jest ciąg O k = ( o1k , K , o rkk ) zawierający rk operacji
produkcyjnych. Operacja olk składa się z pary ( m lk , p lk ) określającej kolejno wykorzystywaną
maszynę oraz czas trwania operacji. Ponadto w rozwaŜanym problemie obowiązują następujące
ograniczenia:
•
kolejnościowe: operacje zadania k naleŜy wykonać w kolejności Ok,
•
synchroniczne: kaŜda maszyna moŜe wykonywać w danej chwili, co najwyŜej jedną operację
oraz nie moŜna w tym samym czasie wykonywać więcej niŜ jednej operacji danego zadania,
•
bez czekania: kaŜda nie pierwsza operacja danego zadania, musi rozpocząć się dokładnie w
momencie zakończenia wykonywania operacji wcześniejszej tego samego zadania.
ZauwaŜmy, Ŝe termin tk rozpoczęcia wykonywania zadania k (moment rozpoczęcia wykonywania
operacji o1k ) określa precyzyjnie terminy rozpoczęć oraz zakończeń wykonywania wszystkich operacji
o ∈ O k tego zadania. Dlatego jako rozwiązanie (uszeregowanie) problemu przyjmuję wektor
T = ( t1 , K , t n ) terminów rozpoczęcia wykonywania wszystkich n zadań. Rozwiązanie spełniające
wszystkie powyŜsze ograniczenia nazywamy rozwiązaniem dopuszczalnym. Długością C max ( T )
uszeregowania T nazywamy termin wykonania wszystkich zadań:
C max ( T ) = max ( t k +
k∈J
rk
∑p
k
l
).
(1)
l =1
Problem polega na znalezieniu rozwiązania dopuszczalnego T* o najmniejszej długości.
3. USZEREGOWANIA SUPER-AKTYWNE I PSEUDO-AKTYWNE
Uszeregowania super-aktywne rozwaŜane w pracy, zdefiniowane są precyzyjnie przez daną permutację zadań π = ( π (1), K , π (n) ) (permutacja ładująca) oraz pewną procedurę przekształcającą tę
permutację w rozwiązanie. Procedura tworząca uszeregowanie super-aktywne z permutacji π składa
się z n identycznych kroków. W i-tym kroku do częściowego rozwiązania dokładane jest zadanie π ( i ) ,
tworząc nowe uszeregowanie częściowe. Procedura zaczyna działanie z pustego uszeregowania, a po
zakończeniu działania budowane uszeregowanie częściowe staje się ostatecznym rozwiązaniem.
Dodanie zadania π ( i ) w i-tym kroku procedury polega na wyznaczeniu minimalnego terminu
tπ (i ) ≥ 0 spełniającego wszystkie ograniczenia względem π (l ), l = 1,K, i − 1 , uszeregowanych juŜ
wcześniej zadań. ZauwaŜmy, Ŝe kaŜda permutacja π zbioru J definiuje dokładnie jedno uszeregowanie, co więcej, uszeregowanie to jest zawsze dopuszczalne, co wynika bezpośrednio ze sposobu jego
konstrukcji. Zaimplementowana procedura posiada złoŜoność obliczeniową O( n 2 N 2 ) , gdzie
N = max {rk } oznacza największą liczbę operacji w szeregowanych zadaniach.
k∈J
W rozwaŜanym problemie nie ma Ŝadnej gwarancji, Ŝe klasa rozwiązań super-aktywnych zawiera
poszukiwane rozwiązanie optymalne. Przykład takiej instancji (moŜliwie najmniejszy pod względem
liczby maszyn i zadań) wraz z najlepszym rozwiązaniem super-aktywnym oraz rozwiązaniem
optymalnym znajduje się na rysunku 1.
Rys.1. Harmonogram zadań, a) najlepsze rozwiązanie super-aktywne, b) rozwiązanie optymalne
Chcąc zmniejszyć częstotliwość występowania niepoŜądanej, wspomnianej wyŜej własności,
zdecydowałem się na rozszerzenie rozwiązań super-aktywnych o ich symetryczne odpowiedniki. W
konsekwencji procedura generująca rozwiązania rozszerzona została o dodatkowy komplementarny
moduł. W skrócie, moduł ten pracuje na „odbiciach lustrzanych” oryginalnych danych, generując
harmonogram super-aktywny, po czym zwraca rozwiązanie odpowiadające „lustrzanemu odbiciu”
wygenerowanego harmonogramu. Ostatecznie jako rozwiązanie dla danej sekwencji ładującej
przyjmuję harmonogram lepszy w sensie wartości funkcji celu. Uzyskane w ten sposób rozwiązania
będę nazywał dalej rozwiązaniami pseudo-aktywnymi (wszystkie zadania na wykresie Gantt’a
dosunięte są najdalej jak to moŜliwe do lewej lub prawej strony).
3.1. OCENA JAKOŚCI ROZWIĄZAŃ SUPER-AKTYWNYCH I PSEUDOAKTYWNYCH
W celu praktycznej oceny jakości rozwiązań super-aktywnych oraz pseudo-aktywnych, zaprojektowałem algorytm dokładny wyznaczający najlepszą (w sensie wartości funkcji celu) permutację
ładującą. Badania przeprowadziłem dla przykładów, w których liczba zadań była nie większa niŜ 10
(wartości rozwiązań optymalnych podano w pracy [9,12]). Otrzymane rezultaty zamieściłem w tabeli 1.
Tabela 1. Błędy względne najlepszych rozwiązań danej klasie względem rozwiązań optymalnych
Grupa
przykładów
La01-La05
La16-La20
Orb01-Orb05
Orb06-Orb10
Ft06, Ft10
Średnia
Błędy względne [%]
najlepszych rozwiązań klasy:
super-aktywnej pseudo-aktywnej
0,70
0,00
0,19
0,00
0,07
0,03
0,46
0,00
0,00
0,00
0,32
0,01
Z tabeli 1 wynika, Ŝe pogorszenie jakości rozwiązań związane z ograniczeniem przeglądania rozwiązań tylko super-aktywnych czy pseudo-aktywnych jest stosunkowo małe. Połączenie tego faktu z
łatwością kodowania tych rozwiązań (jedna ładująca permutacja zadań) oraz stosunkowo prostą metodą
ich konstrukcji sugeruje, Ŝe omawiane klasy są dobrą bazą dla projektowania efektywnych algorytmów
przybliŜonych. Oczywiste jest, Ŝe przeglądanie rozwiązań pseudo-aktywnych umoŜliwia znalezienie
lepszych rozwiązań, niŜ w przypadku przeglądania rozwiązań super-aktywnych, jednakŜe obarczone
jest to dwukrotnie dłuŜszym czasem wyznaczenia wartości funkcji celu.
4. ALGORYTM SGA i PGA
Ogólna idea algorytmu ewolucyjnego przedstawiona jest po raz pierwszy w pracy [14]. Algorytmy
genetyczne są programami symulującymi dobór naturalny, ewolucję i dziedziczenie, występujące w
przyrodzie. Pojedyncze osobniki symulowanej populacji utoŜsamiane są z rozwiązaniami danego
problemu. Zazwyczaj jedna iteracja takiego algorytmu odpowiada Ŝyciu jednego pokolenia, w którym
najsłabsze osobniki giną, a najlepiej przystosowane stają się rodzicami nowego pokolenia. Jakość
przystosowania osobnika oceniana jest na podstawie wartości funkcji kryterialnej odpowiadającego mu
rozwiązania. W celu nadania ewolucji tendencji do generowania coraz lepszych rozwiązań, nowo
powstałe osobniki dziedziczą geny (pewne atrybuty rozwiązań) swoich rodziców. Natomiast w celu
uniknięcia sytuacji, w której wszystkie nowo generowane osobniki są bardzo do siebie podobne, stosuje
się niewielką ich mutację. Z powyŜszego opisu wynika, Ŝe podstawowymi operacjami występującymi
w kaŜdej iteracji algorytmu genetycznego są: selekcja (wybór rodziców z całego pokolenia), krzyŜowanie (generowanie nowych osobników na podstawie materiału genetycznego rodziców) oraz mutacja
(wprowadzenie niewielkich zmian w materiale genetycznym nowo powstałych osobników).
Szczegółowa implementacja poszczególnych elementów algorytmu (wariantu algorytmu o najwyŜszej jakości osiąganych rozwiązań z pośród kilkudziesięciu testowanych) opisana jest poniŜej:
•
selekcja: w algorytmie zastosowano najprostszy rodzaj selekcji, zwaną selekcją twardą, polegającą na wyborze pareN najlepszych osobników,
•
krzyŜowanie: do krzyŜowania stosuję dwa operatory bazujące na bazie operatora PMX. Oba z
nich losują po dwa punkty przecięcia się permutacji, dzieląc permutację rodzica A na trzy
części. Pierwszy z nich, operator LRX, polega na skopiowaniu 1 i 3 części rodzica A, natomiast brakujące środkowe elementy uzupełniane są zgodnie z kolejnością występowania w
rodzicu B. Drugi, operator MX, jest analogiczny, z tą róŜnicą, Ŝe kopiowaniu podlega środkowa część permutacji, a początkowa i końcowa jest uzupełniana,
•
mutacja: w algorytmie zastosowano mutację typu „wstaw”. Polega ona na przełoŜeniu jednego losowego elementu permutacji ładującej na nową wylosowaną pozycję,
•
dodatkowa dywersyfikacja: kaŜdy osobnik o wartości funkcji celu występującej juŜ u innego
osobnika w pokoleniu poddawany jest dodatkowej mutacji. Ta dodatkowa mutacja wykonuje
się tak długo, aŜ nastąpi zmiana wartości funkcji celu mutowanego rozwiązania.
Ostatecznie parametrami sterującymi pracą algorytmu są kolejno:
•
timeN: maksymalny czas pracy algorytmu podany w sekundach,
•
iterN: maksymalna liczba pokoleń symulowana przez algorytm,
•
idleN: liczba pokoleń bez poprawy po której następuje restart (dla idleN>0) lub zatrzymanie
algorytmu (dla idleN<0),
•
childN: liczba osobników w pokoleniu,
•
pareN : liczba osobników będących rodzicami dla następnego pokolenia,
•
crossOver: zbiór operatorów krzyŜowania. Operatory z tego zbioru uŜywane są cyklicznie,
•
insertP: prawdopodobieństwo mutacji,
•
N: krotność powtórzenia algorytmu.
Opisany algorytm bazujący na rozwiązaniach super-aktywnych nazywany jest algorytmem SGA,
natomiast algorytm bazujący na rozwiązaniach pseudo-aktywnych, algorytmem PGA.
4.1. ANALIZA EKSPERYMENTALNA
Wszystkie badania przedstawione w tej pracy, zostały przeprowadzone na komputerze klasy PC z
procesorem Athlon XP 2000+ taktowanym zegarem 1666 MHz. Prezentowane algorytmy zostały
zaprogramowane w języku C++ i uruchamiane były w środowisku Windows XP.
Efektywność proponowanych algorytmów rozumiana zarówno jako szybkość działania, jak i jakość dostarczanych rozwiązań, przetestowana została na znanych w literaturze przykładach testowych.
Przykłady te są zróŜnicowane zarówno pod względem ilości maszyn (od 5 do 20), jak i ilości zadań (od
6 do 30). Dla lepszej interpretacji uzyskanych rezultatów, porównane zostały one względem wyników
otrzymanych algorytmem hybrydowym GASA [12], łączącym w sobie algorytm genetyczny z
elementami algorytmu symulowanego wyŜarzania.
Tabela 2. Wyniki działania algorytmów GASA i PGA dla przykładów „łatwych”
Przykład
La01
La02
La03
La04
La05
La16
La17
La18
La19
La20
Orb01
Orb02
Orb03
Orb04
Orb05
Orb06
Orb07
Orb08
Orb09
Orb10
Ft06
Ft10
m×n
5 x 10
5 x 10
5 x 10
5 x 10
5 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
10 x 10
6x6
10 x 10
OPT
C max
GASA
C max
971
937
820
887
777
1575
1371
1417
1482
1526
1615
1485
1599
1653
1365
1555
689
1319
1445
1557
73
1607
1037
990
832
889
817
1637
1430
1555
1610
1693
1663
1555
1603
1653
1415
1555
706
1319
1535
1618
73
1607
t GASA
[s]
23
24
24
25
24
39
42
42
40
45
39
40
41
43
44
42
43
41
40
46
6
41
ρ GASA
PGA
C max
[%]
6,80
5,66
1,46
0,23
5,15
3,94
4,30
9,74
8,64
10,94
2,97
4,71
0,25
0,00
3,66
0,00
2,47
0,00
6,23
3,92
0,00
0,00
971
937
820
887
777
1575
1371
1417
1482
1526
1615
1485
1599
1653
1367
1555
689
1319
1445
1557
73
1607
t PGA
[s]
11
10
10
9
9
32
29
33
37
33
33
27
33
31
34
34
31
31
39
35
3
29
ρ PGA
[%]
0,00
0,00
0,00
0,00
0,00
0,00
0,00
0,00
0,00
0,00
0,00
0,00
0,00
0,00
0,15
0,00
0,00
0,00
0,00
0,00
0,00
0,00
Tabela 3. Średni błąd oraz suma czasów działania algorytmów GASA i PGA dla grup „łatwych”
Grupy
przykładów
t GASA
[s]
120
208
207
212
47
794
ρ GASA
t PGA
[s]
49
164
158
170
32
573
ρ PGA
[%]
[%]
La01-La05
3,86
0,00
La16-La20
7,51
0,00
Orb01-Orb05
2,32
0,03
Orb06-Orb10
2,52
0,00
Ft06, Ft10
0,00
0,00
Wszystkie
3,68
0,01
255,178,93
167,25,14
Właściwy test składa się z dwóch części. W pierwszej z nich bada się efektywność algorytmu na
„łatwych”, a w drugiej na „trudnych” przykładach testowych. Przykłady „łatwe” to te, które udało się
rozwiązać dokładnie stosując algorytm typu „dziel i ograniczaj” opisany w pracy [9], natomiast
pozostałe noszą miano przykładów „trudnych”. Pewnego komentarza wymagają przykłady La06-La10,
które udało się rozwiązać dokładnie, a zakwalifikowane zostały do przykładów trudnych. Decyzja o
takim przydziale wynika bezpośrednio z faktu, iŜ pozostałe przykłady o liczbie zadań wynoszącej 15 są
przykładami trudnymi. Ponadto praktyczna trudność ich rozwiązania (patrz tabela 3 i tabela 5) jest na
poziomie cechującym przykłady trudne.
W pierwszej części testu istnieje duŜa szansa na osiągnięcie rozwiązań niewiele róŜniących się od
rozwiązania optymalnego (w sensie wartości funkcji celu), dlatego zdecydowałem się na zastosowanie
algorytmu PGA, opartego na rozwiązaniach pseudo-aktywnych (najlepsze z rozwiązań klasy pseudoaktywnej są znacznie bliŜej rozwiązania optymalnego niŜ analogiczne rozwiązania w klasie rozwiązań
super-aktywnych, patrz tabela 1). Algorytm PGA uruchamiany był z następującymi parametrami
sterującymi: PGA( 999,250,-100,50,20,(coMX,coLRX),0.005,10 ). Znaczenie wszystkich parametrów
(w kolejności ich wstępowania) wypunktowałem i omówiłem wcześniej.
PGA
Dla kaŜdego przykładu wyznaczyłem długość uszeregowania C max
generowanego przez badany
GASA
algorytm PGA w czasie t PGA . Analogiczne dane C max
i t GASA dla algorytmu GASA otrzymano
uruchamiając 30 razy algorytm GASA (na komputerze z procesorem Athlon 1400 Mhz). Następnie dla
OPT
kaŜdego przykładu obliczyłem ρ A , względny błąd w stosunku do rozwiązania optymalnego C max
,
A
OPT
OPT
− C max
) / C max
,
ρ A = 100% ⋅ (C max
A ∈ { GASA, PGA } .
(2)
Tabela 4. Wyniki działania algorytmów GASA i SGA dla przykładów „trudnych”
Przykład
La06
La07
La08
La09
La10
La11
La12
La13
La14
La15
La21
La22
La23
La24
La25
La26
La27
La28
La29
La30
La31
La32
La33
La34
La35
La36
La37
La38
La39
La40
Ft20
m×n
5 x 15
5 x 15
5 x 15
5 x 15
5 x 15
5 x 20
5 x 20
5 x 20
5 x 20
5 x 20
10 x 15
10 x 15
10 x 15
10 x 15
10 x 15
10 x 20
10 x 20
10 x 20
10 x 20
10 x 20
10 x 30
10 x 30
10 x 30
10 x 30
10 x 30
15 x 15
15 x 15
15 x 15
15 x 15
15 x 15
20 x 20
REF
C max
GASA
C max
1248
1172
1244
1358
1287
1656
1462
1610
1659
1713
2048
1918
2075
2044
1946
2627
2763
2696
2498
2602
3690
4082
3712
3716
3797
2796
3025
2612
2760
2728
1587
1339
1240
1296
1447
1338
1825
1631
1766
1805
1829
2182
1965
2193
2150
2034
2945
3036
2902
2617
2892
4298
4686
4214
4401
4299
2949
3216
2762
2908
2950
1675
t GASA
[s]
80
70
72
83
70
170
164
183
176
167
147
135
136
133
142
332
311
324
311
346
957
869
860
968
897
203
192
202
195
214
184
σ GASA
PAGA
C max
[%]
7,29
5,80
4,18
6,55
3,96
10,21
11,56
9,69
8,80
6,77
6,54
2,45
5,69
5,19
4,52
12,11
9,88
7,64
4,76
11,15
16,48
14,80
13,52
18,43
13,22
5,47
6,31
5,74
5,36
8,14
5,55
1318
1172
1298
1415
1299
1698
1561
1729
1703
1752
2077
1931
2132
2044
1959
2732
2848
2866
2564
2674
3857
4223
3854
3789
3997
2918
3105
2734
2730
2594
1580
σ SGA
t SGA
[s]
40
41
40
40
40
69
69
70
69
70
135
135
134
136
133
252
253
252
247
244
581
580
581
588
576
283
287
280
285
288
70
[%]
0.00
3.67
3.86
3.24
2.95
0.66
4.65
0.99
3.38
2.34
0.29
- 0.42
0.29
1.42
1.34
2.40
- 0.11
1.15
0.60
3.15
4.61
3.11
0.94
4.20
1.24
- 3.72
0.89
0.19
- 1.09
- 4.91
1.39
Tabela 5. Średni błąd oraz suma czasów działania algorytmów GASA i SGA dla grup „trudnych”
Grupy
przykładów
La06-La10
La11-La15
La21-La25
La26-La30
La31-La35
La36-La40
Ft20
Wszystkie
t GASA
[s]
375
860
693
1 624
4 551
1 006
184
9 292
ρ GASA
[%]
5,56
9,41
4,88
9,11
15,29
6,21
5,55
8,32
t SGA
[s]
201
347
673
1 248
2 906
1 423
70
6 868
σ
SGA
[%]
2.74
2.40
0.58
1.44
2.82
- 1.73
1.39
1.38
OPT
Jak juŜ wspominałem, rozwiązania C max
zaczerpnięto z pracy [9], w której otrzymano je stosując
PGA
GASA
OPT
algorytm dokładny typu dziel i ograniczaj. Wartości C max
, t PGA , C max
, t GASA oraz C max
dla
kaŜdego z łatwych przykładów zamieszczono w tabeli 2. Średnie wartości ρ A błędu ρ A oraz sumę
A
czasów działania t sum
algorytmu A ∈ { GASA, PGA } dla poszczególnych grup przykładów łatwych
zamieściłem w tabeli 3.
Dla drugiej części testu algorytm SGA (dwukrotnie szybszy względem algorytmu PGA) wydaje
się być bardziej odpowiedni. Przykłady testowe są tym razem na tyle trudne, Ŝe spodziewana odległość
względem rozwiązania optymalnego będzie duŜo większa niŜ błąd wynikający z ograniczenia się do
analizy rozwiązań super-aktywnych, zamiast rozwiązań pseudo-aktywnych. Tym razem algorytm SGA
uruchamiany był z parametrami: SGA( 999,250,250,50,20,(coMX,coLRX),0.000,20 ).
Dalszy przebieg drugiej części testu przebiegał analogicznie do pierwszej części, z tą zasadniczą
róŜnicą, Ŝe porównywane algorytmy A ∈ { GASA, SGA } testowane były na przykładach trudnych, a
błędy rozwiązań σ
A
REF
liczone są względem C max
wartości funkcji celu rozwiązań referencyjnych.
A
REF
REF
− C max
) / C max
,
σ A = 100% ⋅ (C max
A ∈ { GASA, SGA } .
(3)
REF
Rozwiązania C max
zaczerpnięto z pracy [15], w której otrzymano je stosując algorytm typu poszukiSGA
GASA
wania z zabronieniami oraz algorytm typu symulowanego wyŜarzania. Wartości C max
, t SGA , C max
,
REF
t GASA oraz C max
przykładów trudnych zawarte są w tabeli 4, natomiast średnie wartości σ
A
błędu
σ oraz sumę czasów działania
algorytmu A ∈ { GASA, SGA } dla poszczególnych grup
przykładów trudnych zamieściłem w tabeli 5.
A
A
t sum
5. UWAGI KOŃCOWE
Z badań wstępnych zamieszczonych w punkcie 3 wynika, Ŝe zarówno stosowanie algorytmów
przybliŜonych bazujących na klasie rozwiązań super-aktywnych, jak i pseudo-aktywnych, wydaje się
być bardzo dobrym podejściem. Algorytm bazujący na rozwiązaniach super-aktywnych, względem
analogicznego algorytmu bazującego na rozwiązaniach pseudo-aktywnych, odznacza się dwukrotnie
krótszym czasem działania oraz tylko niewiele słabszymi (w sensie wartości funkcji celu) dostarczanymi rozwiązaniami. Przykładowo dla testowanych łatwych instancji algorytm bazujący na rozwiązaniach super-aktywnych, moŜe znaleźć w najlepszym przypadku rozwiązania o średnim błędzie 0,32%,
podczas gdy algorytm bazujący na rozwiązaniach pseudo-aktywnych moŜe znaleźć rozwiązania ze
średnim błędem mniejszym niŜ 0,01% (błąd liczony względem wartości funkcji celu rozwiązania
optymalnego). Wynika z tego, Ŝe klasa rozwiązań pseudo-aktywnych jest szczególnie polecana dla
przykładów łatwych, gdzie osiągane błędy względne są bardzo małe. Natomiast klasę rozwiązań superaktywnych poleciłbym dla przykładów trudnych, gdzie znajdowane rozwiązania są ciągle dalekie od
ideału (wartość funkcji celu jest duŜo większa niŜ wartość funkcji celu rozwiązania optymalnego).
Zastosowanie algorytmu PGA dla przykładów łatwych, a algorytmu SGA dla przykładów trudnych było dobrą decyzją. Dodatkowe testy na trudnych przykładach wykazały przewagę algorytmu
SGA nad PGA. Oba algorytmy działały jednakowo długo, przy czym algorytm SGA wykonywał 2 razy
więcej iteracji niŜ algorytm PGA. Dostarczane algorytmem SGA rozwiązania były około 1% lepsze w
sensie wartości funkcji celu od rozwiązań dostarczonych przez algorytm PGA. Natomiast w przypadku
przykładów łatwych algorytm SGA mógłby w najlepszym wypadku znaleźć rozwiązania gorsze o
0,31% niŜ znalezione rozwiązania algorytmem PGA. Wynika to z faktu, Ŝe najlepsze rozwiązania w
klasie rozwiązań super-aktywnych są gorsze od rozwiązań dostarczonych algorytmem PGA (patrz
tabela 1 i tabela 3).
Ponadto na szczególną uwagę zasługuje fakt, Ŝe dla wszystkich przykładów łatwych algorytm PGA
znalazł najlepsze moŜliwe rozwiązania. MoŜna powiedzieć, Ŝe znalazł rozwiązania optymalne w klasie
rozwiązań pseudo-aktywnych (patrz tabela 1 i tabela 3). Wśród tych rozwiązań aŜ 21 na 22 to
rozwiązania optymalne (patrz tabela 2).
Porównując osiągnięte rezultaty względem literaturowego algorytmu GASA wyraźnie widać
przewagę proponowanych algorytmów. Wszystkie porównywane algorytmy są algorytmami genetycznymi (algorytm GASA zawiera w sobie dodatkowo elementy symulowanego wyŜarzania). Algorytmy
SGA i PGA dostarczają rozwiązań zdecydowanie lepszych w sensie wartości funkcji celu niŜ
literaturowy algorytm GASA działający w porównywalnym czasie. Pisząc o porównywalnym czasie
uwzględniam zarówno realny czas działania algorytmu, jak i róŜnicę w szybkości pracy komputerów.
Dla łatwych instancji algorytm GASA dostarczył rozwiązań z średnim błędem 3,68%, podczas, gdy
algorytm PGA w identycznym czasie (po uwzględnieniu róŜnicy szybkości komputerów) wygenerował
rozwiązań o średnim błędzie 0,01%. Podobnie dla przykładów trudnych algorytm GASA dostarczył
rozwiązania z średnim błędem 8,32%, podczas, gdy algorytm SGA wygenerował rozwiązania z
średnim błędem 1,38%. Definicja omawianych błędów zawarta jest w rozdziale 4.1.
Warto takŜe zwrócić uwagę na fakt całkowitej rezygnacji, w testowanej wersji algorytmu SGA, z
tradycyjnej mutacji, na rzecz mutacji osobników podobnych (patrz dodatkowa dywersyfikacja w
rozdziale 4). Prezentowane podejście nie wymaga precyzyjnego strojenia a uzyskiwane rozwiązania są
statystycznie lepsze (w sensie wartości funkcji celu) niŜ w przypadku podejścia tradycyjnego.
Praca była częściowo finansowana ze środków KBN grant T11A01624.
PIŚMIENNICTWO CYTOWANE
[1] WISMER D.A., Solution of the flowshop scheduling-problem with no intermediate queues. Operations
Research. 1972, 20, 689.
[2] HALL N., SRISKANDARAJAH C., A survey of machine scheduling-problems with blocking and no-wait in
process. Operations Research. 1996, 44 (3), 510.
[3] GRABOWSKI J., PEMPERA J., Sequencing of jobs in some production system. European Journal of Operational
Research. 2000, 125, 535.
[4] LENSTRA J., RINNOOY KAN A., Computational complexity of discrete optimization problems. Annals of
Discrete Mathematics, 1979, 4, 121.
[5] BRUCKER P., JURISCH B., SIEVERES B., A branch and bound algorithm for the job-shop-scheduling-problem,
Discrete Applied Mathematics, 1994, 49, 107.
[6] NOWICKI E., SMUTNICKI C., A fast taboo search algorithm for the job shop scheduling problem, Managment
Science, 1996, 42 (6), 797.
[7] PEZZELLA F., MERELLI E., A tabu search method guided by shifting bottleneck for job-shop-schedulingproblem, branch and bound algorithm for the job-shop-scheduling-problem, European Journal of
Operational Research. 2000, 120, 297.
[8] SAHNI S., CHO Y., Complexity of scheduling shops with no-wait in process, Mathematics of Operations
Research, 1979, 4, 448.
[9] MASCIS A., PACCIARELLI D., Job shop scheduling with blocking and no-wait constraints, European Journal of
Operational Research. 2002, 142 (3), 498.
[10] MACCHIAROLI R., MOLE S., RIEMMA S., Modelling and optimization of industrial manufacturing processes
subject to no-wait constrains, International Journal of Production Research, 1999, 37 (11), 2585.
[11] RAAYMAKERS W., HOOGEVEEN J., Scheduling multipurpouse batch process industries with no-wait
restrictions by simulated annealing, European Journal of Operational Research. 2000, 126, 131.
[12] SCHUSTER C., FRAMINAN J., Approximative procedures for no-wait job shop scheduling, Operations Research
Letters. 2003, 31, 308.
[13] GRAHAM R., LAWLER E., LENSTRA J., RINNOOY KAN A., Optimization and approximation in deterministic
sequencing and scheduling: a survey, Annals of Discrete Mathematics, 1979, 5, 287.
[14] HOLLAND J.H., Genetic Algorithms, Scientific American, 1992, 267, 44.
[15] Makuchowski M., Problemy gniazdowe z operacjami wielomaszynowymi. Własności i algorytmy. Raport
Politechniki Wrocławskiej, seria: Preprinty nr 37 / 2004.
GENETIC ALGORITHM
FOR NO-WAIT JOB SHOP PROBLEM
Keywords: (no-wait job shop problem, super active solutions, pseudo active solutions, genetic algorithm)
Summary: The paper deals with the no-wait job shop scheduling problem with the makespan criterion. The new
class of so called “super-active” solution is introduced. Two genetic algorithms SGA and PGA, based on
aforementioned class, and the class of “pseudo-active” schedules, are proposed. These algorithms are tested on
“easy” and “hard” benchmarks well-know in literature. Results of computational experiments are given and they
are compared with results yielded by the best genetic algorithm discusses in literature.

Podobne dokumenty