• Nie Znaleziono Wyników

ALGORYTM SYMULOWANEGO WY

N/A
N/A
Protected

Academic year: 2021

Share "ALGORYTM SYMULOWANEGO WY"

Copied!
10
0
0

Pełen tekst

(1)

ALGORYTM SYMULOWANEGO WYśARZANIA DLA PROBLEMU GNIAZDOWEGO Z OGRANICZENIEM BEZ CZEKANIA

Mariusz Makuchowski

Streszczenie: W pracy rozwaŜa się problem gniazdowy z ograniczeniem bez czekania.

Przedstawia się pewne nowe klasy rozwiązań, tak zwane rozwiązania lewo i prawo aktywne. Następnie na jaj bazie proponuje się algorytm symulowanego wyŜarzania.

Przeprowadza się badania numeryczne z zastosowaniem duŜej liczby literaturowych przykładów testowych. Pracę kończy analiza porównawcza opisanego algorytmu w stosunku do innych algorytmów znanych z literatury.

Słowa kluczowe: problem gniazdowy, rozwiązania lewo i prawo aktywne, algorytm symulowanego wyŜarzania.

1. Wstęp

Problem gniazdowy z kryterium będącym momentem zakończenia wykonywania wszystkich zadań jest jednym z najintensywniej badanych problemów w teorii szeregowania. Tak wielkie zainteresowanie powyŜszym problemem wynika z faktu, iŜ modeluje on wiele praktycznych procesów przemysłowych. Często jednak zdarza się, Ŝe w modelowanym procesie produkcyjnym występują róŜnego rodzaju dodatkowe ograniczenia, wynikające najczęściej bezpośrednio z procesu technologicznego lub z dostępnego parku maszyn. Przykładem takich ograniczeń moŜe być ograniczony czas oczekiwania zadań pomiędzy kolejnymi operacjami technologicznymi czy ograniczona moŜliwość magazynowania zadań pomiędzy stanowiskami. Uwzględnienie opisanych ograniczeń tworzy nowe klasy problemów szeregowania. Jednym z takich problemów jest problem gniazdowy z ograniczeniem „bez czekania”. Powstaje on przez nałoŜenie w klasycznym problemie wymagania natychmiastowego rozpoczęcia operacji, dokładnie w chwili zakończenia wykonywania jej poprzednika technologicznego. Problemy takie występują bardzo licznie w procesach wytwarzania Ŝywności [2], lekarstw [8] czy wyrobu stali [11].

Problem gniazdowy z ograniczeniem „bez czekania”, podobnie jak jego klasyczny odpowiednik, jest problemem silnie NP-trudnym [4]. Co więcej, w pracy [9] pokazano, Ŝe nawet dwu-maszynowy problem gniazdowy z ograniczeniem bez czekania nadal pozostaje w klasie problemów silnie NP-trudnym. Ponadto wśród wielu badaczy istnieje subiektywna opinia, iŜ z praktycznego punktu widzenia, problem z ograniczeniem „bez-czekania” jest znacznie trudniejszy od swego klasycznego odpowiednika. Potwierdza to, mały rozmiar przykładów, dla których moŜna zastosować algorytm dokładny, bazujący na metodzie podziału i ograniczeń [7]. Algorytm ten 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. Dlatego dla większych przykładów proponuje się róŜnego rodzaju algorytmy przybliŜone. I tak w pracy [5] przedstawiono algorytm oparty na technice poszukiwania z zabronieniami, w pracy [8] algorytm oparty na technice symulowanego wyŜarzania, a w pracy [10] algorytm genetyczny z elementami symulowanego wyŜarzania.

(2)

