Algorytm ewolucyjny dla problemu szeregowania zadań w systemie

Transkrypt

Algorytm ewolucyjny dla problemu szeregowania zadań w systemie
szeregowanie zadań, algorytmy ewolucyjne
Adam STAWOWY*
ALGORYTM EWOLUCYJNY DLA PROBLEMU SZEREGOWANIA ZADAŃ W
SYSTEMIE PRZEPŁYWOWYM
W pracy zaprezentowano algorytm programowania ewolucyjnego do problemu szeregowania zadań w systemie
przepływowym przy kryterium minimalizacji długości uszeregowania oraz przedstawiono wyniki badań porównawczych z
techniką Tabu Search. Cechami charakterystycznymi programowania ewolucyjnego jest zależność odchylenia
standardowego mutacji od wartości funkcji dopasowania rodzica oraz losowy charakter selekcji potomków przechodzących
do nowego pokolenia. W opracowanej przez autora wersji tego algorytmu wykorzystano nowy operator mutacji
dostosowany do problemu szeregowania. Wyniki badań wykazały, że algorytm ten, szczególnie dzięki nowej mutacji oraz
starannemu doborowi wszystkich parametrów, jest dokładniejszy niż algorytmy genetyczne opisywane w literaturze i
może konkurować, z dużo bardziej skomplikowanymi, algorytmami Tabu Search.
1. WPROWADZENIE
Zagadnienie szeregowania zadań w systemie przepływowym jest takim przypadkiem
szeregowania zadań, gdzie - na skutek przyjętych założeń - liczba możliwych sekwencji zadań
wynosi n!. Już dla 10 zadań liczba wszystkich sekwencji wynosi 3628800; przeszukanie tak
dużej liczby wariantów po to, by wybrać optymalne uporządkowanie zadań jest nierealne
czasowo i/lub nieopłacalne ekonomicznie. Udowodniono, że problem ten jest zagadnieniem
silnie NP-trudnym, co oznacza, że nie jest możliwe sformułowanie efektywnego algorytmu, dla
którego funkcja złożoności obliczeniowej jest ograniczona od góry przez wielomian liczby
zadań n [1]. Dlatego też, już od połowy lat 60, obserwuje się burzliwy rozwój wielomianowych
algorytmów heurystycznych dających rozwiązania przybliżone.
Jako kryterium optymalizacji w procesie przepływowym stosowana jest powszechnie
długość uszeregowania (DU) czyli czas zakończenia wykonywania zadań w systemie (ang.
makespan):
C max  maxC iM 
i
gdzie:
n
M
Mj *
liczba zadań
liczba stopni przetwarzania (zespołów technologicznych, maszyn, urządzeń)
urządzenie nr j, j=1, ... , M
Wydział Zarządzania, Akademia Górniczo-Hutnicza
(1)
Zi
-
zadanie nr i, i=1, ... ,n
tij
Cij
-
czas wykonywania operacji zadania Zi na urządzeniu Mj
czas zakończenia wykonywania zadania Zi na urządzeniu Mj
2. ALGORYTMY EWOLUCYJNE
Algorytmy ewolucyjne (ang. Evolutionary Algorithms - EA) są szeroko stosowaną
techniką (często o charakterze heurystycznym) przeszukiwania i optymalizacji opartą na
zasadach przejętych z teorii ewolucji. Naturalność oraz prostota działania sprawiły, że
algorytmy te są chętnie wykorzystywane w naukach zarządzania do rozwiązywania problemów
optymalizacji kombinatorycznej, a w szczególności - do szeroko rozumianych problemów
alokacji zasobów. W klasie tej mieszczą się również zagadnienia szeregowania zadań.
Algorytmy ewolucyjne nie gwarantują znalezienia optimum globalnego, jednak
generalnie zapewniają znalezienie rozwiązania wystarczająco dobrego w akceptowalnym
przedziale czasu [10]. Stąd głównym zastosowaniem tych algorytmów powinny być problemy,
dla których nie istnieją techniki specjalizowane. Nawet jeśli techniki takie istnieją, można
osiągnąć poprawę ich działania poprzez ich połączenie z algorytmami ewolucyjnymi.
Wyróżnia się cztery typy EA, aczkolwiek podział ten nie jest ostry [12]:
· algorytmy genetyczne (ang. Genetic Algorithms - GA),
· strategie ewolucyjne (ang. Evolution Strategies - ES),
· programowanie ewolucyjne (ang. Evolutionary Programming - EP),
· programowanie genetyczne (ang. Genetic Programming - GP).
W ostatnich latach pojawiło się kilka publikacji dotyczących zastosowania algorytmów
ewolucyjnych dla problemu przepływowego - wszystkie wykorzystują różne wersje algorytmu
genetycznego: są to przede wszystkim prace Mulkensa [11], Reeves’a [16] oraz Chena i
zespołu [3]. W swoich publikacjach autorzy ci porównali swoje heurystyki z techniką
symulowanego wyżarzania oraz algorytmem Ho i Changa [8]; badania obliczeniowe
potwierdziły efektywność działania techniki GA.
Wcześniejsze prace autora [17, 18] również dotyczyły algorytmu genetycznego:
przeprowadzone eksperymenty wykazały, że operatory krzyżowania - mimo dużego nakładu
obliczeniowego - z reguły dają rozwiązania gorsze niż rodzicielskie, a przy tym zawężają
obszar przeszukiwań; wniosek ten potwierdziły prace Parka i Cartera [15]. Dlatego też autor
przerwał prace nad algorytmem genetycznym i podjął badanie innych algorytmów
ewolucyjnych.
3. PROGRAMOWANIE EWOLUCYJNE DO SZEREGOWANIA ZADAŃ W SYSTEMIE
PRZEPŁYWOWYM
Cechami charakterystycznymi programowania ewolucyjnego jest zależność odchylenia
standardowego mutacji od wartości funkcji dopasowania rodzica oraz losowy charakter
selekcji potomków przechodzących do nowego pokolenia [12].
Populacja liczy m rodziców, w każdym kroku iteracyjnym (pokoleniu) z każdego rodzica
na drodze mutacji otrzymywanych jest l potomków. Co pokolenie następuje selekcja globalna,
podczas której µ najlepszych, spośród wszystkich nowo wygenerowanych rozwiązań zastępuje
pokolenie rodziców. Selekcja globalna wykonywana jest w ten sposób, że dla każdego
rozwiązania losowanych jest lk konkurentów spośród reszty rozwiązań i zliczana jest liczba
zwycięstw (wartość funkcji dopasowania rozwiązania jest większa niż wartość funkcji
konkurenta). Do następnego pokolenia przechodzą te rozwiązania, które mają na koncie
najwięcej zwycięstw. Prawidłowy dobór liczby lk jest niesłychanie ważny, gdyż zbyt mała
liczba konfrontacji powoduje, iż do następnego pokolenia dostają się rozwiązania
przypadkowe, zaś zbyt duża - zastępuje wybór losowy wyborem praktycznie
deterministycznym (wybierane są tylko najlepsze rozwiązania, w sensie funkcji dopasowania).
Eksperymentalnie ustalono następujące elementy algorytmu:
· rozmiar populacji,
· parametry mechanizmu selekcji,
· liczbę generowanych potomków z jednego rodzica,
· warunek zakończenia obliczeń.
Przyjęto, że funkcja dopasowania jest określona następującym wzorem:
FD 
DG
1  DU  DG
(2)
gdzie:
DG - dolna granica obliczana wg zasady podanej w pracy Taillarda [20],
DU - długość uszeregowania (makespan).
Taka konstrukcja funkcji pozwala na jej maksymalizowanie, co jest zalecane dla
poprawnego działania algorytmów ewolucyjnych. Ponadto funkcja taka silniej różnicuje
rozwiązania o zbliżonej długości uszeregowania niż czyniłaby to funkcja jedynie długości
uszeregowania oraz niesie dodatkową informację o potencjalnie optymalnym rozwiązaniu.
Przyjęta funkcja ma również ciekawą właściwość, że jeśli DU=DG to FD=DG.
Operator mutacji wzięty z typowego programowania ewolucyjnego nie jest odpowiedni
dla zagadnień permutacyjnych [12]. Autor opracował nowy operator bazujący na założeniach:
· potomek nie powinien różnić się bardzo od rodzica,
· „gorszy” rodzic powinien podlegać intensywniejszej mutacji niż rodzic „lepszy”,
· intensywność mutacji powinna maleć w kolejnych pokoleniach.
W rezultacie powstał operator NDSM (ang. Normally Distributed Shift Mutation) działający w
ten sposób, że zadanie z wylosowanej pozycji przesuwane jest o liczbę pozycji wylosowaną z
rozkładu normalnego N(0,s). Schematycznie przedstawia to rysunek 1.
Formalny zapis działania operatora NDSM wygląda następująco:
przesunięcie  round ( N (0,  )) · FD / MaxFD
(3)
   · cr gen