W dalszej części pracy przedstawię pewne klasy uszeregowań tzw. rozwiązania lewo i prawo aktywne. Następnie opiszę ich własności istotne z punktu widzenia projektowania algorytmów popraw oraz przeprowadzę eksperyment numeryczny potwierdzający wysoką jakość omawianych klas. Kolejno zaproponuję algorytm ActiveSA oparty na metodzie symulowanego wyŜarzania, ograniczający się do analizy rozwiązań lewo i prawo aktywnych. Jakość prezentowanego algorytmu oceniam na podstawie jakości wygenerowanych rozwiązań dla szerokiej klasy literaturowych przykładów testowych. W tabelach przedstawiam zarówno jakość uzyskanych rozwiązań z jednego przebiegu algorytmu ActiveSA, jak i rozwiązania referencyjne będące najlepszymi rozwiązaniami (lewo lub prawo aktywnymi) uzyskanymi podczas etapu strojenia tego algorytmu.

Efektywność proponowanego algorytmu porównuję, takŜe w stosunku do innego algorytmu GASA znanego z literatury.

2. Sformułowanie problemu

Analizowany w pracy problem gniazdowy z dodatkowym ograniczeniem „bez czekania” oraz funkcją kryterialną będącą momentem zakończenia wykonywania wszystkich zadań oznaczany jest w notacji Grahama [1] przez J|nowait|Cmax. PoniewaŜ problem ten był juŜ on wielokrotnie analizowany w literaturze światowej, w niniejszej pracy proponuję przyjąć model matematyczny (wraz z oznaczeniami) zaproponowany mi. w pracy [10].

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 kJ dany jest ciąg

) , , ( 1k rk

k o ok

O = K zawierający r operacji produkcyjnych. Operacja k olk składa się z pary )

,

(mlk plk określającej kolejno: m wykorzystywanlk ą maszynę oraz p czas trwania lk 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.

W klasycznym problemie gniazdowym jako rozwiązanie przyjmuje się wektor terminów rozpoczęcia wszystkich operacji. JednakŜe zauwaŜmy, Ŝe w przypadku ograniczenia bez czekania podanie terminu rozpoczęcia jakiejkolwiek operacji danego zadania precyzyjnie określa nam terminy rozpoczęcia pozostałych operacji. Dlatego przy dodatkowym ograniczeniu bez czekania jako rozwiązanie przyjmuje się wektor

) , , (t1 tn

T = K terminów rozpoczęcia zadań. Termin t rozpoczęcia zadania k jest równy k momentowi rozpoczęcia pierwszej operacji tego zadania o1k. Rozwiązanie spełniające

(3)

wszystkie powyŜsze ograniczenia nazywamy rozwiązaniem dopuszczalnym. Długością )

max(T

C uszeregowania T nazywamy termin wykonania wszystkich zadań:

) (

max ) (

1

max

+ =

= k

r

l k l J k

k t p

T

C . (1)

Problem polega na znalezieniu rozwiązania dopuszczalnego T* o najmniejszej długości uszeregowania Cmax(T*)

.

3. Rozwiązania lewo i prawo aktywne

W dalszej części pracy ograniczymy się do tzw. uszeregowań lewo i prawo aktywnych.

Przypomnijmy najpierw definicję rozwiązania aktywnego:

Definicja 1. Rozwiązanie jest aktywne, gdy (i) jest rozwiązaniem dopuszczalnym, (ii) nie moŜna rozpocząć, Ŝadnego zadania (lub kilku zadań) wcześniej tak by bez opóźnienia jakiegokolwiek z pozostałych zadań rozwiązanie było dalej dopuszczalne.

Operacje przedstawione na wykresie Gantta przedstawiającego rozwiązanie aktywne dosunięte są maksymalnie w lewą stronę. Oczywiste jest, Ŝe najlepsze (w sensie minimalizacji wartości Cmax) z rozwiązań aktywnych jest rozwiązaniem optymalnym.

Definicja 2. Uszeregowania, które moŜna utworzyć z „pustego rozwiązania”, poprzez systematyczne dodawanie zadań do harmonogramu częściowego w taki sposób, aby w kaŜdym momencie tego procesu rozwiązanie częściowe było aktywne nazywamy rozwiązaniem lewo aktywnym.

Z definicji 2 rozwiązania lewo aktywnego, wynika bezpośrednio sposób generacji tych rozwiązań. Procedura ta składa się n identycznych kroków. W kaŜdym z nich identyfikowane jest pewne zadanie, po czym dokładane jest ono najwcześniej jak to jest moŜliwe (nie zmieniając połoŜenia zadań wcześniej juŜ uszeregowanych). Kolejność układanych zadań nazywamy permutacją ładującą π=(π(1)(2),...(n)).

Podstawowymi własnościami rozwiązań lewo aktywnych, są:

• stosunkowo mała liczność w porównaniu do liczności rozwiązań aktywnych,

statystycznie bardzo wysoka jakość (w sensie minimalizacji Cmax),

• brak gwarancji, Ŝe wśród nich zawiera się rozwiązanie optymalne.

W celu zmniejszenia intensywności 3 własności rozwiązania lewo aktywne rozszerzyłem o ich symetryczne odpowiedniki. W tym celu zamieniłem relacje kolejnościowe występujące pomiędzy operacjami tego samego zadania na przeciwne, następnie zastosowałem opisaną procedurę tworzącą rozwiązanie lewo aktywne. Tak uzyskany harmonogram naleŜy następnie zinterpretować jako lustrzane odbicie właściwego rozwiązania. Tę nową klasę uszeregowań będę nazywał dalej rozwiązaniami prawo aktywnymi. Operacje uszeregowania prawo aktywnego T przedstawione na wykresie Gantta, dosunięte są moŜliwie najdalej w prawą stronę, nie przekraczają jednak momentu czasu Cmax(T).

Praktyczna jakość rozwiązań lewo i prawo aktywnych została potwierdzona w sposób doświadczalny. Badania przeprowadziłem dla literaturowych przykładów testowych, w

(4)

których znałem wartość Cmax(T*) rozwiązania optymalnego

T

*. Dla tych przykładów zastosowałem algorytm dokładny wyznaczający wartości Cmax(TL*) i Cmax(TP*) najlepszych rozwiązań TL* lewo i TP* prawo aktywnych. Następnie policzyłem błąd względny dla otrzymanych rozwiązań zgodnie z wzorem:

*), ( /

*)) ( )