gdzie:
s0
cr
- początkowe odchylenie standardowe równe 0,15·n
- czynnik redukujący wartość odchylenia w kolejnych generacjach
cr = exp((ln(sk)-ln(s0))/maxgen
sk
gen
maxgen
FDi
MaxFD
- końcowa wartość odchylenia standardowego równa 0,03·n
- numer aktualnej generacji
- maksymalna liczba generacji
- funkcja dopasowania i-tego rodzica
- najlepsza znaleziona wartość funkcji dopasowania
Intensywność mutacji (mierzona średnią wielkością przesunięcia) jest duża na początku
działania algorytmu i zmniejsza się z czasem w ślad za zmianą wartości odchylenia
standardowego, które maleje wykładniczo od s0 do sk. Jest to intuicyjnie zrozumiałe, gdyż na
początku procesu przeszukiwania szansa na poprawę rodzicielskiego rozwiązania poprzez
silniejsze zaburzenie jest dużo większa niż w końcowej fazie procesu, gdzie rodzic jest z
reguły rozwiązaniem bliskim optymalnemu.
Z rozkładu normalnego
wylosowano liczbę -2,63,
stąd zadanie z pozycji 12
zostanie przesunięte na
pozycję nr 9
s
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
wylosowana pozycja
Rys. 1. Schemat działania operatora NDSM.
Fig 1. The example of NDSM performance.
Ostateczną wersję programowania ewolucyjnego dla problemu przepływowego
charakteryzują zebrane w tabeli 1 elementy i parametry.
Tabela 1. Elementy programowania ewolucyjnego dla problemu przepływowego.
Funkcja dopasowania
DG
FD( Ri ) 
Postać
1  DU ( R )  DG
i
Techniki zaawansowane
Schemat i populacja
Reprezentacja
Rozmiar populacji
Inicjalizacja
Selekcja
pokolenia
nie stosowano
lista (ciąg) n zadań
7 rodziców, 30 potomków
cztery uszeregowania wygenerowano metodami CDS [2],
Dannenbringa [4], Gupty [7] i Palmera [14], reszta wygenerowana została w sposób losowy
następnego do następnego pokolenia przechodzą te rozwiązania, które mają
na koncie najwięcej zwycięstw w konfrontacji z 80 losowo
wybranymi konkurentami spośród populacji potomków
Warunek zatrzymania
po wykonaniu 5 000 iteracji
Reprodukcja
Mutacja
Operator mutacji
Pm
nie stosowano
NDSM
1,0
4. BADANIA EKSPERYMENTALNE
Algorytm ewolucyjny testowano przy użyciu przykładowych problemów Taillarda [20].
Testy te składają się ze 120 szczególnie trudnych przypadków o 12 różnych rozmiarach,
wybranych spośród wielkiej liczby losowo wygenerowanych problemów. Dla każdego n·M. =
{20·5, 20·10, 20·20, 50·5, 50·10, 50·20, 100·5, 100·10, 100·20, 200·10, 200·20, 500·20}
Taillard wybrał 10 przykładów.
Algorytm programowania ewolucyjnego (PE) porównano z algorytmami Tabu Search
Taillarda (T) [19] oraz Nowickiego i Smutnickiego (TSAB) [13]. Algorytm ewolucyjny działał
zgodnie ze schematem przedstawionym w tabeli 1. W każdym przypadku wykonywano pięć
przebiegów obliczeniowych, spośród których wybrano najlepszy rezultat. Wyniki testów
zawiera tabela 2; pogrubioną czcionką oznaczono najlepsze rezultaty spośród otrzymanych
podczas badań lub znalezionych w literaturze. Nie przedstawiono wyników testów dla
problemów o najmniejszych rozmiarach {20·5, 20·10, 20·20, 50·5}, gdyż wszystkie
algorytmy osiągnęły identyczne rezultaty; z tego też względu nie uwzględniono tych wyników
w badaniach statystycznych.
Następnie zbadano, czy różnice pomiędzy wynikami otrzymywanymi przez
poszczególne techniki są istotne. W tym celu dla każdego rozmiaru problemu obliczono dla
poszczególnych algorytmów względną odległość od najlepszego rozwiązania i tak
otrzymane średnie poddano testowi Cochrana-Coxa [5].
Tabela 2. Zestawienie długości uszeregowań porównywanych algorytmów dla przykładowych
problemów Taillarda.
Rozmiar
50·10
50·20
Algorytm
T
TSAB
PE
T
TSAB
PE
1
3037
3886
3875
3025
3025
3865
2
2911
2892
3733
2883
3715
3715
3
2871
2864
3673
3671
2862
3668
4
3067
3064
3755
3752
3063
3749
5
3011
2986
2988
3648
3638
3635
6
3021
3719
3698
3006
3006
3697
7
3124
3109
3730
3725
3107
3716
8
3048
3737
3723
3039
3039
3709
9
2910
3772
2902
2902
3765
3765
10
3100
3791
3777
3091
3091
3775
Rozmiar
Algorytm
1
2
3
4
5
6
7
8
9
10
Rozmiar
Algorytm
1
2
3
4
5
6
7
8
9
10
Rozmiar
Algorytm
1
2
3
4
5
6
7
8
9
10
T
5493
5274
5175
5018
5250
5135
5247
5094
5448
5328
T
6330
6320
6364
6331
6405
6487
6379
6514
6386
6534
T
11393
11445
11522
11461
11427
11368
11536
11544
11424
11528
100·5
TSAB
5493
5268
5175
5014
5250
5135
5246
5094
5448
5328
100·20
TSAB
6286
6241
6329
6306
6377
6437
6346
6481
6358
6465
200·20
TSAB
11294
11420
11446
11347
11311
11282
11456
11415
11343
11422
PE
5493
5268
5175
5017
5250
5135
5251
5094
5448
5322
T
5776
5362
5679
5820
5491
5308
5600
5640
5891
5865
PE
6250
6248
6340
6323
6399
6446
6334
6488
6347
6507
T
10872
10500
10956
10893
10537
10347
10882
10754
10465
10727
PE
11303
11361
11461
11411
11375
11335
11478
11463
11350
11430
T
26316
26807
26626
26642
26509
26654
26575
26794
26241
26662
100·10
TSAB
5770
5349
5677
5791
5468
5303
5599
5623
5875
5845
200·10
TSAB
10868
10494
10922
10889
10524
10331
10857
10731
10438
10676
500·20
TSAB
26189
26629
26458
26549
26404
26581
26461
26615
26083
26527
PE
5771
5348
5623
5807
5474
5308
5599
5640
5884
5830
PE
10872
10507
10923
10893
10527
10331
10860
10741
10438
10681
PE
26268
26764
26493
26628
26467
26605
26490
26720
26170
26604
Analizując otrzymane wyniki można stwierdzić, iż nie ma statystycznych różnic
między algorytmami dla problemów o rozmiarach 100·5 i 100·10. W pozostałych
przypadkach:
· algorytm TSAB dominuje nad techniką TS w wersji Taillarda,
· TSAB dominuje nad programowaniem ewolucyjnym dla największego problemu (liczba
zadań równa 500); w pozostałych przypadkach nie ma statystycznych różnic między
algorytmami,
· programowanie ewolucyjne dominuje nad algorytmem Taillarda za wyjątkiem problemu
500·20, gdzie nie ma statystycznych różnic między tymi technikami.
Programowanie ewolucyjne znalazło ogółem 15 rozwiązań lepszych niż spotkane do tej
pory w literaturze fachowej dla problemów o różnych rozmiarach. Autor nie napotkał w
literaturze przedmiotu opisu algorytmu ewolucyjnego, który dawałby rezultaty zbliżone do
opisanych powyżej.
5. WNIOSKI KOŃCOWE
Badania eksperymentalne wykazały, że:
· algorytm ewolucyjny opracowany przez autora, szczególnie dzięki nowej mutacji oraz
starannemu doborowi wszystkich parametrów, jest efektywniejszy niż algorytmy
genetyczne opisywane w literaturze i może konkurować, z dużo bardziej
skomplikowanymi, algorytmami typu Tabu Search.
· istnieje możliwość wykorzystania opisanego algorytmu w systemach, gdzie czynnik
czasu ma decydujące znaczenie; algorytm stosunkowo szybko dochodzi do dobrych
rozwiązań i w razie konieczności przerwania obliczeń najlepsze znalezione dotychczas
rozwiązanie można uznać za rozwiązanie suboptymalne.
Przeprowadzone badania wykazały dużą przydatność algorytmów ewolucyjnych dla
problemu szeregowania zadań w permutacyjnym systemie przepływowym. Wielką ich zaletą
jest prostota, elastyczność oraz brak potrzeby wnikania w strukturę rozwiązywanego
problemu.
Celowe jest prowadzenie dalszych badań nad możliwością stosowania tych technik do
wspierania procesu projektowania organizacji procesu produkcyjnego. W pracach
uwzględnione zostaną parametry ekonomiczne, związane z organizacją i technologią
procesu produkcyjnego.
LITERATURA
[1] Błażewicz J., Cellary W., Słowiński R., Węglarz J., Badania operacyjne dla informatyków, Warszawa, WNT,
1983.
[2] Campbell H.G., Dudek R.A., Smith M.L., A heuristic algorithm for the n job m machine sequencing problem,
Management Science, vol. 16, 1970, pp. 630-637.
[3] Chen Ch.-L., Vempati V.S., Aljaber N., An application of genetic algorithms for flow shop problems, European
[4]
[5]
[6]
Journal of Operational Research, 1995, Vol.80, pp. 389-396.
Dannenbring D.G., An evaluation of flow shop sequencing heuristics, Management Science, 1977, Vol. 23, No 11,
pp. 1174-1182.
Domański C., Testy statystyczne, Warszawa, PWE 1990.
Dudek R.A., Panwalkar S.S., Smith M.L., The lessons of flowshop scheduling research, Operations Research, 1992,
Vol. 40, pp. 7-13.
[7] Gupta J.N.D., A functional heuristic algorithm for the flop-shop scheduling problem, Operational Research
Quarterly, 1971, Vol.22, pp. 39-47.
[8] Ho J.C., Chang Y.L., A new heuristic for the n-job, M-machime flow-shop problem, European Journal of
Operational Research, 1990, Vol. 52, pp. 194-206.
[9] Johnson S.M., Optimal two- and three-stage production schedules with set-up times included, Naval Research
Logistics Quarterly, 1954, Vol. 1, pp. 61-68.
[10] Michalewicz Z., Genetic algorithm + data structures = evolution programs, Berlin, Springer-Verlang, 1992.
[11] Mulkens H., Revisiting the Johnson algorithm for flow-shop scheduling with genetic algorithms, KnowledgeBased Reactive Scheduling, Amsterdam, North-Holland, 1994.
[12] Nissen V., Evolutionary algorithms in management science. An overview and list of references, Papers on
Economics & Evolution, report no. 9303, European Study Group for Evolutionary Economics, 1993.
[13] Nowicki E., Smutnicki Cz., A fast tabu search algorithm for the flow shop problem, Wrocław, Wydawnictwo
Politechniki Wrocławskiej, 1994.
[14] Palmer D.S., Sequencing jobs through a multi-stage process in the minimum total time - a quick method of
obtaining near optimum, Operational Research Quarterly, 1965, Vol. 16, pp. 101-107.
[15] Park K., Carter B., On the effectivness of genetic search in combinatorial optimization,, serwer Boston University,
Boston, 1995.
[16] Reeves C.R., A genetic algorithm for flowshop sequencing, Computers and Operations Research, 1994, Vol. 22,
No. 1, pp. 5-13.
[17] Stawowy A., Wrona R., Algorytm genetyczny dla problemu szeregowania zadań w systemie przepływowym,
Kwartalnik Elektrotechnika, 1995, T. 14, Z. 4.
[18] Stawowy A., Mazur Z., Heurystyczne algorytmy szeregowania zadań produkcyjnych i grupowania wyrobów,
Nowoczesne metody zarządzania produkcją, pod red. Z.Martyniaka, Wydział Zarządzania AGH, Kraków, 1996.
[19] Taillard E., Some efficient heuristic methods for flow shop sequencing, European Journal of Operational Research,
1990, Vol. 47, pp. 65-74.
[20] Taillard E., Benchmarks for basic scheduling problems, European Journal of Operational Research, 1993, Vol.
64, pp. 278-285.
STRESZCZENIE (An evolutionary algorithm for flowshop problem)
The flowshop scheduling problem is one of NP-complete problems. It means no known exact algorithm can solve all
problem instances in polynomial time since worst-case performances scales exponentially with problem size. Heuristics
produce results whose quality is uncertain, but they are easy to implement, flexible and can be designed to execute in a given
amount of time.
An evolutionary programming for the flowshop scheduling problem is presented in the paper. The new mutation
tailored to ordering problems is also described. This algorithm is tested and compared with tabu search heuristic. The
simulation results show that the new heuristic is very good for all size problems.