( (

% 100 )

(T = ⋅ Cmax TCmax T Cmax T

ρ (2)

a (uśrednione dla grup przykładów) wyniki zamieściłem w tabeli 1.

Tab.1. Błąd względny najlepszych rozwiązań TL* lewo i TP* prawo aktywnych względem rozwiązania optymalnego T*.

Nazwa Rozmiar Błąd względny najlepszego rozwiąznia aktywnego przykładu przykładu

N x M

lewego [%]

prawego [%]

lewego lub prawego [%]

La01- La02 10 x 5 0,70 0,00 0,00

La16- La20 10 x 10 0,19 0,83 0,00

Orb01-Orb05 10 x 10 0,07 0,61 0,03

Orb06-Orb10 10 x 10 0,46 0,12 0,00

Ft06,Ft10 6 x 6, 10 x 10 0,00 0,06 0,00

Średnia 0,32 0,36 0,01

Jak wynika z tabeli 1, ograniczając się wyłącznie do poszukiwań rozwiązań lewo lub prawo aktywnych, statystycznie będziemy mogli znaleźć rozwiązania niewiele róŜniące się od rozwiązania optymalnego (w sensie wartości Cmax). Ponadto zastosowanie poszukiwania dla rozwiązań lewo i prawo aktywnych jednocześnie, daje nam moŜliwość jeszcze większego zbliŜenia się do optimum. Dla większych przykładów algorytmy przybliŜone dostarczają rozwiązań duŜo słabszych, niŜ rozwiązania optymalne, dlatego brak moŜliwości osiągnięcia rozwiązania optymalnego nie ma decydującego wpływu na obniŜenie efektywności algorytmu.

4. Opis algorytmu ActiveSA

Prezentowany algorytm zwany dalej ActiveSA bazuje na rozwiązaniach lewo i prawo aktywnych, dlatego optymalizuje on jedynie permutację ładującą utoŜsamianą dalej z odpowiednim rozwiązaniem. W pracy [3] po raz pierwszy przedstawiono ideę algorytmu symulowanego wyŜarzania. Jest to algorytm typu popraw, co oznacza, Ŝe w kaŜdym kroku stara się „poprawić” rozwiązanie bieŜące (bazowe) przechodząc do pewnego rozwiązania sąsiedniego. Analizowane rozwiązanie sąsiednie akceptowane jest (tzn. staje się rozwiązaniem bazowym dla kolejnych iteracji) z pewnym prawdopodobieństwem P.

Zaakceptowane rozwiązanie moŜe być zarówno lepsze jak i gorsze (w sensie wartości funkcji celu) niŜ wcześniejsze rozwiązanie bazowe. JednakŜe prawdopodobieństwo akceptowania konkretnego sąsiedniego rozwiązania silnie zaleŜy od odpowiadającej mu wartości funkcji celu. Im rozwiązanie jest gorsze, tym prawdopodobieństwo zaakceptowania jest mniejsze.

(5)

W prezentowanym algorytmie ActiveSA prawdopodobieństwo zaakceptowania rozwiązania P(α,β), tzn. przejścia z rozwiązania α do rozwiązania β, wynosi:



>

=

0 ,

0 , ) 1

,

( / t

Pα β e , (3)

gdzie ∆=Cmax(β)−Cmax(α), zaś t jest parametrem (zwanym temperaturą), zmieniającym się logarytmicznie podczas pracy algorytmu od wartości tbegin do

t

end. W celu wyznaczenia początkowej i końcowej temperatury przeprowadza się automatyczne strojenie. Polega ono na wykonaniu pewnej liczby iterTest próbnych iteracji, podczas których wyznacza się maksymalną

maxoraz minimalną (dodatnią)

min zmianę wartości funkcji celu (dodatkowo najlepsze rozwiązanie znalezione podczas etapu strojenia staje się rozwiązaniem startowym). Następnie temperaturę początkową tbegin ustala się w taki sposób, aby prawdopodobieństwo zaakceptowania rozwiązania gorszego o

maxbyło na

ustalonym poziomie Pbegin, a temperaturę końcową wyznacza się tak, by prawdopodobieństwo akceptacji rozwiązania gorszego o wartość

minbyło na poziomie Pend.

) , ln(

) ln(

min max

end end

begin begin

t P

t = −∆P = . (4)

Podczas działania algorytmu temperatura zmniejszana jest w sposób logarytmiczny. Nie zmienia się jednak ona z kaŜdą iteracją, tylko przez dany etap utrzymywana jest na stałym poziomie (kaŜdy z etapów składa się z tej samej liczby iteracji). Podczas zmiany etapu temperatura modyfikowana jest zgodnie z wzorem:

t t t

= + ε

: 1 , (5)

gdzie

end start end start

t t etapN

t t

= −

) 1

ε ( oraz etapN oznacza liczę etapów.

Maksymalna liczba iteracji ustawiona jest na wartość iterMax jednakŜe algorytm zastanie zatrzymany wcześniej, jeśli czas działania pracy przekroczy wartość timeMax.

Iteracje, w których nie nastąpiła poprawa najlepszego znalezionego rozwiązania, nazywamy iteracjami jałowymi. W przypadku wykonania iterReset iteracji jałowych algorytm powraca do najlepszego znalezionego rozwiązania, a w przypadku wykonania iterStop iteracji jałowych następuje zakończenie pracy algorytmu Ruchy wykonywane na permutacji ładującej są typu zamień lub typu wstaw. Ruch typu zamień polega na zamienieniu dwóch elementów w permutacji, natomiast ruch typu wstaw polega na wyciągnięciu danego elementu z permutacji i ponownym włoŜeniu go w inne miejsce.

Algorytm ActiveSA uruchamia 2·startN razy algorytm opisany powyŜej, z czego startN razy algorytm pracuje na rozwiązaniach lewo aktywnych i startN na rozwiązaniach prawo aktywnych. Wszystkie wartości sterujące algorytmem ActiveSA to:

startN: liczba uruchomień dla pracy na rozwiązaniach lewo i prawo aktywnych,

(6)

timeMax,iterMax: maksymalny czas pracy oraz maksymalna liczba iteracji,

iterReset,iterStop: resetująca i zatrzymująca liczba jałowych iteracji,

klasaRozwiązań: LEWO, PRAWO lub LEWOiPRAWO aktywne

klasaRuchów: określa typ wykonywanych ruchów, tj. ZAMIEŃ lub WSTAW

etapN: ilość etapów algorytmu,

iterTest: ilość iteracji fazy strojenia,

Pbegin,Pend: prawdopodobieństwa wyznaczające temperaturę początkową i końcową.

5. Wyniki badań

Wszystkie badania przedstawione w tej pracy, zostały przeprowadzone na komputerze klasy PC z procesorem Athlon XP 2000+ taktowanym zegarem 1666MHz. Prezentowane algorytmy zostały zaprogramowane w języku C++ i uruchamiane były w systemie operacyjnym Windows XP.

Tabela 2. Wyniki działania algorytmów GASA i ActiveSA dla przykładów „łatwych”

Nazwa przykładu

Rozmiar N

M× CmaxOPT CGASAmax tGASA

[s]

ρGASA

[%]

CmaxPGA

taSA

[s]

ρaSA

[%]

La01 5 x 10 971 1037 23 6,80 971 3 0,00

La02 5 x 10 937 990 24 5,66 937 4 0,00

La03 5 x 10 820 832 24 1,46 820 3 0,00

La04 5 x 10 887 889 25 0,23 887 3 0,00

La05 5 x 10 777 817 24 5,15 777 3 0,00

La16 10 x 10 1575 1637 39 3,94 1575 9 0,00

La17 10 x 10 1371 1430 42 4,30 1371 9 0,00

La18 10 x 10 1417 1555 42 9,74 1417 11 0,00

La19 10 x 10 1482 1610 40 8,64 1482 9 0,00

La20 10 x 10 1526 1693 45 10,94 1526 9 0,00

Orb01 10 x 10 1615 1663 39 2,97 1615 12 0,00

Orb02 10 x 10 1485 1555 40 4,71 1485 7 0,00

Orb03 10 x 10 1599 1603 41 0,25 1599 13 0,00

Orb04 10 x 10 1653 1653 43 0,00 1653 10 0,00

Orb05 10 x 10 1365 1415 44 3,66 1367 11 0,15

Orb06 10 x 10 1555 1555 42 0,00 1555 10 0,00

Orb07 10 x 10 689 706 43 2,47 689 9 0,00

Orb08 10 x 10 1319 1319 41 0,00 1319 12 0,00

Orb09 10 x 10 1445 1535 40 6,23 1445 10 0,00

Orb10 10 x 10 1557 1618 46 3,92 1557 10 0,00

Ft06 6 x 6 73 73 6 0,00 73 1 0,00

Ft10 10 x 10 1607 1607 41 0,00 1607 11 0,00

(7)

Wszystko - - - 794 3,68 - 179 0,01

Tabela 3. Wyniki działania algorytmów GASA i ActiveSA dla przykładów „trudnych”

Nazwa przykładu

Rozmiar N

M× CmaxREF CmaxGASA tGASA

[s]

ρGASA

[%]

CmaxaSA

taSA

[s]

ρaSA

[%]

La06 5 x 15 1248 1339 80 7,29 1248 35 0,00

La07 5 x 15 1172 1240 70 5,80 1172 35 0,00

La08 5 x 15 1244 1296 72 4,18 1266 33 1,77

La09 5 x 15 1358 1447 83 6,55 1371 34 0,96

La10 5 x 15 1287 1338 70 3,96 1304 34 1,32

La11 5 x 20 1649 1825 170 10,67 1719 60 4,24 La12 5 x 20 1447 1631 164 12,72 1509 57 4,28 La13 5 x 20 1611 1766 183 9,62 1703 61 5,71 La14 5 x 20 1610 1805 176 12,11 1722 61 6,96 La15 5 x 20 1693 1829 167 8,03 1737 60 2,60 La21 10 x 15 2030 2182 147 7,49 2169 111 6,85 La22 10 x 15 1852 1965 135 6,10 1919 117 3,62 La23 10 x 15 2021 2193 136 8,51 2132 104 5,49 La24 10 x 15 1972 2150 133 9,03 2061 112 4,51 La25 10 x 15 1906 2034 142 6,72 1979 111 3,83 La26 10 x 20 2527 2945 332 16,54 2625 223 3,88 La27 10 x 20 2675 3036 311 13,50 2811 212 5,08 La28 10 x 20 2552 2902 324 13,71 2712 220 6,27 La29 10 x 20 2300 2617 311 13,78 2536 215 10,26 La30 10 x 20 2452 2892 346 17,94 2452 209 0,00 La31 10 x 30 3582 4298 957 19,99 3767 483 5,16 La32 10 x 30 3950 4686 869 18,63 4150 508 5,06 La33 10 x 30 3604 4214 860 16,93 3839 505 6,52 La34 10 x 30 3659 4401 968 20,28 3857 501 5,41 La35 10 x 30 3552 4299 897 21,03 3828 492 7,77 La36 15 x 15 2685 2949 203 9,83 2692 238 0,26 La37 15 x 15 2962 3216 192 8,58 3071 251 3,68 La38 15 x 15 2571 2762 202 7,43 2695 234 4,82 La39 15 x 15 2697 2908 195 7,82 2714 237 0,63 La40 15 x 15 2594 2950 214 13,72 2594 235 0,00 Ft20 20 x 20 1532 1675 184 9,33 1634 64 6,66

Wszystko 9293 11,22 5852 3,99

(8)

Badania numeryczne przeprowadzone zostały na duŜej liczbie mocno zróŜnicowanych literaturowych instancji testowych. Instancje te róŜnią się zarówno pod względem ilości zadań (od 6 do 30) jak i ilości maszyn (od 5 do 15). Zostały one dodatkowo podzielone na dwie klasy róŜniące się między sobą praktycznym stopniem trudności. Przykłady z klasy

„łatwej” to te, które udało się rozwiązać dokładnie stosując algorytm podziału i ograniczeń [7], (patrz teŜ praca [10]), pozostałe instancje testowe zakwalifikowałem do klasy przykładów „trudnych”. Badania podzieliłem na dwie części, w pierwszej testuję efektywność algorytmu na przykładach łatwych a w drugiej na przykładach trudnych.

Dodatkowo w celu uzyskania bardziej obiektywnej oceny efektywności proponowanego algorytmu, uzyskane rozwiązania porównuję takŜe, względem rozwiązań dostarczonych algorytmem GASA (algorytm łączący w sobie idee algorytmu genetycznego i symulowanego wyŜarzania) opisanego w pracy [10].

W obu częściach testu, dla kaŜdego z przykładu odnotowałem długość uszeregowania CmaxaSA generowanego przez algorytm ActiveSA w czasie taSA. Analogiczne dane CmaxGASA i tGASA dla literaturowego algorytmu GASA odczytałem z pracy [10] (algorytm ten uruchamiany był 30 krotnie na komputerze z procesorem Athlon 1,4 GHz). Następnie obliczyłem względny błąd jakości uzyskanych rozwiązań w stosunku do rozwiązania referencyjnego

} ,

{ , / ) (

%

100 CmaxA CmaxREF CmaxREF A GASA ActiveSA

A= ⋅ − ∈

σ . (6)

W pierwszej części testu, jako rozwiązanie referencyjne zastosowałem rozwiązanie dokładne, natomiast w części drugiej jako rozwiązanie referencyjne przyjąłem najlepsze rozwiązanie (lewo lub prawo aktywne) znalezione podczas etapu strojenia algorytmu ActiveSA. W pierwszej części testu, algorytm ActiveSA wysterowany był z następującymi parametrami: (4, INF, 15000, INF, 6500, LEWOiPRAWO, WSTAW, 100, 100, 0.9, 0.9) natomiast w drugiej części testu z parametrami (15, INF, 15000, INF, 7500, LEWOiPRAWO, WSTAW, 100,100, 0.9, 0.9). Znaczenie wszystkich parametrów zgodnie z kolejnością ich występowania podałem w punkcie „opisie algorytmu ActiveSA” (wartość INF oznacza bardzo duŜą liczbę). Wyniki pierwszej części testu zamieściłem w tabeli 2, natomiast wyniki drugiej części testu w tabeli 3.

Kolejnym interesującym testem jest porównanie algorytmu ActiveSA pracującego na rozwiązaniach lewi i prawo aktywnych z wersją algorytmu działającą tylko na rozwiązaniach lewo aktywnych. Oczywiście porównywane wersje algorytmu ActiveSA wykonywały w sumie tę samą liczbę iteracji, poprzez dwukrotne zwiększenie uruchomień algorytmu bazującego tylko na jednej klasie rozwiązań. Nie przytaczając tu szczegółowych wyników napiszę tylko, Ŝe dla przykładów łatwych powyŜsze ograniczenie algorytmu, powoduje niewielki spadek jakości generowanych rozwiązań. Spadek efektywności jest oczywisty, poniewaŜ bazując tylko na rozwiązaniach lewo aktywnych w najlepszym wypadku moŜna znaleźć rozwiązania ze średnim błędem większym o 0,31% niŜ wygenerował algorytm ActiveSA pracujący na rozwiązaniach obydwóch klasach. Podobnie dla przykładów trudnych prezentowany algorytm ograniczony tylko do analizy rozwiązań lewo aktywnych dostarcza rozwiązań słabszych około 0,5% niŜ jego pełna wersja.

6. Podsumowanie

Z uzyskanych badań numerycznych, wynika jasno, Ŝe ograniczenie się do analizy klasy rozwiązań lewo, prawo lub lewo i prawo aktywnych, radykalnie podnosi efektywność danego algorytmu. Wynika to, z faktu, Ŝe wszystkie rozwiązania lewo i prawo aktywne są

(9)

zawsze dopuszczalne i wszystkie są bardzo wysokiej jakości. Brak moŜliwości znalezienia rozwiązania optymalnego mało istotnie wpływa na obniŜenie efektywność algorytmu.

Ponadto dla praktycznych przykładów, często rozwiązanie optymalne znajduje się wśród rozwiązań lewo lub prawo aktywnych. Konkretnie dla 22 przykładów testowych w 21 przypadkach rozwiązanie optymalne naleŜały do jednej z tych klas.

O bardzo wysokiej efektywności prezentowanego algorytmu świadczy to, Ŝe dla przykładów łatwych, algorytm ActiveSA znalazł moŜliwie najlepsze rozwiązania (najlepsze rozwiązań z klasy lewo i prawo aktywnej).

Najbardziej spektakularnym osiągnięciem jest jakość generowanych rozwiązań w stosunku do rozwiązań otrzymanych literaturowym algorytmem GASA (algorytm GASA łączy w sobie techniki algorytmów genetycznych i algorytmów symulowanego wyŜarzania). Dla przykładów łatwych średni błąd algorytmu ActiveSA to niecałe 0,007%

podczas gdy średni błąd algorytmu GASA to ponad 3,68%. Oznacza to, Ŝe dla przykładów łatwych algorytm ActiveSA w czasie 3 krotnie krótszym dostarczył rozwiązań obłędzie 500 razy mniejszym niŜ wspomniany algorytm GASA. Definicja omawianych błędów zawarta jest w punkcie „wyniki badań” a wszelkie porównania czasów pracy algorytmów, uwzględniają róŜnicę w szybkości działania komputerów badaczy.

Dla przykładów trudnych algorytm ActiveSA dostarczył rozwiązań z średnim błędem 3,99% podczas gdy średni błąd rozwiązań dostarczonych algorytmem GASA jest na poziomie 11,22%. Tym razem algorytmy działały w porównywalnym czasie, a przewaga algorytmu ActiveSA nad algorytmem GASA to ponad 7%. Ponadto z analizy danych zawartych w tabeli 3 wynika, Ŝe wraz ze wzrostem liczby zadań, przewaga algorytmu ActiveSA powiększa się i dla największych przykładów (30 zadań) wynosi ona prawie 15%.

PoniewaŜ algorytmy genetyczny ActiveGA w wersji SGA i PGA [6], (wersja SGA bazuje na rozwiązaniach lewo aktywnych a wersja PGA na rozwiązaniach lewo i prawo aktywnych) dają rozwiązania podobne (w sensie wartości funkcji celu), co algorytm ActiveSA, wnioskować moŜna, Ŝe cała zasługa tych algorytmów leŜy w ograniczeniu się do analizy odpowiednich klas rozwiązań (rozwiązania lewo i prawo aktywne).

Praca była częściowo finansowana ze środków KBN grant T11A 01624.

Literatura

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

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. Kirkpatrick S., Gelatt C.D. Vecchi M.P., Optimisation by simulated annealing, Science 220, 1983, 671-680.

4. Lenstra J., Rinnooy Kan A., Computational complexity of discrete optimization problems. Annals of Discrete Mathematics, 1979, 4, 121.

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

(10)

6. Makuchowski M., Algorytm genetyczny dla problemu gniazdowego z ograniczeniem bez czekania, Automatyka, tom 9, zeszyt 1-2, Uczelnianie wydawnictwo naukowo- dydaktyczne, Kraków 2005, 127-137.

7. Mascis A., Pacciarelli D., Job shop scheduling with blocking and no-wait constraints, European Journal of Operational Research. 2002, 142 (3), 498-517.

8. Raaymakers W., Hoogeveen J., Scheduling multipurpouse batch process industries with no-wait restrictions by simulated annealing, European Journal of Operational Research.

2000, 126, 131-151.

9. Sahni S., Cho Y., Complexity of scheduling shops with no-wait in process, Mathematics of Operations Research, 1979, 4, 448.

10.Schuster C., Framinan J., Approximative procedures for no-wait job shop scheduling, Operations Research Letters. 2003, 31, 308-318.

11.Wismer D.A., Solution of the flowshop scheduling-problem with no intermediate queues. Operations Research. 1972, 20, 689.

Dr inŜ. Mariusz Makuchowski Instytut Cybernetyki Technicznej Politechnika Wrocławska

50-372 Wrocław, ul Janiszewskiego 11/17 tel.: (0-71) 320-28-34

e-mail: mariusz.makuchowski@pwr.wroc.pl

Cytaty

Powiązane dokumenty

Rozkªad siª w trójnogu i linie wyci¡gaj¡cej ci¦»ar ze studni Na rys.2 przedstawiono skªadowe siª wywoªanych przez nacisk liny na blok

Zakªada si¦ przy tym, »e ze wzgl¦du na peªn¡ symetri¦, betonowy blok dziaªa z takim samym obci¡»eniem na ka»d¡ z dwóch belek...

W przedstawionym na rys.1 ukªadzie przerzutnika Schmitta napi¦cie wyj±ciowe przyjmu- je dwie warto±ci równe napi¦ciom nasycenia wzmacniacza operacyjnego, tzn... Kiedy ukªad faz

[r]

Poniewa» budynek jest wykonany z cegªy nale»y go wzmocni¢ na poziomie fundamentu wykonuj¡c dodatkowy solidny, betonowy fundament, który przejmie caªy ci¦»ar budynku i

Pozycyjny system liczbowy, w którym zapisana jest równo±¢ istnieje, a jego podstawa to

Zatem, aby bez wyboczenia pr¦t ±ciskany mógª przenie±¢ ten ci¦»ar, nale»y zwi¦kszy¢ jego przekrój, czyli { w przypadku gdy jest on koªowy { jego ±rednic¦ zwi¦kszaj¡c z d1

Miar¡ odksztaªcenia napi¦cia zasilajacego przeksztaªtnik w miejscu jego przyª¡czenia, po- dobnie jak dla pr¡dów odksztaªconych, jest wspóªczynnik zawarto±ci