terminiranje delovnih nalogov s pomoČjo genetskih … · aproksimacijski algoritmi kot npr....
TRANSCRIPT
UNIVERZA V MARIBORU
FAKULTETA ZA STROJNIŠTVO
Zoran LESTAN TERMINIRANJE DELOVNIH NALOGOV S POMOČJO
GENETSKIH ALGORITMOV
Diplomsko delo univerzitetnega študijskega programa Strojništvo
Maribor, april 2009
TERMINIRANJE DELOVNIH NALOGOV S POMOČJO
GENETSKIH ALGORITMOV Diplomsko delo
Študent: Zoran Lestan
Študijski program: Univerzitetni program Strojništvo
Smer: Proizvodno strojništvo
Mentor: izr. prof. dr. Miran BREZOČNIK
Somentor: izr. prof. dr. Borut BUCHMEISTER
Maribor, april 2009
-I-
SKLEP
-II-
I Z J A V A Podpisani Zoran LESTAN izjavljam, da:
• je bilo predloženo diplomsko delo opravljeno samostojno pod mentorstvom izr. prof.
dr. Mirana BREZOČNIKA in somentorstvom izr. prof. dr. Boruta BUCHMEISTRA;
• predloženo diplomsko delo v celoti ali v delih ni bilo predloženo za pridobitev
kakršnekoli izobrazbe na drugi fakulteti ali univerzi;
• soglašam z javno dostopnostjo diplomskega dela v Knjižnici tehniških fakultet
Univerze v Mariboru.
Maribor, 14. 04. 2009 Podpis: ___________________________
-III-
ZAHVALA
Zahvaljujem se mentorju izr. prof. dr. Miranu
BREZOČNIKU in somentorju izr. prof. dr. Borutu
BUCHMEISTRU za pomoč in vodenje pri opravljanju
diplomskega dela.
Posebna zahvala velja staršema, ki sta mi omogočila
študij.
-IV-
TERMINIRANJE DELOVNIH NALOGOV S POMOČJO GENETSKIH ALGORITMOV
Ključne besede: proizvodnja, terminiranje delovnih nalogov, evolucijsko računanje, genetski
algoritmi.
UDK: 658.5:331.103.22(043.2)
POVZETEK
Pod pojmom terminiranje v proizvodnji razumemo časovno razporejanje procesov in virov
oziroma sredstev. Pravilno terminiranje je za podjetje velikega pomena, lahko pa predstavlja
tudi težavo, saj je na voljo ogromen prostor potencialnih rešitev. Zaradi velikega pritiska
konkurenčnih podjetij pa postaja čas zelo velik dejavnik poslovnega uspeha.
Diplomsko delo obravnava problem terminiranja proizvodnih procesov in metode, ki se
uporabljajo za razvrščanje delovnih nalogov. Poudarek je na metodah, ki so trenutno najbolj
aktualne. Glavna tema dela je izdelava programa za terminiranje, ki temelji na metodi
genetskih algoritmov. Učinkovitost tega programa pa je prikazana z reševanjem praktičnih
primerov.
-V-
Work order scheduling by genetic algorithms
Key words: manufacturing, work order scheduling, evolutionary computation, genetic
algorithms.
UDK: 658.5:331.103.22(043.2)
ABSTRACT
The job shop scheduling is concerned with arranging processes and resources. Proper
schedules are very important for the manufacturers, but can cause serious problems because
of the enormous solution space. Pressure from the competitive enterprises is the main reason
why time is becoming one of the most important success factors.
This diploma presents the job shop problem and methods for sequencing jobs on machines.
The accentuation is on up-to-date methods. The main theme in this work is the development of
a computer program for the job shop scheduling, which is based on genetic algorithms. The
effectiveness of the program is demonstrated by solving practical problems.
-VI-
KAZALO 1 Uvod ............................................................................................................... 1 2 Terminiranje proizvodnih procesov........................................................... 3
2.1 Način označevanja problemov terminiranja ...............................................................4 2.2 Analitične metode.......................................................................................................5
2.2.1 Razvejaj in omeji ................................................................................................5 2.2.2 Dinamično programiranje...................................................................................5 2.2.3 Linearno programiranje ......................................................................................6 2.2.4 Celoštevilčno programiranje ..............................................................................6
2.3 Hevristične metode .....................................................................................................6 2.3.1 Prednostna pravila ..............................................................................................7 2.3.2 Prestavljanje ozkega grla ....................................................................................9 2.3.3 Kolonija mravelj .................................................................................................9 2.3.4 Lokalno iskanje ................................................................................................10 2.3.5 Simulirano ohlajanje.........................................................................................10 2.3.6 Tabu iskanje......................................................................................................10 2.3.7 Genetski algoritmi ............................................................................................11 2.3.8 Hibridne metode ...............................................................................................11
3 Evolucijsko računanje................................................................................ 12 3.1 Metode evolucijskega računanja ..............................................................................13 3.2 Genetski algoritmi ....................................................................................................14
3.2.1 Kodiranje organizmov ......................................................................................15 3.2.2 Selekcija ...........................................................................................................16 3.2.3 Križanje ............................................................................................................18 3.2.4 Mutacija ............................................................................................................19
3.3 Genetsko programiranje ...........................................................................................20 3.3.1 Priprava.............................................................................................................22 3.3.2 Začetna struktura ..............................................................................................22 3.3.3 Ovrednotenje populacije...................................................................................23 3.3.4 Genetske operacije............................................................................................23 3.3.5 Evolucija populacij ...........................................................................................24
3.4 Evolucijske strategije................................................................................................25 3.5 Evolucijsko programiranje .......................................................................................25 3.6 Uporaba evolucijskega računanja.............................................................................26
4 Terminiranje delovnih nalogov z genetskimi algoritmi.......................... 28 4.1 Kodiranje organizmov pri terminiranju....................................................................29
4.1.1 Kodiranje na osnovi operacij............................................................................30 4.1.2 Kodiranje s prednostnim seznamom ................................................................31
4.2 Ovrednotenje organizmov ........................................................................................33 4.3 Genetske operacije....................................................................................................35 4.4 Evolucijski parametri................................................................................................37 4.5 Rezultati....................................................................................................................38
4.5.1 Primer 1 ............................................................................................................39 4.5.2 Primer 2 ............................................................................................................40 4.5.3 Primer 3 ............................................................................................................41
5 Sklep............................................................................................................. 43 6 Dodatek........................................................................................................ 44 7 Literatura in pripomočki........................................................................... 46
-VII-
Kazalo slik Slika 1.1 Gantogram za 5 nalogov 4
Slika 3.2 Cikel evolucijskega algoritma 13
Slika 3.2 Organizmi v binarnem kodiranju 15
Slika 3.3 Kodirni prostor in prostor rešitev 16
Slika 3.4 Proces selekcije 17
Slika 3.5 Enomestno križanje 18
Slika 3.6 Dvomestno križanje 19
Slika 3.7 Mutacija tretjega in šestega gena organizma 20
Slika 3.8 Funkcija v obliki drevesne strukture 21
Slika 3.9 Operacija križanja 24
Slika 4.1 Določevanje vrstnega reda strojev 30
Slika 4.2 Seznam strojev 31
Slika 4.3 Prikaz nalogov na gantogramu 31
Slika 4.4 Gantogram za naključno izdelan organizem 34
Slika 4.5 Križanje organizmov 35
Slika 4.6 Prilagojenost najboljše civilizacije 42
Kazalo tabel Tabela 4.1 Primer treh nalogov in treh strojev 30
Tabela 4.2 Uspešnost algoritmov 39
Tabela 4.3 Problem 7 x 7 39
Tabela 4.4 Problem 10 x 10 40
Tabela 4.5 Problem 20 x 5 41
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-1-
1 Uvod Proizvodni procesi so sestavljeni iz velikega števila delovnih operacij, ki si sledijo v
različnem zaporedju in se izvajajo na velikem številu različnih delovnih mest, katerih
zmogljivosti pogosto niso usklajene. Tipični proizvodni obrat sestavljajo skupine strojev,
razmeščenih po tehnološki podobnosti. Pri tem načinu se vedno pojavlja neusklajenost med
tehnološkimi in transportnimi tokovi ter zmogljivostmi posameznih tehnologij. Bolj kot so
kapacitete strojev izkoriščene, težje je izdelati dober načrt zasedenosti strojev oziroma
optimirati vrstni red naročil.
Terminiranje zajema razvrščanje (n) delovnih nalogov na (m) obdelovalnih strojih. Vsak
nalog je sestavljen iz (m) operacij, ki se morajo izvršiti na posameznih strojih. Dostikrat je cilj
terminiranja zmanjšanje skupnega časa (Cmax), ki je potreben za procesiranje vseh nalogov.
Razvrščanje delovnih nalogov oziroma terminiranje (razen nekaterih enostavnih primerov)
spada v razred NP (nedeterminističen polinomski čas) problemov, kar pomeni, da je časovna
zahtevnost algoritma funkcija dolžine vhodnih podatkov in raste eksponentno, hitreje kot vsak
polinom. Dejstvo je, da število različnih terminskih planov (razvrstitev nalogov) eksponentno
narašča z večanjem števila razporejenih nalogov (n) in njihovih operacij (m): (n!)m.
Da je terminiranje delovnih nalogov zelo trd oreh, potrdi naslednje dejstvo. Leta 1964
sta Fisher in Thompson [9] predložila znameniti problem terminiranja, ki je bil sestavljen iz
desetih strojev in desetih nalogov. Ta primer je ostal nerešen za več kot četrt stoletja, do danes
pa ni bil optimalno rešen noben primer z dvajsetimi stroji in dvajsetimi nalogi [13] .
V zadnjih treh desetletjih je terminiranje delovnih nalogov vzbudilo veliko zanimanja
med raziskovalci. Predlaganih je bilo veliko algoritmov za reševanje tega problema.
Optimizacijski algoritmi, ki temeljijo na metodi Razvejaj in omeji (ang. Branch-and-Bound),
so uspešni samo pri reševanju manjših primerov. Niso pa sposobni podati optimalnih rešitev v
sprejemljivem času za primere z več kot 250–imi operacijami. Na drugi strani pa so
aproksimacijski algoritmi kot npr. prednostna pravila, prestavljanje ozkega grla, kolonija
mravelj, simulirano ohlajanje ali tabu iskanje zelo privlačne alternative za reševanje
obsežnejših primerov.
Problem terminiranja pa lahko rešujemo tudi z metodami evolucijskega računanja, npr. z
genetskimi algoritmi. Pod pojmom evolucija razumemo proces, pri katerem postajajo
organizmi (sistemi) čedalje bolj prilagojeni na okolje, v katerem bivajo. Ta proces so
znanstveniki začeli s pridom izkoriščati tudi v tehniških in drugih sistemih. Do sredine
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-2-
sedemdesetih let so se namreč za proučevanje in načrtovanje sistemov uporabljale predvsem
deterministične metode, katerih glavna slabost je v tem, da dajo pri enakih vhodnih podatkih
vedno tudi enake rezultate. To pomeni, da so koraki, ki vodijo do rešitve, natančno določeni.
Pri evolucijskih metodah pa pot do rešitve ni določena, kajti sistem si jo more najti sam. Pri
tej metodi nastaja cel kup možnih rešitev, evolucija pa poskrbi, da pridejo naprej samo
najboljše.
Koncept genetskih algoritmov (GA) je abstrakcija prenosa informacij oz. podatkov v
naravnih organizmih. V naravi se informacije o organizmu skrivajo v njegovih kromosomih.
Da organizem lahko preživi v svojem okolju, mora imeti boljše lastnosti kot tekmovalni
organizmi, kar pomeni, da preživijo samo najboljši. Ti organizmi imajo nato možnost, da svoj
genetski material posredujejo na potomce. Potomci torej vsebujejo neko poljubno genetsko
kombinacijo, ki so jo podedovali od svojih staršev. Ta proces preživetja in reprodukcije pa je
uporaben za reševanje zahtevnih kombinatoričnih problemov kot je terminiranje. Poleg
genetskih algoritmov pa poznamo še druge metode evolucijskega računanja. Najbolj poznane
so še genetsko programiranje, evolucijske strategije ter evolucijsko programiranje.
Pred kratkim pa je večina študij pokazala, da je možno dobre rezultate dobiti s
kombinacijo več metod. Dosti dela je bilo vloženega za izdelavo hibridnih metod, ki
kombinirajo zgoraj naštete algoritme. S pomočjo hibridnih metod je tako možno priti do
boljših rešitev v sprejemljivem času.
Ena zelo uspešnih metod za terminiranje je hibridna metoda na podlagi tabu iskanja in
simuliranega ohlajanja [13]. Prednost tabu iskanja je v uporabi spominske funkcije, ki
prepreči, da bi se reševanje končalo v lokalnem optimumu. Vendar je končna rešitev odvisna
tudi od začetne rešitve. Če to metodo kombiniramo z metodo, ki je analogna fizikalnemu
ohlajanju in ni odvisna od začetne rešitve, dobimo efektiven algoritem za terminiranje.
V drugem poglavju diplomske naloge je podrobneje predstavljen problem terminiranja
in metode za reševanje tega problema. V tretjem poglavju je opisano evolucijsko računanje in
najpogostejše evolucijske metode. Četrto poglavje pa prikazuje uporabo genetskih algoritmov
za terminiranje delovnih nalogov. Glede na to temo je bil razvit tudi lasten algoritem in
program, s katerim je možno razvrščati delovne naloge. Učinkovitost tega algoritma je bila
testirana na treh praktičnih primerih.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-3-
2 Terminiranje proizvodnih procesov Trg postaja čedalje bolj zahteven, saj ga oblikujejo včasih zelo zahtevne želje kupcev, in
močna konkurenca. Vedno več je takih podjetij, ki proizvajajo pretežno po naročilu za vnaprej
poznanega kupca. O uspehu podjetja tako vse bolj odloča čas, kar je še posebej opazno v
proizvodnji po naročilu. V takšni proizvodnji so procesi sestavljeni iz velikega števila
delovnih operacij, ki si sledijo v različnem zaporedju. Operacije potekajo na različnih
delovnih mestih, katera pa velikokrat nimajo usklajenih zmogljivosti. Stroji, ki sestavljajo
tipični proizvodni obrat so razmeščeni po tehnološki podobnosti. Le z dobro organizacijo
transportnih in tehnoloških tokov lahko dosežemo ustrezno konkurenčnost.
Zaradi neusklajenosti se pogosto pred posameznimi delovnimi mesti oblikujejo čakalne
vrste operacij na delovnih nalogih, ki čakajo, da se delovno mesto sprosti. Na razporejanje
nalogov na stroje ima bistveni vpliv njihova prioriteta (prednost). Poznamo dve vrsti prioritet,
notranjo in zunanjo. Notranja prioriteta se določa med samim procesom terminiranja, zunanjo
pa podaja naročnik oz. izhaja iz časovnega načrta izdelave. Pri terminiranju pa ločimo dva
pristopa: terminiranje naprej in terminiranje nazaj. Pri terminiranju naprej je cilj, da se vsak
nalog zaključi v najmanjšem možnem času. Takšno terminiranje enakomerno zaseda
zmogljivosti, a povzroča vmesne zaloge obdelovancev. Pri terminiranju nazaj mora vsak
delovni nalog imeti predpisan rok dokončanja. Pri tem načinu terminiranja so zmogljivosti
manj ugodno zasedene, vendar pa so vmesne zaloge manjše. Pogosto uporabljamo kar oba
pristopa skupaj. Tako je namreč možno izračunati katere operacije so terminsko kritične in
potrebujejo poseben nadzor.
Glavni problem pri vodenju proizvodnje predstavlja načrtovanje zasedenosti kapacitet.
Potrebno je točno določiti katero naročilo se bo na določenem delovnem mestu obdelovalo.
Več kot je naročil in bolj kot so kapacitete zasedene, težje je izdelati dober terminski načrt.
Ročno vodenje proizvodnje pri kompleksnejših primerih ne more garantirati optimalnih
rešitev terminiranja. V ta namen znanstveniki že dolga leta proučujejo avtomatske sisteme, ki
so sposobni voditi proizvodnjo. Razvitih je bilo že več metod, katere delimo na analitične in
hevristične.
Za načrtovanje projektov in prikaz rezultatov pogosto uporabljamo Ganttove diagrame
ali gantograme. Pri gantogramu abscisa predstavlja čas, na ordinati pa so vnesene posamezne
operacije. Slika 2.1 prikazuje enostaven gantogram za 5 nalogov. Vendar imajo ti diagrami
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-4-
eno pomanjkljivost. So zelo enostavni in praktični pri manjših projektih, toda pri večjih so
slabo pregledni. Zato uporabljamo pri primerih z večjim številom operacij tehnike mrežnega
načrtovanja kot so metoda CPM (ang. Critical Path Method) ali metoda PERT (ang Program
Evaluation and Review Technique). Osnovni elementi obeh metod obsegajo definicijo
projekta, aktivnosti in njihovo trajanje ter medsebojne odvisnosti, izračun začetkov in koncev
izvajanja aktivnosti ter določitev kritične poti.
E2
A3
C2stroj II
stroj III
B3
B1
stroj I
B1 C3
E5
C5
A2
A7
D4
D5E3
D1
Slika 2.1 Gantogram za 5 nalogov
2.1 Način označevanja problemov terminiranja Vsak problem terminiranja je možno opisati s tremi parametri [13]: α | β | γ. V prvem polju, to
je polje α se opisujejo stroji. To polje vsebuje samo en zapis. Naslednje polje je polje β, ki
podaja podrobnosti o lastnostih procesov in omejitvah. To polje lahko vsebuje enega ali več
zapisov, lahko pa je tudi prazno. V polju γ je zapisan cilj optimizacije (funkcija, katero
optimiramo) in ponavadi vsebuje en zapis.
Možni zapisi v polju α (uporabljene so tuje, originalne oz. uveljavljene oznake iz literature):
1 – en stroj,
Pm – m enakih vzporednih strojev,
Qm – m različnih vzporednih strojev,
Fm – m linijsko postavljenih strojev,
Jm – m različnih strojev (vsak nalog ima svoje zaporedje operacij) itd.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-5-
Nekaj možnih zapisov v polju β:
rj – čas prihoda naloga (sprostitev, lansiranje),
sjk – od zaporedja nalogov odvisni pripravljalno-zaključni časi,
prec – omejitev glede predhodno izvedenih operacij (strogo zaporedje),
prmu – omejitev glede enakega vrstnega reda nalogov po strojih (ni prehitevanja),
block – blokade v sistemu (npr. zaradi polnih zalogovnikov),
brkdwn – izpadi (nedelovanje) strojev itd.
Nekaj možnih zapisov v polju γ:
Cmax – skupni časi realizacije vseh nalogov,
Lmax – maksimalno odstopanje roka dobave,
∑Uj – skupno število zakasnelih nalogov,
∑wjTj – skupna utežena kasnitev nalogov itd.
2.2 Analitične metode Z uporabo analitičnih metod vedno pridemo do optimalnega rezultata, vendar so praktično
uporabne na samo nekaterih enostavnih primerih (idealizirani pogoji z majhnim številom
delovnih nalogov in delovnih mest). Pri NP – težkih problemih pa analitične metode niso
uporabne, saj zahtevajo preveč časa za reševanje.
2.2.1 Razvejaj in omeji Metoda Razvejaj in omeji (ang. Branch-and-Bound) je verjetno ena najbolj poznanih in
uporabljenih analitičnih metod. Ta metoda se izvaja nad drevesom potencialnih rešitev z
algoritmom razvejanja in omejevanja. Razvejanje se nanaša na delitev prostora rešitev, kjer se
vsak del tega prostora obravnava ločeno. Omejevanje pa pomeni, da če se v določenem
prostoru najde rešitev, ki je slabša od rešitve v nekem drugem prostoru, se slabša rešitev ne
upošteva več.
2.2.2 Dinamično programiranje Ta metoda poskuša s pristopom razdeli in osvoji zmanjšati količino podatkov za potrebno
preračunavanje. Ukvarja se z iskanjem optimalnih rešitev za podprobleme, dokler ne najde
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-6-
rešitev za osnovni problem. Pri vsaki iteraciji določi optimalno rešitev za določen
podproblem, ki je večji kot vsi prejšnji rešeni podproblemi. Rešitev podproblema najde z
uporabo informacij o rešitvah vseh prejšnjih podproblemov.
2.2.3 Linearno programiranje Linearno programiranje obravnava probleme vezanih ekstremov, pri katerih je namenska
(ciljna) funkcija linearna, diskretne spremenljivke pa zadoščajo pogojem nenegativnosti in
linearnim enačbam in neenačbam. Postopek reševanja se začne z neko možno bazno rešitvijo,
ki jo postopoma izboljšujemo.
2.2.4 Celoštevilčno programiranje Pri takšnem načinu reševanja morajo biti spremenljivke cela pozitivna števila. Tovrstni
problemi se prevedejo na probleme linearnega in nelinearnega programiranja.
Največjo težavo nam pri reševanju kombinatoričnih problemov predstavlja kombinatorična
eksplozija, kar pomeni ogromen prostor potencialnih rešitev. Ker je število možnih rešitev pri
terminiranju ogromno in je nesmiselno preverjati vsako rešitev posebej, je smotrna uporaba
hevrističnih metod, ki v kratkem času poiščejo zadovoljive rešitve.
2.3 Hevristične metode Hevristične metode lahko delimo na dva tipa:
• konstruktivne metode in
• adaptivne metode.
Konstruktivne metode iščejo optimalno rešitev iz nič. Rešitev se pridobi s postopnim
dodajanjem komponent v trenutno delno rešitev z uporabo določenih pravil oziroma postopka.
Pri adaptivnih metodah, imenovanih tudi metode lokalnega iskanja, pa se optimalna rešitev
išče s spreminjanjem predhodnih rešitev. To pomeni, da z adaptivnimi metodami iščemo
"sosede", ki bi lahko imeli boljšo rešitev.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-7-
2.3.1 Prednostna pravila To so najbolj razširjen postopek terminiranja med hevrističnimi metodami in so
konstruktivnega tipa. S prednostnimi pravili priredimo vsem nalogom, ki se nahajajo v
čakalni vrsti pred določenim delovnim mestom, skalarno vrednost. Glede na vrednosti se nato
nalogi postavijo v vrsto, nalogi z višjo prioriteto se začnejo obdelovati prej kot tisti z manjšo.
Prednostna pravila so lahko statična ali dinamična. Pri statičnih pravilih se vrstni red izvajanja
nalogov določi pred procesiranjem operacij in se med izvajanjem ne spreminja. Pri
dinamičnem postopku pa nalogi prihajajo v proizvodnjo med obdelavo drugih nalogov.
Prioriteta se nalogom dodeljuje časovno odvisno, v odvisnosti od izvajanja naročil. Med
prednostnimi pravili so najbolj razširjena naslednja tri pravila:
• EDD (ang. Earlies Due Date)
Pri tem pravilu ima prednost naročilo z najzgodnejšim dobavnim rokom, torej
skrajšuje kasnitev dobavnih rokov. Slabost tega pravila pa je, da lahko v
proizvodnji pride do dolgih čakalnih časov, visokih zalog in nedokončanih
nalogov.
• SPT (ang. Shortest Processing Time)
Pri uporabi tega pravila dobi najvišjo prioriteto nalog, ki ima najmanjši skupni
čas vseh operacij. Primerno je za proizvodnjo, kjer dobavni roki ne
predstavljajo pomembnega dejavnika. To pa zato, ker lahko pride pri uporabi
tega pravila do velikih zamud pri obsežnejših nalogih. Za pravilo SPT so
značilni kratki pretočni časi in majhne zaloge nedokončane proizvodnje ter
povečana zasedenost kapacitet.
• FCFS (ang. First Come, First Served)
Tisti nalog, ki je najdlje v čakalni vrsti za aktualno operacijo ima prednost. To
pravilo daje dobre rezultate samo če imamo opravka s kratkimi čakalnimi
vrstami. Ker ne upošteva nobenih pomembnih podatkov kot so skupni časi
operacij, dobavni roki, ipd. lahko naročila z dolgim trajanjem operacij
zadržujejo ostala naročila. Pravilo se največkrat uporablja tam, kjer je kupec
neposredno vključen v dogajanje, kajti zanj velja pregovor: "Prvi pride, prvi
melje."
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-8-
Poleg zgornjih treh pravil pa poznamo še veliko drugih. Spodaj so našteta samo nekatera najbolj pogosto uporabljena pravila:
• LPT (ang. Longest Procesing Time) Najvišjo prioriteto ima naročilo z največjim skupnim časom vseh operacij.
• SMOT (ang. Shortest Medium Operation Time)
Najvišjo prioriteto ima naročilo z najkrajšim povprečnim trajanjem operacij.
• LMOT (ang. Longest Medium Operation Time) Najvišjo prioriteto ima naročilo z najdaljšim povprečnim trajanjem operacij.
• SO (ang. Shortest Operation)
Najvišjo prioriteto ima naročilo z najkrajšim skupnim časom aktualne operacije.
• LO (ang. Longest Operation) Najvišjo prioriteto ima naročilo z najdaljšim skupnim časom aktualne operacije.
• SDT (ang. Smallest Divided Time)
Najvišjo prioriteto ima naročilo, pri katerem predstavlja aktualna operacija časovno najmanjši delež.
• LDT (ang. Largest Divided TIme)
Najvišjo prioriteto ima naročilo, pri katerem predstavlja aktualna operacija časovno največji delež.
• SRPT (ang. Shortest Remaining Processing Time)
Najvišjo prioriteto ima naročilo z najmanjšim skupnim časom preostalih operacij.
• LSS (ang. Least Static Slack)
Najvišjo prioriteto ima naročilo z najmanjšo časovno rezervo. Pri tem se upoštevajo dobavni rok, čas prihoda naročila in skupni čas vseh operacij.
• LS/RO (ang. Least Slack over Remaining Operations)
Najvišjo prioriteto ima naročilo z najmanjšo časovno rezervo glede na preostale operacije.
• SCR (ang. Smallest Critical Ratio)
Najvišjo prioriteto ima naročilo z najmanjšim razmerjem med preostalim časom do dobavnega roka in predvidenim časom za realizacijo preostalih operacij.
• RND (ang. RaNDom)
Najvišjo prioriteto ima naključno izbrano naročilo.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-9-
• HPC/U (ang. Highest Penalty Cost per Unit) Najvišjo prioriteto ima naročilo z najvišjimi stroški penalov na enoto izdelka.
• FRO (ang. Fewest Remaining Operations)
Najvišjo prioriteto ima naročilo z najmanjšim številom preostalih operacij.
• MRO (ang. Most Remaining Operations) Najvišjo prioriteto ima naročilo z največjim številom ostalih operacij.
• LSRO (ang. Largest Share of Remaining Operations)
Najvišjo prioriteto ima naročilo z največjim deležem preostalih operacij. Zgoraj našteta prednostna pravila se uporabljajo takrat, kadar je potrebno izdelati terminski
načrt za določen kriterij. V realnosti je takih primerov bolj malo. Ponavadi je potrebno
delovne naloge razporediti glede na več zahtev. Da bi se lahko ta pogoj čim bolje izpolnil, se
terminski načrt izdela s kombiniranjem zgoraj naštetih prednostnih pravil. Tako je možno
izdelati terminski načrt, ki bo izpolnjeval več pogojev hkrati.
2.3.2 Prestavljanje ozkega grla Ta hevristična metoda je ena izmed najbolj uspešnih metod za terminiranje in se je že dobro
uveljavila v praksi. Pri tej metodi se terminiranje izvaja za vsak stroj posebej. Ker nalogi med
seboj "tekmujejo" za razpoložljive vire (stroje), se med procesiranjem vedno pojavi eno ali
več ozkih grl, ki zavirajo procese na drugih strojih. Ta metoda poskuša s pravilnim
razvrščanjem delovnih nalogov čimbolj zmanjšati učinek ozkega grla. Postopek poteka tako,
da se pri vsaki iteraciji na podlagi največjih zakasnitev nalogov določi stroj, ki predstavlja
ozko grlo. Za ta stroj se nato določi trenutni optimalni vrstni red izvajanja operacij. Ker ta
sprememba vpliva tudi na druge stroje, je potrebno v skladu z zahtevami in omejitvami
prirediti vrstni red tudi na teh. Iteracija se ponavlja dokler končnega rezultata ni možno več
izboljšati.
2.3.3 Kolonija mravelj Optimizacijske metode, ki temeljijo na koloniji mravelj, oponašajo vedenje mravelj, ki iščejo
najkrajšo pot med svojim mravljiščem in izvorom hrane. Za orientacijo oz. označevanje poti
uporabljajo feromone, ki sčasoma zgubljajo na jakosti. Ko mravlja najde izvor hrane, se vrne
bolj ali manj direktno v mravljišče. Feromoni, ki jih pri tem pušča za sabo, privabijo bližnje
mravlje, ki bolj ali manj natančno sledijo poti prve mravlje. Če od hrane do mravljišča vodi
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-10-
več poti, bo največkrat uporabljena najkrajša pot, saj je za to pot potrebno najmanj časa. Ta
pot se bo s časom čedalje bolj utrjevala s feromoni, medtem ko bodo daljše poti počasi
izginjale.
Ta princip iskanja optimuma je možno uporabiti tudi pri terminiranju delovnih nalogov.
Dobra lastnost te metode je izvrstna prilagodljivost na nova okolja.
2.3.4 Lokalno iskanje Te metode poskušajo najti boljšo rešitev od poznane s preiskovanjem "sosednjih rešitev". Dve
rešitvi sta sosednji, če eno dobimo z določeno modifikacijo druge. Pri vsaki iteraciji se s
postopkom lokalnega iskanja preiskuje soseska in ovrednotijo različne potencialne rešitve.
Glede na določene kriterije se nato potencialna rešitev sprejme ali zavrne. Če je določena
sosedna rešitev sprejeta, se iteracija lokalnega iskanja ponovi za to sprejeto rešitev. Postopek
se nato ponavlja toliko časa, dokler ni izpolnjeno zaustavitveno pravilo.
2.3.5 Simulirano ohlajanje Simulirano ohlajenje je metoda lokalnega iskanja, ki se zgleduje po fizikalnem principu
ohlajanja snovi. Pri ohlajanju taline molekule z višjo temperaturo lažje preidejo v druga
stanja. Hladnejša ko postaja talina, težji postajajo ti prehodi in čedalje manjšemu številu
molekul ta prehod uspe. Ta princip je uporabljen tudi pri iskanju optimalnih rešitev pri
terminiranju. Na začetku iskanja se torej dovolijo tudi prehodi na slabše rešitve, vendar pa
slabše rešitve tekom iteracije dobivajo čedalje manj možnosti da bodo izbrane. To lahko
prepreči, da bi se iskanje končalo v lokalnem optimumu. Iskanje se konča, ko je izpolnjen
zaustavitveni kriterij. To pa je lahko maksimalno število iteracij, ali pa dejstvo, da se rešitev
po določenem številu iteracij ni izboljšala. Uspešnost te metode je odvisna od izbire sosednjih
rešitev in od premikanja iskanja skozi to sosesko. Če je iskanje usmerjeno tako, da se odmika
stran od lokalnega optimuma, potem bo postopek dosegel dober rezultat. Iskanje se lahko
izvaja naključno, ali pa organizirano.
2.3.6 Tabu iskanje Tabu iskanje je metoda lokalnega iskanja, ki je podobna simuliranemu ohlajanju. Tudi pri tej
metodi so dovoljeni preskoki na slabše rešitve. Za vsak izbran terminski načrt se tudi pri tej
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-11-
metodi poiščejo sosednje rešitve. Kako sosednjo rešitev poiskati in katero izbrati, to
predstavlja pri vseh metodah lokalnega iskanja glavni problem. Pri simuliranem ohlajanju se
sosednje rešitve iščejo naključno ali organizirano. Pri tabu iskanju pa je iskanje
deterministične narave. Proces iskanja je namreč vezan na t.i. tabu seznam. Ta seznam
vsebuje mutacije, ki jih postopek pri iskanju sosednjih rešitev ne sme uporabiti. Seznam
vsebuje določeno število mutacij, ki se tekom iskanja menjujejo. Pri vsaki iteraciji (preskok
na novo rešitev) se uporabljena mutacija doda na vrh seznama, zadnja pa se izbriše. S takšnim
načinom reševanja se prepreči vračanje rešitev v lokalni optimum, vendar pa je končna rešitev
močno odvisna od naključno izdelave rešitve, ki je bila uporabljena na samem začetku
iskanja.
2.3.7 Genetski algoritmi Reševanje problemov z genetskimi algoritmi spominja na biološko evolucijo. Pri tej metodi je
potrebno na začetku generirati naključno populacijo terminskih načrtov, katere se nato
spreminja iz generacije v generacijo. Spremembe se izvajajo z genetskimi operacijami kot so
selekcija, mutacija in križanje. Pri teh operacijah lahko sodelujejo samo najboljše rešitve v
posamezni generaciji. S tem je doseženo prehajanje na čedalje boljše rešitve.
2.3.8 Hibridne metode To so metode, ki združujejo dve ali več posameznih metod. S tem je doseženo združevanje
dobrih lastnosti posameznih metod in doseganje še boljših rezultatov. Poznane kombinacije
so: genetski algoritmi in lokalno iskanje, genetski algoritmi in tabu iskanje, itd. Za posebno
dobro kombinacijo se je izkazala kombinacija metode simuliranega ohlajanja in tabu iskanja.
Pri simuliranem ohlajanju rešitev ni odvisna od začetne rešitve, tabu iskanje pa prepreči, da bi
se iskanje končalo v lokalnem optimumu. Poznane so tudi druge kombinacije in še veliko jih
je v fazi razvijanja.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-12-
3 Evolucijsko računanje Evolucija predstavlja razvoj živih bitji od najpreprostejših organizmov ter vse do
kompleksnejših oblik, kot je npr. človek. V teoriji imajo vsa živa bitja istega prednika,
evolucija pa je poskrbela, da se je iz tega skupnega prednika skozi milijarde let razvilo mnogo
povsem različnih vrst organizmov. Še v 19. stoletju je prevladovalo mnenje, da je za nastanek
vseh živih vrst odgovoren Bog. Eden od prvih znanstvenikov, ki je začel širiti teorijo o
evoluciji je bil Carel Linné, ki je leta 1735 postavil temelje moderne taksonomije. Njegovo
klasifikacijo rastlin in živali se v veliki meri uporablja še danes. Pravi pionir na področju
evolucije je nedvoumno francoski znanstvenik Charles Darwin. Darwinova teorija kot
merodajne dejavnike za evolucijo postavlja križanje in mutacijo. V svoji knjigi je leta 1859
opisal evolucijo kot borbo živih bitij za obstoj v svojem okolju. Posamezniki v določeni
populaciji imajo različne lastnosti v boju za preživetje in razmnoževanje. Naravna selekcija pa
omogoča, da svoje karakteristike na potomce prenesejo samo najbolj prilagojeni posamezniki.
Število sposobnejših organizmov se tako iz generacije v generacijo veča, medtem ko slabši
počasi izumirajo. Vendar je imel Darwin težave pri razlagi mehanizma prenašanja lastnosti na
potomce. Pri tem je bil uspešen avstrijski menih Gregor Mendel, ki je eksperimentiral z vzrejo
vrtnega graha in pri tem opazoval prenos karakteristik na naslednje generacije. Mendel je
ugotovil, da se karakteristike delijo na prevladujoče (dominantne) in prikrite (recesivne), ter
kako se te karakteristike kombinirajo.
Vsi zgoraj našteti znanstveniki, še posebej Charles Darwin, so imeli velik vpliv na
bodoče biološke raziskave. Znanstvenikom je uspelo na podlagi njihovih dejstev razvozlati
zapletene kemijske procese v celicah, strukturo genov in prenos karakteristik iz generacije v
generacijo. Leta 1953 je znanstvenikom uspelo razvozlati obliko molekule DNK, leta 2000 pa
že celotno genetsko strukturo človeka.
Bistvo evolucije je prenašanje lastnosti oz. karakteristik organizma v naslednjo
generacijo. Te lastnosti so odvisne od biokemijskih insktrukcij, ki jim pravimo geni. Gen
predstavlja delček DNK molekule in sodeluje pri izdelavi beljakovin, ki je osnova življenja.
Beljakovine so osnovna struktura celic in krmilijo kemijske procese v celicah. Poleg tega
opravljajo še številne naloge, ki so izvirnega pomena za življenje: sprejemajo hranilne snovi,
ki jih nato spremenijo v beljakovine, pretvarjajo energijo, oddajajo toploto, itd. Človeško telo
je zgrajeno iz približno 200 različnih vrst celic. Čeprav se celice med seboj razlikujejo, so si v
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-13-
marsičem podobne. Skupno jim je, da vsaka celica deluje po svojem delovnem načrtu, ki je
usklajen z drugimi celicami. Kot že omenjeno, je glavna naloga celic izdelava beljakovin. Za
vsako beljakovino ima celica recept, po katerem jo izdela. Ta recept pa se imenuje gen in je
osnovna struktura tudi v genetskih algoritmih.
3.1 Metode evolucijskega računanja Pri evolucijskem računanju se uporabljajo mehanizmi kot pri biološki evoluciji: mutacija,
selekcija, križanje, reprodukcija,… Ker smo pri reševanju problemov s pomočjo evolucijskih
metod zvesti tem mehanizmom, ni nobene garancije, da vsaka evolucija pripelje do
zadovoljivega izida. Reševanje problema pričnemo z naključno ustvarjeno populacijo rešitev
(organizmi). Vsak organizem predstavlja bolj ali manj natančno rešitev problema. Organizme
celotne populacije ovrednotimo in tistim, ki so bližje rešitvi, damo možnost, da sodelujejo pri
genetskih operacijah. Boljše organizme torej s selekcijo izločimo od slabših in jih nato
spreminjamo (mutacija, križanje,…). Dobimo potomce, ki so lahko boljši ali pa tudi slabši kot
njihovi predniki. Ti potomci nato tvorijo novo generacijo, ki jo spet ovrednotimo. Ta
postopek se ponavlja toliko časa, dokler ni izpolnjeno ustavitveno merilo. To je lahko
največje predpisano število generacij, ali pa dovolj kakovostna rešitev problema. Cikel
evolucijskega algoritma prikazuje slika 3.1.
Evolucijski algoritem
t: = 0
ustvari začetno naključno populacijo organizmov P(t)
ovrednoti P(t)
ponavljaj
spreminjaj P(t) → P(t + 1)
ovrednoti P(t + 1)
t: = t + 1
dokler ni izpolnjeno ustavitveno merilo
Slika 3.1 Cikel evolucijskega algoritma – prirejeno po viru [8]
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-14-
Obstaja več različnih metod evolucijskega računanja, najbolj znane pa so naslednje štiri:
• genetski algoritmi
• genetsko programiranje
• evolucijske strategije
• evolucijsko programiranje Naštete metode se razlikujejo predvsem po vrsti struktur, ki so podvržene adaptaciji, in po načinu tvorjenja rešitev.
3.2 Genetski algoritmi Genetski algoritmi so tehnike za iskanje natančne ali približne rešitve danega problema in se
velikokrat uporabljajo tudi za optimizacijo. Pri genetskih algoritmih so rešitve (organizmi)
predstavljene na zelo enostaven način. Ponavadi je to niz v binarnem sistemu (slika 3.2),
možna pa so tudi druga kodiranja. Organizmi so torej sestavljeni iz posameznih genov (0 ali 1
v binarnem sistemu) in imajo neko določeno vrednost, ki ji pravimo fenotip.
Reševanje problema začnemo z ustvaritvijo naključne populacije organizmov. Velikost
populacije in kompleksnost organizmov je seveda odvisna od zadanega problema. Za
ovrednotenje posameznih organizmov potrebujemo fitnes funkcijo, s katero lahko določimo
kako kvalitetno rešitev ponuja posamezni organizem. S to funkcijo iz populacije pobiramo
boljše organizme in jim damo možnost, da sodelujejo pri genetskih operacijah. Slabši
organizmi tako počasi odmirajo iz populacije. Sposobnejši organizmi na ta način prenašajo
svoj genski material v naslednje generacije s pomočjo križanja, selekcije in mutacije.
Postopek ovrednotenja in spreminjanja izvajamo po sliki 3.1 toliko časa, dokler ne
dobimo zadovoljivih rezultatov oz. so izpolnjeni zaustavitveni pogoji. Iz generacije v
generacijo tako dobivamo boljše organizme, lahko pa se zgodi tudi to, da rešitev zaide v
lokalni optimum. V tem primeru pač evoluciji podvržemo več civilizacij, ali poskušamo
izboljšati mehanizem iskanja rešitev.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-15-
7091FENOTIP
POPULACIJA
1ORGANIZEM 1 0 1
GEN
10 1 01 0 10 1 0
27
0 0 1 01 1 1
Slika 3.2 Organizmi v binarnem kodiranju
3.2.1 Kodiranje organizmov Kako zakodirati rešitev v organizem je ključnega pomena pri genetskih algoritmih. Ker je bilo
probleme iz inženirstva pogosto zelo težko kodirati v binarnem sistemu, so bile razvite še
ostale kodirne tehnike. Tako poznamo danes veliko kodirnih tehnik, ki temeljijo na realnih in
celih številih in tudi simbolih. Poglejmo si, kako bi lahko zakodirali besedo evolucija. Če
uporabimo kodo ASCII (American Standard Code for Information Interchange), kjer so črke
predstavljene s številkami od 97 do 122, bi kodiranje bilo takšno:
evolucija → [ 101 118 103 108 117 99 105 106 97 ]
Pred aplikacijo genetskih algoritmov je potrebno izvesti podrobno analizo, da zagotovimo
primerno kodiranje rešitev v organizme. Značilnost genetskih algoritmov je tudi, da
izmenično delujejo v kodirnem prostoru in prostoru rešitev. Genetske operacije izvajamo v
kodirnem prostoru, medtem ko ovrednotenje in selekcija potekata v prostoru rešitev. Pri
kodiranjih, ki niso binarna, pa lahko prehod med tema dvema prostoroma povzroča težave.
Pri binarnem kodiranju so organizmi relativno enostavni. Njihova celotna struktura je
namreč sestavljena iz samo dveh različnih simbolov. Kodiranje je ponavadi izvedeno tako, da
lahko te simbole v organizmu poljubno spreminjamo iz ene vrednosti v drugo, organizem pa
bo še vedno predstavljal možno rešitev problema.
Pri ostalih kodiranjih organizma ne moremo poljubno spreminjati, saj je oblika
organizma povezana z določenimi pravili. To pomeni, da moramo pri konstruiranju
organizma upoštevati določena pravila o obliki, vrstnem redu genov, dovoljenih vrednostih
posameznih genov, itd. Ta pravila so bolj ali manj neposredno povezana s problemom, ki ga
želimo rešiti z genetskimi algoritmi. Kaj se lahko zgodi če teh pravil ne upoštevamo prikazuje
slika 3.3.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-16-
kodirni prostor
uporaben organizem
neveljaven organizemneuporaben organizem prostor rešitev
možne rešitve
Slika 3.3 Kodirni prostor in prostor rešitev
V najslabšem primeru nepravilno spreminjanje organizma povzroči, da ta postane
neuporaben. To pomeni, da rešitev, ki jo predstavlja organizem ni povezana z reševanjem
obravnavanega problema, ali pa organizma sploh ni možno ovrednotiti.
Neveljavni organizmi sicer predstavljajo rešitev za obravnavan problem, ampak je
rešitev pridobljena brez upoštevanja internih zahtev, ki so podane za obravnavan problem. To
pomeni, da smo do rešitve prišli z "goljufanjem".
3.2.2 Selekcija Operacija reprodukcije ali selekcije je namenjena temu, da organizme, ki imajo boljšo
vrednost fenotipa, nespremenjene prenese v naslednjo generacijo. Poznamo različne tipe
selekcije: proporcionalno selekcijo, selekcijo z rangiranjem in turnirsko selekcijo. Na sliki 3.4
je prikazana selekcija pri kateri je izbran boljši organizem – tisti, ki ima večjo vrednost
fenotipa.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-17-
1
70
01
91
11 0
SELEKCIJA
FENOTIP
ORGANIZEM 1 0110
91
0111
1
100 1 0
Slika 3.4 Proces selekcije
Najpreprostejša je proporcionalna selekcija. Pri tej selekciji je uspešnost preživetja
organizmov sorazmerna z njihovo uspešnostjo. Tem večjo uspešnost ima organizem, večja je
njegova možnost preživetja. Za njeno implementacijo običajno izberemo pravilo rulete, kjer je
velikost polja rulete vsakega organizma sorazmerna z njegovo uspešnostjo. Slabost
proporcionalne selekcije je možnost prehitre konvergence k lokalnemu optimumu. To se
zgodi v primeru, ko imamo v populaciji zelo uspešen organizem, ki pa ne vodi do globalnega
optimuma.
Pri selekciji z rangiranjem se verjetnost preživetja organizma določi glede na njegov
rang. Populacijo uredimo po kriteriju uspešnosti. Organizme torej ne izbiramo glede na
njihovo uspešnost, ampak jih glede na to samo rangiramo. Obstaja več možnih selekcij, ki
temeljijo na rangiranju, npr. Bakerjeva selekcija, selekcija z linearnim in nelinearnim
rangiranjem, itd.
Pri turnirski selekciji se učinkovito izrablja princip rangiranja. Pri tej metodi selekcije se
naključno izbere nekaj organizmov iz populacije. Med vsemi izbranimi se samo najboljši
uvrsti v naslednjo generacijo. Ta postopek nato ponovimo tolikokrat, kolikor je potrebno.
Jasno pa je, da več organizmov kot jih izberemo za en turnir, večji bo selekcijski pritisk. To
pomeni, da v naslednjo generacijo pridejo samo najboljši organizmi, kar lahko vodi do
lokalnega optimuma.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-18-
3.2.3 Križanje Križanje je ena od genetskih operacij, ki omogoča križanje (rekombinacijo) genetskega
materiala v populaciji. V populacijo vnaša raznolikost in s tem pripomore do hitrejšega
iskanja rešitev. Križanje je lahko:
• enomestno,
• dvomestno,
• večmestno,
• uniformno.
Na sliki 3.5 je prikazan proces enomestnega križanja dveh organizmov. Starševska organizma
morata najprej biti uspešna pri ovrednotenju, da imata sploh možnost pri genetskih operacijah.
Starša ponavadi izberemo kar s pomočjo selekcijske funkcije. Pri obeh starševskih organizmih
je potrebno določiti naključno točko križanja, nato pa zamenjamo repa obeh staršev in dobimo
uporabna potomca.
1
potomec 2
potomec 1
1
10 0
10 0
KRIŽANJE
0 1 1
1 0 1
oče
1 0 1
točka križanja
1 0 1 1
11 0
11 0
0
1
točka križanjamati
1 0 0 0 1 1 0
Slika 3.5 Enomestno križanje
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-19-
Pri dvomestnem križanju, ki je prikazano na sliki 3.6, pa je potrebno določiti dve križni mesti.
Dvomestno križanje je razširitev enomestnega, kjer si organizma izmenjata en odsek. Pri
večmestnem križanju pa je teh odsekov lahko tudi več. Pri uniformnem križanju pa se geni
lahko izmenjujejo ne glede na odseke, kar je včasih lahko prednost.
2. točka križanja
KRIŽANJE
01 0
potomec 2
1 10
potomec 1
0
1
oče
1 0
1. točka križanja
1 0
1
11
1110
101 0
10
1. točka križanja
0
mati
01
1 0 0
2. točka križanja
1 1 0
Slika 3.6 Dvomestno križanje
3.2.4 Mutacija Pri mutaciji gre za naključno spreminjanje genetskega materiala organizma. Obseg mutacije
na organizmu je lahko različen. Lahko mutiramo en ali več genov. Slika 3.7 prikazuje
mutacijo tretjega in šestega gena. Pod pojmom permutacija pa razumemo menjavo dveh ali
več genov med sabo znotraj enega organizma.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-20-
1
MUTACIJA
1 0
potomec
0 1 0 0
starševski organizem
01 011 11
Slika 3.7 Mutacija tretjega in šestega gena organizma
3.3 Genetsko programiranje Strokovnjaki se že vrsto let ukvarjajo z idejo o strojnem učenju in o izdelavi stroja, ki bi bil
sposoben samostojnega učenja. Že proti koncu petdesetih let se je umetna inteligenca razdelila
na dve veji:
• strojno učenje in
• ekspertni sistemi.
Prve ideje strojnega učenja, kjer računalnik programira samega sebe so se pojavile že leta
1959, ko je Friedberg naključno generiral programe in jih tudi mutiral. Genetsko
programiranje (GP) pa je vpeljal J.R. Koza in je zaenkrat najbolj pogosta metoda uporabe
evolucijskega računanja. Temelji na genetskih algoritmih, vendar pa tukaj vsak organizem
predstavlja računalniški program. Namen genetskega programiranja je optimizacija populacije
računalniških programov v skladu s fitnes funkcijo. Tako kot pri genetskih algoritmih, se tudi
pri genetskem programiranju ustvari naključna populacija organizmov – računalniških
programov. Tem programom se zaradi genetskih operacij spreminja tako oblika kot tudi
velikost. Tako dobivamo čedalje boljše programe v skladu z dano nalogo.
Posamezni programi so ponavadi predstavljeni v drevesni strukturi. Na sliki 3.8 je
primer funkcije v obliki abstraktnega sintaktičnega drevesa (S – izraz). Drevesne strukture so
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-21-
sestavljene iz posameznih funkcij, ki se nahajajo v vozliščih, ter argumentov. Primeri funkcij
so lahko:
• aritmetične operacije (+ - * /),
• matematične funkcije (sin, cos, log, exp),
• logični operatorji (AND, NOT, OR),
• krmilni operatorji (IF – THEN – ELSE, DO – UNTIL, PROGN),
• relacijske funkcije (=, >, <),
• funkcije za rekurzijo,
• funkcije za iteracijo.
Tako strukturo je mogoče enostavno ovrednotiti in razvijati. Za namene genetskega
programiranja je torej smiselno uporabljati računalniške programe, ki delujejo na principu
drevesne strukture, kot npr. Lisp. Uporaba Lisp – a je smotrna iz naslednjih razlogov:
• programi in podatki so predstavljeni na enak način, z S – izrazom,
• abstraktno sintaktično drevo programa je enako S – izrazu,
• programe lahko ovrednotimo z vgrajeno funkcijo eval,
• avtomatsko čiščenje dinamičnih podatkovnih struktur.
Slika 3.8 Funkcija v obliki drevesne strukture Vir: http://en.wikipedia.org/wiki/File:Genetic_Program_Tree.png
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-22-
3.3.1 Priprava Najprej je potrebno določiti nabor terminalov in primitivnih funkcij. Terminale izberemo
glede na vrsto zastavljenega problema, pri primitivnih funkcijah pa se odločimo za tiste od
katerih pričakujemo največji uspeh pri reševanju problema. Ta korak je odločilen pri
uspešnosti, saj nepravilna izbira vodi do slabih rezultatov.
Pri naključnem ustvarjanju računalniških programov pogosto pride do uporabe funkcij
nad nepravilnimi vrednostmi, ali pa pride do izidov, ki so ekstremni. Takšni primeri so
deljenje s številom 0, ekstremne vrednosti potenčnih in eksponentnih funkcij, koreni
negativnih števil, itd. Da preprečimo takšne nevšečnosti je smiselna uporaba zaščitnih funkcij.
V naslednjem koraku je potrebno določiti način za ovrednotenje populacije oz. izračunavanje
prilagojenosti. Nato je potrebno izbrati še velikost populacije ter največje število generacij.
Na koncu moramo podati še kriterije za zaustavitev evolucije. Tudi v tem primeru je to lahko
dovolj dobra rešitev, ali določeno število generacij.
3.3.2 Začetna struktura Tako kot pri genetskih algoritmih, je potrebno tudi pri genetskem programiranju ustvariti
začetno populacijo, ki jo sestavljajo naključni organizmi. V tem primeru so organizmi
računalniški programi, ki jih dobimo s sestavljanjem primitivnih funkcij in terminalov.
Ustvarjanje programov lahko izvedemo na več načinov in tako dobimo drevesne strukture
različnih oblik. Najbolj pogosto uporabljeni metodi sestavljanja sta:
• polna metoda in
• rastoča metoda.
Pri polni metodi imajo vsa drevesa točno določeno globino. To dosežemo tako, da pri
sestavljanju drevesne strukture, na globinah ki so manjše od dopustne globine, dovolimo
uporabo samo funkcij iz določenega nabora. Vozlišča, ki ležijo na največji dopustni ravnini pa
vsebujejo samo terminale. Pri rastoči metodi za začetno populacijo sestavljamo drevesne
strukture različnih oblik in velikosti. Globina strukture je v tem primeru odvisna tudi od
razmerja števil elementov v naboru funkcij in terminalov. Ker želimo, da so si organizmi v
začetni populaciji čim bolj različni, je smiselna kombinacija obeh metod.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-23-
3.3.3 Ovrednotenje populacije Populacijo ovrednotimo tako, da izračunamo prilagojenost vsakega organizma na okolje.
Določevanje prilagojenosti je vsekakor gonilna sila pri evoluciji in je vodilo za spreminjanje
struktur, ki so podvržene adaptaciji. Način izračuna je seveda odvisen od problema, ki ga
rešujemo. Velikokrat je prilagojenost posameznika določena kar z razliko med pravilno
vrednostjo in rezultatom, ki ga poda računalniški program. Manjša kot je razlika, večjo
prilagojenost ima program. V mnogih primerih je prilagojenost programa sestavljena iz več
dejavnikov kot so npr. varčnost, učinkovitost, pravilnost, itd. V osnovi ločimo dve vrsti
prilagojenosti. To sta :
• surova prilagojenost in
• standardizirana prilagojenost.
Surova prilagojenost izhaja iz problema, ki ga obravnavamo. V odvisnosti od primera imajo
lahko boljšo prilagojenost programi z manjšo številčno vrednostjo (v primeru ko ima
prilagojenost značaj napake, porabe, itd.), ali pa večje vrednosti (prilagojenost ima značaj
dobička).
Pri standardizirani prilagojenosti nižja številčna vrednost vedno pomeni boljši rezultat
kot višja. Dobimo jo s preureditvijo surove prilagojenosti.
3.3.4 Genetske operacije Za primarne genetske operacije pri genetskem programiranju uporabljamo reprodukcijo in
križanje. Reprodukcija je nespolna operacija, pri kateri se s pomočjo prilagojenosti iz
populacije izbere en organizem, nato pa se ta program nespremenjen prenese v naslednjo
generacijo.
Križanje predstavlja spolno operacijo, kjer sodelujeta dva starševska organizma. Ker
imamo pri tem opravka s kompleksnimi računalniškimi programi je potrebno še posebno
paziti, da imajo potomci po križanju še vedno sintaktično pravilnost. Primer operacije križanja
je prikazan na sliki 3.9.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-24-
(3 + (1/x)) * ((y * 2) - 5)
1 yx 2
(x + cos x) + (2/1)
x
(3 + cos x) * ((y * 2) - 5)
KRIŽANJEpotomec 1
3
-+
*/ 5
*
yx 2
potomec 2
+
x cos
/
2 1
+
(x + (1/x)) + (2/1)
x1
3 *cos
+
5
-
*
oče
x /
+
mati
2 1
/
+
Slika 3.9 Operacija križanja
Poleg primarnih genetskih operacij lahko uporabljamo še sekundarne. Te operacije so
mutacija, permutacija in poenostavljanje. Mutacija naključno spremeni del veje drevesa. Vejo,
ki je določena z mestom mutacije, zamenja naključno ustvarjena nova veja. Pri permutaciji se
najprej izbere naključno mesto drevesa, ki predstavlja funkcijo z argumenti. Nato še
naključno izberemo eno od možnih permutacij in jo izvedemo. Poenostavljanje pa je
operacija, ki tekom evolucijskega procesa krajša programe. Uporablja se največkrat pri
Boolovih izrazih. Poenostavljanje ne spremeni programa, ampak ga samo skrajša.
3.3.5 Evolucija populacij Postopek je zelo podoben kot pri genetskih algoritmih. Populacijo spreminjamo toliko časa,
dokler ni izpolnjeno zaustavitveno pravilo. Naloge, ki jih rešujemo z genetskim
programiranjem so običajno zahtevnejše kot pri genetskih algoritmih, zato vsaka civilizacija
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-25-
ne pripelje do zadovoljive rešitve. Problem je torej potrebno obdelati z več neodvisnimi
civilizacijami. Koliko civilizacij je potrebnih, pa je odvisno od zahtevnosti zadanega
problema.
3.4 Evolucijske strategije Evolucijske strategije so optimizacijske metode, ki temeljijo na adaptaciji in evoluciji. Izumil
jih je Ingo Rechenberg s svojimi sodelavci sredi sedemdesetih let. Evolucijske strategije se
uporabljajo predvsem za optimizacijo realnih funkcij, zato so rešitve v oblikah vektorjev
realnih števil. Začetne evolucijske strategije so imele v populaciji samo en organizem in
uporabljena je bila samo ena genetska operacija – mutacija. Celoten postopek temelji na
dejstvu, da so manjše spremembe (mutacije) veliko pogostejše kot velike. Potomec, ki ga
dobimo zgolj z mutacijo starša, slednjega lahko nadomesti samo, če je od njega bolj kvaliteten
in če zadostuje danim pogojem. Kasnejše evolucijske strategije so imele več članov v
populaciji, za genetske operacije pa se je začelo uporabljati tudi križanje. Ti modeli so se zelo
dobro obnesli pri reševanju težav, kjer se optimalna rešitev spreminja s časom.
3.5 Evolucijsko programiranje Namen evolucijskega programiranja je razvoj inteligentnih sistemov oz. napovedovanje
sprememb v okolju s pomočjo simulirane evolucije. Avtor te metode je bil Lawrence J. Fogel.
Metoda izhaja iz avtomatskega načrtovanja končnih avtomatov in se danes uporablja kot
večnamenska optimizacijska metoda. Ta metoda se izvaja tako, da algoritem na osnovi
vhodnega zaporedja napove nov izhodni simbol. Točnost novega izhodnega simbola meri
stroškovna funkcija. Npr: Vhodno zaporedje označimo s simboli a1, a2, a3, …. Algoritem
mora napovedati naslednji (neznan) simbol an+1 na osnovi prejšnjih znanih simbolov a1, a2, a3,
…an. Namen evolucijskega programiranja je razviti tak algoritem. Podobno kot pri
evolucijskih strategijah, tudi pri tej metodi ustvarjamo potomce in jih ovrednotimo. Za
genetsko operacijo pa služi samo mutacija.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-26-
3.6 Uporaba evolucijskega računanja Uporaba evolucijskih metod v praksi skoraj ni omejena. Lahko se uporablja na vseh področjih
od akustike do astronomije. Velika prednost evolucijskih metod je v tem, da lahko raziskujejo
rešitve v vseh smereh v prostoru rešitev. Če se slučajno ena pot spremeni v slepo ulico, se te
poti z lahkoto znebimo in nadaljujemo iskanje v drugi smeri. To pomeni, da so evolucijske
metode predvsem uporabne pri problemih, kjer obstaja ogromno potencialnih rešitev. Še ena
dobra lastnost genetskih algoritmov je v tem, da se zelo dobro obnesejo v prostoru rešitev,
kjer obstaja veliko lokalnih optimumov. Drugi algoritmi se namreč zaustavijo na lokalnem
optimumu, pa čeprav obstaja nekje drugje boljša rešitev. Npr. genetski algoritem, ki sta ga
razvila General Electric in Rensselaer Polytechnic Institute je načrtoval motor na reaktivni
pogon, ki je bil za 50 % boljši od motorja, ki ga je razvil ekspertni sistem. Genetski algoritem
je pri tem uspešno navigiral skozi prostor s približno 10387 – imi rešitvami. Konvencionalne
metode za razvoj takšnih motorjev lahko trajajo tudi do pet let in stanejo 1 milijardo evrov.
Genetski algoritem pa je rešitev odkril po dveh dneh na zmogljivejšem osebnem računalniku.
Evolucijsko računanje s svojimi prednostmi postaja čedalje bolj razpoznavno. Evolucijske
metode se spopadajo s širokim spektrom problemom in jasno dokazujejo svojo moč in
potencial. Spodaj je naštetih samo nekaj primerov uporabe teh metod.
Akustika
Genetski algoritmi so bili uporabljeni za izgradnjo koncertne hale z optimalnimi akustičnimi
lastnostmi. Dosežena je bila zelo dobra kvaliteta zvoka za zborovodjo, občinstvo in
glasbenike na odru. Pri tej nalogi je bilo potrebno hkrati optimizirati večje število
spremenljivk. Končna oblika hale je imela oblike in mere sorazmerne z dunajsko Grosser
Musikvereinsaal, ki velja za eno najboljših, če že ne za najboljšo koncertno halo kar se tiče
akustičnih lastnosti.
Aeronavtika
Evolucijske metode so bile uporabljene za konstruiranje krila za nadzvočno letalo. Cilj je bil
znižati zračni upor pri nadzvočni in tudi pri nižji hitrosti letala.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-27-
Astronomija
S pomočjo genetskih algoritmov so si znanstveniki pomagali v področju astrofizike. Genetski
algoritmi se lahko namreč uporabljajo tudi za določanje rotacijskih krivulj galaksij glede na
rotacijske hitrosti njenih komponent.
Kemija
S pomočjo kratkih in zelo močnih laserskih sunkov je mogoče razcepiti velike molekule na
več manjših. Končni produkt take reakcije je možno kontrolirati z obliko laserskega žarka,
vendar pa je obliko na determinističen način skoraj nemogoče izračunati.
Tehnologije materialov
S pomočjo genetskih algoritmov so bili razviti polimeri na ogljikovi osnovi, ki lahko
prevajajo elektriko.
Geologija
Genetske algoritme je mogoče uporabiti za določanje epicentra potresa glede na seizmološke
podatke.
Matematika
Genetski algoritmi se v tem področju zelo dobro obnesejo pri reševanju nelinearnih parcialnih
diferencialnih enačb visokega reda.
Vojska
Genetski algoritmi lahko služijo tudi za razvoj taktičnih načrtov za vojaške spopade. To je
lahko zelo priročno, saj je potrebno pri vojskovanju ukrepati hitro in učinkovito, odločitve pa
se sprejemajo v zelo stresnem okolju.
Robotika
V zadnjem času so postala zelo popularna tekmovanja avtonomnih robotov v nogometu.
Programi, ki kontrolirajo ekipo robotov morajo taktično koordinirati vse robote in sprejemati
mnogo odločitev – tako kot pri pravem nogometu. S pomočjo genetskih algoritmov bo
mogoče naučiti robote, da reagirajo kot pravi nogometaši.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-28-
4 Terminiranje delovnih nalogov z genetskimi algoritmi V proizvodnem sistemu imamo različne obdelovalne stroje (stružnice, brusilne stroje, žage,
rezkalne stroje, itd), ki izvajajo operacije na delovnih nalogih (izdelkih). Terminiranje se
ukvarja s časovnim razporejanjem nalogov na stroje. Vsak nalog je sestavljen iz določenega
števila delovnih operacij, ki se izvajajo na posameznih strojih. Naloga terminiranja je
razporeditev operacij vseh nalogov na stroje tako, da je čim boljše izpolnjen kriterij
uspešnosti. Nekateri od teh kriterijev so:
• visoka izkoriščenost kapacitet,
• doseganje dobavnih rokov,
• kratki pretočni časi,
• nizke količine nedokončane proizvodnje,
• visok dobiček.
Tipičen proizvodni obrat sestavljajo skupine strojev, razmeščenih po tehnološki podobnosti.
Pri tem načinu se vedno pojavlja neusklajenost med tehnološkimi in transportnimi tokovi ter
zmogljivostmi posameznih tehnologij. Bolj kot so kapacitete strojev izkoriščene, težje je
izdelati dober načrt zasedenosti strojev oziroma optimirati vrstni red naročil. Razvrščanje
delovnih nalogov oziroma terminiranje (razen nekaterih enostavnih primerov) spada v razred
NP - problemov, kar pomeni, da je časovna zahtevnost algoritma funkcija dolžine vhodnih
podatkov in raste eksponentno, hitreje kot vsak polinom. To pomeni, da imamo pri (m) številu
strojev in (n) številu nalogov do (n!)m možnih rešitev.
Tipičen problem terminiranja obravnava m število strojev in n število nalogov, katere je
potrebno razvrstiti na stroje. Vsak nalog je sestavljen iz določenega števila operacij, ki se na
strojih izvajajo v določenem vrstnem redu. Vsaka operacija ima navedeno na katerem stroju
se izvaja in koliko časa bo procesiranje trajalo. Poleg tega imamo za naloge in stroje določene
zahteve in omejitve, ki jih je potrebno upoštevati:
• vrstni red operacij delovnega naloga se ne sme spreminjati,
• ni omejitev pri vrstnem redu operacij med različnimi nalogi,
• posamezen stroj lahko procesira samo en nalog naenkrat,
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-29-
• nalog se ob vsakem trenutku lahko procesira samo na enem stroju,
• ko stroj začne procesirati operacijo, jo mora izvesti do konca in ne sme biti prekinjen,
• vsak nalog lahko določen stroj obišče samo enkrat,
• nalogi nimajo podanih časov prihoda v proizvodnjo niti dobavnih rokov.
Terminiranje, ki je opisano v tem poglavju se osredotoča samo na zmanjševanje skupnega
časa izvajanja vseh operacij. To je čas, ki preteče med začetkom procesiranja prve operacije,
do konca procesiranja zadnje operacije vseh nalogov. Nalogi bodo torej na stroje razvrščeni
tako, da bo ta čas čim krajši.
V tem poglavju je opisan potek reševanja problema terminiranja z uporabo genetskih
algoritmov. Ta problem je možno reševati na več možnih načinov, vendar pa je vsem načinom
skupna njihova osnova. Tekom raziskav so znanstveniki razvili različne možne načine
reševanja, ki so bili bolj ali manj uspešni.
V poglavju je predstavljena tudi metoda, ki je bila razvita s strani diplomanta, neodvisno
od ostalih že poznanih metod. Na podlagi te metode je bil v celoti izdelan tudi računalniški
program za obdelavo podatkov. Na koncu tega poglavja so opisani rezultati reševanja
praktičnih primerov s tem programom, v dodatku pa je napisano več o izdelavi in strukturi
programa.
4.1 Kodiranje organizmov pri terminiranju Kako kodirati rešitev problema v organizem predstavlja temeljni problem genetskih
algoritmov. Kodiranje je potrebno izvesti tako, da organizem po genetskih operacijah še
vedno lahko predstavlja potencialno rešitev problema. Več o tem je opisano v poglavju 3.2.
Znanstveniki uporabljajo različne pristope za kodiranje organizmov. Ti pristopi lahko
temeljijo na:
• operacijah,
• nalogih,
• prednostnem seznamu,
• metodi PERT,
• prednostnih pravilih, idr.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-30-
Obravnavana bosta dva pristopa. Kodiranje na osnovi operacij in kodiranje s prednostnim
seznamom, ki sta za boljše razumevanje prikazana na enostavnem primeru. Primer je
sestavljen iz treh strojev in treh nalogov, ki je predstavljen v tabeli 4.1.
Tabela 4.1 Primer treh nalogov in treh strojev
čas izvajanja operacij zaporedje izvajanja operacij operacije operacije nalogi
1 2 3 1 2 3 n1 29 78 9 stroj 1 stroj 2 stroj 3 n2 43 90 28 stroj 1 stroj 3 stroj 2 n3 91 85 74 stroj 2 stroj 1 stroj 3
Iz tabele je razvidno, da je npr. nalog n1 sestavljen iz treh operacij. Procesiranje tega naloga
se začne na stroju s1 in traja 43 časovnih enot. Druga operacija se izvaja na stroju s3 in traja
90 časovnih enot, zadnja operacija pa je izvedena na stroju s3 in bo končana po 28–ih
časovnih enotah. Podobno velja tudi za ostala dva naloga.
4.1.1 Kodiranje na osnovi operacij To kodiranje zakodira terminski načrt kot sekvenco operacij, kjer vsak gen predstavlja eno
operacijo. V organizmu so vse operacije istega naloga označene z enakim simbolom.
Organizem vsebuje število genov ki je enako številu nalogov, pomnoženo s številom strojev,
iz njega pa je možni razbrati samo vrstni red nalogov na posameznih strojih. Organizem ima
lahko obliko kot npr. (1 3 2 1 2 2 3 1 3), kjer 1 predstavlja nalog n1, 2 nalog n2 in 3 nalog n3.
Ker ima vsak nalog tri operacije, se v organizmu njegova številka pojavi točno trikrat.
Številke posameznega naloga predstavljajo njegove operacije na strojih.
Npr.: Prva dvojka naloga n2 predstavlja prvo operacijo naloga, ki se izvaja na stroju 1,
druga dvojka predstavlja drugo operacijo, ki se izvaja na stroju 3, zadnja operacija pa na
stroju 2 (slika 4.1).
1 3 2 stroji
( 1 3 2 1 2 2 3 1 3 )organizem
Slika 4.1 Določevanje vrstnega reda strojev
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-31-
Če bi postopek ponovili še za ostala dva naloga, bi dobili seznam strojev, ki je prikazan na
sliki 4.2.
( 1 2 1 2 3 2 1 3 3 )
( 1 3 2 1 2 2 3 1 3 )
stroji
organizem
Slika 4.2 Seznam strojev
Iz seznama strojev na sliki 4.2 je razvidno kako bodo nalogi razvrščeni na strojih. Na stroju 1
bo vrstni red nalogov 1-2-3 (označeno s pravokotniki), na stroju 2 bo vrstni red 3-1-2, na
stroju 3 pa 2-1-3. Te podatke lahko prikažemo tudi na gantogramu, ki je prikazan na sliki 4.3.
Slika 4.3 Prikaz nalogov na gantogramu – izdelano s programom LEKIN
Prednost kodiranja po tej metodi je v relativno enostavnem organizmu. Nad organizmom je
tudi lažje izvajati genetske operacije, kot pri organizmih, ki so bili kodirani po drugih
metodah. Slaba lastnost tega kodiranja je, da organizem ne vsebuje vseh informacij o delovnih
nalogih in jih je potrebno pridobiti od drugje.
4.1.2 Kodiranje s prednostnim seznamom Pri kodiranju na osnovi prednostnega seznama so operacije v organizmu nanizane ena za
drugo v določenem vrstnem redu. Od tega vrstnega reda je odvisno, kako bodo operacije
procesirane na posameznih strojih. Pri tem kodiranju je potrebo paziti, da pri izdelavi
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-32-
organizma ne kršimo prednostnih omejitev nalogov. To pomeni, da mora biti vrstni red
operacij posameznih nalogov v organizmu enak kot je v nalogu.
Ta princip kodiranja je bil uporabljen tudi pri izdelavi programa za terminiranje. Kako
poteka kodiranje organizma si poglejmo na primeru iz tabele 4.1.
1. Ker želimo, da bo neposredno iz organizma možno prebrati vse potrebne podatke,
zapišemo delovne naloge v naslednji obliki:
n1 (n1 s1 29) (n1 s2 78) (n1 s3 9)
n2 (n2 s1 43) (n2 s3 90) (n2 s2 28)
n3 (n3 s2 91) (n3 s1 85) (n3 s3 74)
2. Naredimo seznam prvih operacij vseh nalogov:
( (n1 s1 29) (n2 s1 43) (n3 s2 91) )
3. Iz seznama prvih operacij, naključno izberemo eno operacijo (npr. (n2 s1 43)) .
Ta operacija predstavlja prvi gen v organizmu. Izbrano operacijo vzamemo iz
delovnega naloga in jo postavimo na prvo mesto v organizmu.
n1 (n1 s1 29) (n1 s2 78) (n1 s3 9)
n2 (n2 s3 90) (n2 s2 28)
n3 (n3 s2 91) (n3 s1 85) (n3 s3 74)
organizem
( (n2 s1 43) )
4. Ponovno naredimo seznam prvih operacij vseh nalogov in iz njega izberemo
naključno operacijo (npr. (n1 s1 29)). Izbrano operacijo postavimo na drugo
mesto v organizmu in jo izbrišemo iz delovnega naloga.
n1 (n1 s2 78) (n1 s3 9)
n2 (n2 s3 90) (n2 s2 28)
n3 (n3 s2 91) (n3 s1 85) (n3 s3 74)
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-33-
organizem
( (n2 s1 43) (n1 s1 29) )
5. Postopek ponavljamo toliko časa, dokler ne porabimo vseh operacij v delovnih
nalogih.
Če bi zgoraj opisan postopek nadaljevali do konca, bi prišli do končnega organizma, ki bi
lahko bil takšen:
organizem
( (n2 s1 43)(n1 s1 29)(n1 s2 78)(n3 s2 91)(n2 s3 90)(n3 s1 85)(n2 s2 28)(n1 s3 9)(n3 s3 74) ).
Iz organizma je razvidno, da nismo kršili prej omenjenega pravila. Operacije delovnih
nalogov imajo še vedno isti vrstni red, le da so med sabo pomešane. Zakaj je to tako
pomembno, je razloženo v naslednjem poglavju.
Ker je izdelava organizmov prepuščena naključju, lahko z zgoraj omenjenim načinom
izdelamo veliko število različnih organizmov, ki so potrebni za začetno populacijo.
4.2 Ovrednotenje organizmov Ovrednotimo lahko samo organizme, ki so veljavni. Za veljavne štejemo tiste organizme,
katerih struktura in zapis ustrezata zahtevanim pravilom. Ker v našem primeru želimo
časovno optimirati terminski načrt, nas zanima skupni čas izvajanja operacij. Čim manjši je ta
čas, tem boljši je terminski načrt oz. organizem. Poleg skupnega časa obdelovanja pa nas
zanima tudi vrstni red izvajanja operacij na strojih. Vrstni red izvajanja je v nekaterih
primerih razviden neposredno iz organizma, kar je odvisno od uporabljenega kodiranja.
Vendar načeloma iz organizmov ni možno razbrati časovnega poteka izvajanja operacij. Zato
se za prikazovanje rezultatov največkrat poslužujemo Ganttovih diagramov ali gantogramov.
V gantogramu abscisa predstavlja čas, na ordinato pa nanašamo operacije, ki jim je potrebno
določiti začetek, dolžino trajanja in konec. Iz gantograma je poleg poteka izvajanja operacij
razviden tudi skupni čas obdelave, ki je predmet optimiranja. Poleg gantogramov za
prikazovanje rezultatov pri obsežnejših projektih uporabljamo tudi tehnike mrežnega
načrtovanja (npr. CPM ali PERT).
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-34-
Prikazovanje rezultatov z gantogrami je uporabljeno tudi v programu za terminiranje.
Izdelava gantograma poteka z dodajanjem posameznih operacij v gantogram. V našem
primeru se operacije dodajajo v gantogram neposredno iz organizma in sicer od leve proti
desni. Zato je tudi pomembno, da je vrstni red operacij v organizmu v skladu z zahtevami. V
nasprotnem primeru bi namreč dobili napačne vrednosti v gantogramih in organizem bi bil
nepravilno ovrednoten. Na sliki 4.4 je prikazan gantogram za naš naključno izdelani
organizem:
organizem
( (n2 s1 43)(n1 s1 29)(n1 s2 78)(n3 s2 91)(n2 s3 90)(n3 s1 85)(n2 s2 28)(n1 s3 9)(n3 s3 74) )
Slika 4.4 Gantogram za naključno izdelan organizem – izdelano s programom LEKIN
Iz gantograma je razvidno kateri nalogi imajo prednost pri procesiranju na določenih strojih.
Vrstni red procesiranja pa neposredno vpliva na skupni čas obdelave. Kot je razvidno iz
gantograma, znaša skupni čas obdelave za naš organizem 400 časovnih enot.
Ker bi bila pri programiranju uporaba grafičnih gantogramov težavna, so bili uporabljeni
gantogrami v številčni obliki. Gantogram v številčni obliki za naš organizem pa izgleda
takole:
s1 (0 N2 43) (43 N1 72) (241 N3 326)
s2 (72 N1 150) (150 N3 241) (241 N2 269)
s3 (43 N2 133) (150 N1 159) (326 N3 400)
Gantogram v številčni obliki ni tako pregleden kot grafični, vendar je iz njega mogoče
prebrati vse potrebne podatke.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-35-
4.3 Genetske operacije Genetske operacije so gonilna sila pri genetskih algoritmih. Katere operacije je smiselno
uporabiti pri določenem problemu, je zopet odvisno od načina kodiranja organizma. Edina
genetska operacija, ki ni odvisna od kodiranja je selekcija. Selekcija je najenostavnejša za
uporabo med vsemi operacijami. Namenjena je temu, da se boljši organizmi nespremenjeni
prenesejo v naslednjo generacijo. Pomembno je, katere organizme v ta namen izberemo. Več
o tem je napisano v poglavju 3.2. Ker se pri selekciji organizem ne spremeni, nimamo
nobenih težav z ohranjevanjem veljavnosti organizma. Pri izvajanju vseh drugih operacij je
potrebno upoštevati podane zahteve, da se ohrani veljavnost organizma.
Smiselnost uporabe križanja je pri nekaterih primerih že vprašljiva. Križanje namreč
meša genetski material med izbranimi organizmi. To mešanje pa ima lahko za posledice več
nevšečnosti kot koristi. V primeru, da križamo organizme pri katerih je vrstni red genov
ključnega pomena, lahko dobimo potomce, ki so neveljavni. Seveda lahko vrstni red pri
potomcih popravimo, kar pa zahteva v nekaterih primerih veliko dela. Poleg tega se lahko
potomec pri tem popravljanju preveč spremeni. S tem pa je izničen rezultat, ki ga želimo
dobiti s križanjem. Kot primer si poglejmo dvomestno križanje pri organizmih, ki so kodirani
na osnovi operacij. Naključno izbrana organizma sta vzeta po tabeli 4.1.
potomec 2
( 1 3 2 1 2 2 3 1 3 )oče
1 2 2 3
KRIŽANJE
potomec 1
mati ( 2 2 3 1 3 1 1 3 2 )
1 3 1 1
( 1 3 2 1 3 1 1 1 3 ) ( 2 2 3 1 2 2 3 3 2 )
Slika 4.5 Križanje organizmov
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-36-
S slike 4.5 je razvidno, da sta bila s križanjem pridobljena dva neveljavna potomca, saj bi
vsak potomec moral vsebovati po tri enake številke. Potomca je v tem primeru nesmiselno
popravljati, saj bi v primeru popravljanja dobili popolnoma naključna organizma.
Mutacija takih organizmov tudi ni smiselna. Če npr. želimo en gen v organizmu
zamenjati z naključnim genom, je potrebno spremeniti še tisti gen v organizmu, ki je enak
naključnemu genu. To ne pomeni nič drugega, kot da smo izvedli permutacijo z dvema
genoma. V takih primerih je torej najboljše kot mehanizem za spreminjanje organizmov
izbrati permutacijo. V zgornjem primeru kodiranja na osnovi operacij pridemo z uporabo
permutacije vedno do veljavnih potomcev. Pri nekaterih ostalih kodiranjih pa je potrebno
paziti, da s permutacijo organizma ne kršimo podanih zahtev.
Edina genetska operacija poleg selekcije, ki je bila uporabljena pri izdelavi programa za
terminiranje, je permutacija. Ta temelji na prestavljanju genov. Organizem ki bo sodeloval pri
permutaciji izberemo s pomočjo turnirske selekcije. Pri permutaciji organizma je potrebno
upoštevati pravilo, da mora ostati vrstni red operacij posameznih nalogov nespremenjen.
Postopek permutacije enega gena je prikazan na spodnjem organizmu in poteka takole:
organizem
( (n2 s1 43)(n1 s1 29)(n1 s2 78)(n3 s2 91)(n2 s3 90)(n3 s1 85)(n2 s2 28)(n1 s3 9)(n3 s3 74) )
1. Izberemo eno naključno operacijo, npr. (n2 s1 43).
2. Nato je potrebno določiti levo in desno mejo. Ker izbrana operacija pripada nalogu
n2, je potrebno levo in desno poiskati prvo operacijo, ki tudi pripada nalogu n2. Če
operacije ni, mejo predstavlja začetek oz. konec organizma. V tem primeru
predstavlja desno mejo operacija (n2 s3 90), levo mejo pa začetek organizma.
Prostor med levo in desno mejo predstavlja področje kamor lahko prestavimo
izbrano operacijo. V organizmu je ta prostor označen oglatima oklepajema.
organizem
([(n2 s1 43)(n1 s1 29)(n1 s2 78)(n3 s2 91)](n2 s3 90)(n3 s1 85)(n2 s2 28)(n1 s3 9)(n3 s3 74) )
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-37-
3. S pomočjo generatorja naključnih števil se nato izbere mesto, kamor bo izbrana
operacija prestavljena, npr. pred operacijo (n1 s2 78).
organizem po permutaciji
( (n1 s1 29)(n2 s1 43)(n1 s2 78)(n3 s2 91)(n2 s3 90)(n3 s1 85)(n2 s2 28)(n1 s3 9)(n3 s3 74) )
S tem postopkom naključno spremenimo izbrani organizem in s tem tudi njegovo vrednost.
Ker je velikokrat potrebno prestaviti (permutirati) več kot eno operacijo, lahko zgoraj opisan
postopek v okviru ene permutacije ponovimo tudi večkrat. Tako znotraj enega organizma
izvedemo več naključnih premikov operacij. S tem dosežemo večjo spremembo organizma.
4.4 Evolucijski parametri Evolucijski parametri so tisti parametri, ki vplivajo na potek reševanja zadanega problema.
Imajo zelo velik vpliv na končni rezultat, zato jih je potrebno pametno izbrati, če želimo
dobiti dobre rezultate. Ti parametri so:
• selekcijski pritisk,
• velikost populacije,
• obseg spremembe pri genetskih operacijah,
• delež posameznih genetskih operacij v novi generaciji,
• število generacij (zaustavitveno pravilo) in
• število neodvisnih civilizacij.
Selekcijski pritisk nam pove, kakšne rešitve se bodo uporabljale pri genetskih operacijah. Če
je selekcijski pritisk velik, potem dobijo možnost samo boljše rešitve. Če je majhen za
sodelovanje pri genetskih operacijah dobijo možnost tudi slabše rešitve. Pri velikem
selekcijskem pritisku obstaja večja možnost, da rešitve zaidejo v lokalni optimum, pri
majhnem pritisku pa pregledujemo preveč nepomembnih rešitev in iskanje optimuma se
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-38-
zavleče. Potrebno je najti kompromisno vrednost, ki zagotovi napredovanje iskanja.
Selekcijski pritisk lahko določimo za vsako genetsko operacijo posebej, ni pa nujno.
Ko nad organizmom izvajamo genetsko operacijo, je potrebno določiti, v kolikšnem
obsegu naj operacija spremeni organizem. Priporočljivo je, da ista genetska operacija izvaja
tako majhne kot tudi večje spremembe. Tako npr. nekajkrat izvedemo permutacijo, kjer se
zamenjata samo dva gena, nekajkrat naj permutirajo trije geni, itd. S tem si zagotovimo
raznolikost v populaciji.
Pri generiranju naslednje generacije je potrebno določiti kolikšen del populacije naj
izdela določena genetska operacija. Priporočen delež selekcije v naslednji generaciji je okoli
10 %, ostala mesta pa dobijo organizmi ostalih genetskih operacij. S tem si zagotovimo, da se
jedro dobrih rešitev prenaša iz generacije v generacijo.
Če pomnožimo število generacij z velikostjo populacije, dobimo število organizmov, ki
smo jih med potekom evolucije pregledali. Pri težjih problemih je potrebno veliko več
organizmov kot pri lažjih. Vprašanje pa je, ali naj poteka reševanje z majhno populacijo in
veliko iteracij (generacij), ali pa z veliko populacijo in manjšim številom iteracij. Katero
možnost uporabiti je odvisno od načina reševanja oz. uporabljene metode iskanja rešitev.
Najlažje je to določiti s pomočjo statističnih preizkusov.
Ker poteka reševanje z genetskimi algoritmi na podlagi naključja, ni nujno da pri
vsakem zagonu pridemo do zadovoljivih rezultatov. Največkrat nam iskanje ustavijo lokalni
optimumi, v katerih se iskanje konča. Zato je potrebno izvesti več neodvisnih civilizacij, kajti
vsaka lahko privede do drugačne (boljše) rešitve.
4.5 Rezultati Uspešnost izdelanega algoritma je bila testirana na treh primerih. Prvi primer je izmišljen,
zadnja dva pa sta že dolgo poznana. Gre se namreč za terminirna problema, ki sta ju v
šestdesetih letih zapisala Fisher in Thompson. Znanstveniki so ta dva primera pogosto
uporabljali za merjenje uspešnosti svojih algoritmov. Rezultati nekaterih avtorjev so prikazani
v tabeli 4.2.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-39-
Tabela 4.2 Uspešnost algoritmov [15] Avtorji 10x10 20x5 Optimalna vrednost 930 1165 Nakano in Yamada (1991) 965 1215 Yamada in Nakano (1995) 930 1184 Paredis (1992) 1006 - Gen in drugi (1994) 962 1175 Fang in drugi (1993) 949 1189 Dorndorf in Pesch (1995) 960 1249 Dorndorf in Pesch (1995) 938 1178 Croce in drugi (1995) 946 1178 Cheng in drugi (1995) 948 1196
4.5.1 Primer 1
Tabela 4.3 Problem 7 x 7
zaporedje operacij nalogi
1. 2. 3. 4. 5. 6. 7.
n1 s4 29 s2 78 s3 9 s1 36 s5 49 s6 11 s7 62 n2 s1 43 s3 50 s5 75 s4 69 s2 28 s7 46 s6 46 n3 s2 91 s1 51 s4 39 s3 74 s5 81 s6 10 s7 89 n4 s5 15 s3 45 s1 31 s2 35 s7 9 s6 52 s4 9 n5 s3 14 s1 6 s2 22 s6 61 s4 26 s5 69 s7 21 n6 s4 13 s2 20 s3 35 s5 48 s6 42 s1 47 s7 65 n7 s2 46 s1 37 s4 61 s3 13 s7 32 s6 5 s5 39
Za primer, ki je podan v tabeli 4.3 je potrebno določiti najmanjši skupni čas izvajanja vseh
operacij. Primer je sestavljen iz sedmih nalogov, ki se izvajajo na sedmih strojih. Vsak nalog
lahko obišče določen stroj samo enkrat. Vrstni red operacij posameznih nalogov se ne sme
spreminjati, med operacijami različnih nalogov pa ni prednostnih omejitev. Iskanje se je
izvajalo z naslednjimi evolucijskimi parametri:
• velikost populacije: 200 organizmov,
• zaustavitveno pravilo: 200 generacij,
• število neodvisnih civilizacij: 100.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-40-
Izračun1 je potekal 1 uro in 45 minut. Najmanjši skupni čas izvajanja operacij, ki je bil v
poskusu dosežen, je znašal 562 časovnih enot. To vrednost je doseglo osem civilizacij.
Obravnavan problem je bil rešen še s pomočjo profesionalnega programa za
terminiranje LEKIN verzija 2.4. Rešitev je znašala 555 časovnih enot. Program je pri iskanju
uporabljal metodo prestavljanja ozkega grla, iskanje je trajalo 3 sekunde. Za rezultat, ki je bil
pridobljen s tem programom lahko trdimo, da je optimalen.
Z rezultatom, ki smo ga dobili z našim algoritmom, smo lahko zadovoljni, saj se od
optimalne vrednosti razlikuje za samo 7 časovnih enot, kar pa je manj kot 2 %.
4.5.2 Primer 2
Tabela 4.4 Problem 10 x 10
zaporedje operacij nalogi
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
n1 s1 29 s2 78 s3 9 s4 36 s5 49 s6 11 s7 62 s8 56 s9 44 s10 21 n2 s1 43 s3 90 s5 75 s10 11 s4 69 s2 28 s7 46 s6 46 s8 72 s9 30 n3 s2 91 s1 85 s4 39 s3 74 s9 90 s6 10 s8 12 s7 89 s10 45 s5 33 n4 s2 81 s3 95 s1 71 s5 99 s7 9 s9 52 s8 85 s4 98 s10 22 s6 43 n5 s3 14 s1 6 s2 22 s6 61 s4 26 s5 69 s9 21 s8 49 s10 72 s7 53 n6 s3 84 s2 2 s6 52 s4 95 s9 48 s10 72 s1 47 s7 65 s5 6 s8 25 n7 s2 46 s1 37 s4 61 s3 13 s7 32 s6 21 s10 32 s9 89 s8 30 s5 55 n8 s3 31 s1 86 s2 46 s6 74 s5 32 s7 88 s9 19 s10 48 s8 36 s4 79 n9 s1 76 s2 69 s4 76 s6 51 s3 85 s10 11 s7 40 s8 89 s5 26 s9 74 n10 s2 85 s1 13 s3 61 s7 7 s9 64 s10 76 s6 47 s4 52 s5 90 s8 45
Primer, ki je prikazan v tabeli 4.4, je znamenit problem terminiranja, ki sta ga leta 1964
predstavila Fisher in Thompson. Sestavljen je iz desetih nalogov, ki se izvajajo na desetih
strojih. Optimalno rešitev, ki znaša 930 časovnih enot, so znanstveniki odkrili komaj čez
petindvajset let po predstavitvi problema.
1 Programsko okolje AutoCAD R14 na dvojedrnem intelovem procesorju 1,66 GHz.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-41-
Iskanje je potekalo z naslednjimi evolucijskimi parametri:
• velikost populacije: 200 organizmov,
• zaustavitveno pravilo: 500 generacij,
• število neodvisnih civilizacij: 100.
Izračun je potekal 11 ur in 30 minut. Najmanjši skupni čas izvajanja operacij, ki je bil v
poskusu dosežen, je znašal 941 časovnih enot. Ta vrednost je dosegla ena civilizacija.
Rezultat, ki smoga dobili z našim algoritmom, od optimalne vrednosti odstopa za 11 časovnih
enot oz. 1,2 %. Če ta rezultat primerjamo z rezultati v tabeli 4.2, vidimo, da je naš algoritem
konkurenčen algoritmom ostalih avtorjev.
Iskanje je bilo izvedeno tudi s programom LEKIN. Program je z metodo prestavljanja
ozkega grla optimalno rešitev našel v sedmih sekundah.
4.5.3 Primer 3
Tabela 4.5 Problem 20 x 5
zaporedje operacij nalogi 1. 2. 3. 4. 5. n1 s1 29 s2 9 s3 49 s4 62 s5 44 n2 s1 43 s2 75 s4 69 s3 46 s5 72 n3 s2 91 s1 39 s3 90 s5 12 s4 45 n4 s2 81 s1 71 s5 9 s3 85 s4 22 n5 s3 14 s2 22 s1 26 s4 21 s5 72 n6 s3 84 s2 52 s5 48 s1 47 s4 6 n7 s2 46 s1 61 s3 32 s4 32 s5 30 n8 s3 31 s2 46 s1 32 s4 19 s5 36 n9 s1 76 s4 76 s3 85 s2 40 s5 26 n10 s2 85 s3 61 s1 64 s4 47 s5 90 n11 s2 78 s4 36 s1 11 s5 56 s3 21 n12 s3 90 s1 11 s2 28 s4 46 s5 30 n13 s1 85 s3 74 s2 10 s4 89 s5 33 n14 s3 95 s1 99 s2 52 s4 98 s5 43 n15 s1 6 s2 61 s5 69 s3 49 s4 53 n16 s2 2 s1 95 s4 72 s5 65 s3 25 n17 s1 37 s3 13 s2 21 s4 89 s5 55 n18 s1 86 s2 74 s5 88 s3 48 s4 79 n19 s2 69 s3 51 s1 11 s4 89 s5 74 n20 s1 13 s2 7 s3 76 s4 52 s5 45
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-42-
Primer v tabeli 4.5 predstavlja problem razvrščanja dvajsetih nalogov na pet strojev. Čeprav je
število vseh operacij (100) enako kot v primeru 2, je ta problem kombinatorično zahtevnejši.
Iskanje je potekalo z naslednjimi evolucijskimi parametri:
• velikost populacije: 200 organizmov,
• zaustavitveno pravilo: 500 generacij,
• število neodvisnih civilizacij: 100.
Izračun je potekal 13 ur in 47 minut. Najmanjši skupni čas izvajanja operacij, ki je bil v
poskusu dosežen, je znašal 1211 časovnih enot. Ta vrednost je dosegla ena civilizacija. Na
sliki 4.6 je prikazana prilagojenost te najboljše civilizacije v odvisnosti od posameznih
generacij.
10001100120013001400150016001700180019002000
1 29 57 85 113 141 169 197 225 253 281 309 337 365 393 421 449 477
Generacije
Povp
rečn
i sku
pni č
as iz
vaja
nja
oper
acij
celo
tne
popu
laci
je
Slika 4.6 Prilagojenost najboljše civilizacije
Rezultat od optimalne vrednosti odstopa za 46 časovnih enot oz. 4%. Glede na vrednosti iz
tabele 4.2 se je algoritem izkazal slabše kot pri primeru 10 x 10. Pri večjem številu generacij
in večji populaciji bi verjetno dobili boljše rezultate. Program LEKIN je za pridobitev
optimalne rešitve porabil samo 12 sekund.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-43-
5 Sklep Jasno je, da ima terminiranje proizvodnih procesov v sodobni industriji zelo velik pomen.
Razgiban in negotov trg, zahtevne želje kupce in čedalje večja konkurenca silijo proizvajalce
da izvajajo hitre spremembe v proizvodnem prostoru. Prilagodljivost je postala ključnega
pomena pri obstoju podjetja. Zagotovimo jo lahko samo z dobrim in fleksibilnim delovnim
načrtom. Iz vsebine te diplomske naloge je razvidno, da predstavlja terminiranje težak
kombinatorični problem, ki ga ni lahko rešiti optimalno. Predstavljene so tudi metode, ki so se
pri reševanju tega problema dobro izkazale. Ena od teh metod so tudi genetski algoritmi.
Zavedati pa se moramo, da ni vsaka evolucija tudi dobra evolucija.
Uspešnost reševanja problema je odvisna od zasnove algoritma, kar pa je povezano z
znanjem in izkušnjami avtorja algoritma. V praksi se je izkazalo, da z uporabo genetskih
algoritmov pridemo do zadovoljivih rešitev, ampak ne v takšnem času kot bi si želeli. Tudi iz
rešenih primerov, ki so predstavljeni v tej nalogi, je razvidno, da iskanje ki temelji zgolj na
genetskih algoritmih ni kos sodobnemu terminirnemu programu. Pri vseh treh obravnavanih
primerih sicer pridemo do zadovoljivih rešitev, vendar pa iskanje zahteva preveč časa.
Mehanizem iskanja pogosto zaide v lokalni optimum in ne vodi do optimalne rešitve.
Algoritem, ki je bil izdelan za namen te diplomske naloge, je v razvojni fazi. Potrebno je
še veliko modifikacij na področju kodiranja in iskanja rešitev. Kombiniranje z drugimi
hevrističnimi metodami kot so lokalno iskanje, tabu iskanje in simulirano ohlajanje pa bi prav
gotovo vodilo do boljših rezultatov.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-44-
6 Dodatek Izdelava programa Za izdelavo programa je možno uporabiti katerikoli programski jezik. Zaradi nekaterih
prednosti, ki jih ima Autolisp, je celoten program izdelan v tem programskem jeziku. Lisp je
eden najstarejših programskih jezikov in je namenjen obdelavi seznamov. Osnovna in edina
struktura v lispu je seznam, ki je sestavljen iz členov. Členi predstavljajo najmanjše elemente
v lispu. Lahko so števila, funkcije, nizi, seznami ali kateri koli drugi dovoljeni podatkovni
tipi. Med programi in podatki v lispu ni sintaktične razlike, saj lisp kateri koli del lastne kode
razume kot podatke. Ker operatorjev v lispu ni, so vse osnovne računske operacije le funkcije
z ustreznimi argumenti (najprej je potrebno podati funkcijo, za njo pa argumente). V lispu
tudi ni potrebno navesti tipov spremenljivk in funkcij. Spremenljivkam z istim imenom lahko
celo med izvajanjem programa prirejamo podatke različnih tipov. Zaradi teh dejstev je
uporaba lispa pri genetskih algoritmih zelo priporočljiva, saj imamo pri programiranju veliko
opravka s seznami.
Zaradi enostavnosti programskega jezika lisp, je pisanje programa potekalo zgolj s
pomočjo priročnika [5], kjer so opisane posamezne funkcije programa in primeri uporabe.
Bralec lahko hitro dojame delovanje lispa in za programiranje ne potrebuje nobenega
predznanja.
Izdelava programa je potekala po modularnem sistemu. To pomeni, da je celoten
program za terminiranje sestavljen iz posameznih modulov (računalniških podprogramov), ki
so popolnoma neodvisni drug od drugega. Vsak modul je narejen za izvajanje točno določene
naloge, kar nam daje veliko prednost. Celoten program namreč nastaja po segmentih, katere je
mogoče posamično testirati. Module se v celoto povezujejo s povezovalnim programom. To
nam omogoča, da imamo med potekom pisanja programa pregled nad obdelavo podatkov.
Morebitne napake ali pomanjkljivosti modulov se tako hitro odkrijejo in odpravijo.
Eden izmed pomembnejših modulov programa je generator naključnih števil. Ker
evolucija temelji na naključnih in nenačrtovanih dogodkih, je potrebno ta proces prenesti tudi
v računalniški program. Uspešno generiranje naključnih števil posredno vpliva na uspešnost
evolucije. Naključna števila, ki jih dobimo z generatorji pa niso čisto naključna. Dobimo jih z
izvrševanjem določenih navodil, ki so točno določena. Generatorjev je več vrst. V našem
primeru je uporabljen generator, ki naključna števila pridobiva na podlagi sistemskega časa.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-45-
Kvaliteto generatorja lahko preizkusimo tudi z enostavnim testom. Eden od takih testov je
metanje kovanca. Vzemimo primer, da imamo kovanec, ki ima na eni strani število 1 na drugi
pa število 0. Če kovanec vržemo 100.000 – krat, bi v idealnem primeru morali dobiti 50.000 –
krat vrednost 1 in ravno toliko ničel. Naš generator je pri 10.000.000 poskusih pokazal
4.999.233 – krat vrednost 1 in 5000767 – krat vrednost 0. To pa pomeni za 0.0153 %
odstopanje od idealnih rezultatov.
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-46-
7 Literatura in pripomočki [1] WinEdt verzija 5.5
[2] Programsko okolje AutoCAD 2000
[3] Programsko okolje AutoCAD R14
[4] LEKIN verzija 2.4
[5] M. Brezočnik: Priročnik za uporabo orodja autolisp v okolju AutoCAD, Fakulteta za
strojništvo, Univerza v Mariboru, 2005
[6] Pinedo, M. L.: Planning and scheduling in manufacturing and services, Springer
Science+Business Media, New York, 2005
[7] Polajnar, B. Buchmeister, M. Leber, K. Pandža, N. Vujica-Herzog, I. Palčič, T. Fulder:
Menedžment proizvodnih sistemov – sodobni pristopi, Fakulteta za strojništvo, Univerza
v Mariboru, 2004
[8] M. Brezočnik: Uporaba genetskega programiranja v inteligentnih proizvodnih sistemih,
Fakulteta za strojništvo, Univerza v Mariboru, 2000
[9] J. Blazewicz, K. H. Ecker, E. Pesch, G. Schmidt, J. Weglarz: Handbook on sheduling,
Springer-Verlag Berlin Heidelberg, 2007
[10] P. Brucker: Scheduling algorithms: Fifth edition, Springer-Verlag Berlin Heidelberg,
2007
[11] P. Brucker, S. Knust: Complex scheduling, Springer-Verlag Berlin Heidelberg, 2006
[12] M. Mernik, M. Črepinšek, V. Žumer: Evolucijski algoritmi, Fakulteta za elektrotehniko,
računalništvo in informatiko, Inštitut za računalništvo, Univerza v Mariboru, 2003
[13] ChaoYong Zhang, PeiGen Li,YunQing Rao, ZaiLin Guan: A very fast TS/SA algorithm
for the job shop scheduling problem, School of Mechanical Science & Engineering,
Huazhong University of Science & Technology, Wuhan, 2006. Dostopno na
www.sciencedirect.si, [03.06.2006]
[14] Buchmeister, I. Palčič, J. Pavlinjek, INOKS d.o.o., Murska Sobota, Univerza v Mariboru,
Fakulteta za strojništvo: Nekonvencionalne metode terminiranja proizvodnih procesov:
Orodjarstvo 2008. Organizacija kot gonilo poslovnih izboljšav : zbornik posvetovanja,
Portorož, 7. do 9. oktober 2008.
[15] Mitsuo Gen, Runwei Cheng: Genetic Algorithms and engineering design, John Wiley &
Sons, Inc, New York ,1997
Univerza v Mariboru – Fakulteta za strojništvo Diplomsko delo
-47-
Življenjepis Rodil sem se 29. maja 1984 v Novem mestu. Osnovno šolo sem obiskoval v domačem kraju
Šentjanž vse do leta 1999. Po končani osnovni šoli sem se odločil, da bom šolanje nadaljeval
v Novem mestu. Leta 1999 sem se vpisal na Srednjo tehniško šolo v Novem mestu. Šolanje je
trajalo štiri leta, tako da sem leta 2003 pridobil naziv strojnega tehnika. Za nadaljnje šolanje
sem se odločil za Fakulteto za strojništvo v Mariboru. Po uspešno opravljeni poklicni maturi
in petem predmetu sem se tako vpisal na univerzitetni program strojništva. Moje začasno
prebivališče za čas študija je bil študentski dom Tomi na Iztokovi 22 v Mariboru. K sreči sem
bil prejemnik republiške štipendije, s katero sem si lahko pokril večino stroškov tekom
študija. Po treh letih šolanja je potrebno izbrati študijsko smer. S sošolcem sva bila edina, ki
sva se tisto leto odločila za proizvodno strojništvo. Študij je od takrat naprej potekal veliko
bolj individualno, kar mi je omogočilo, da sem se ukvarjal s tistim, kar me je zanimalo.
Počitniško delo in študijsko prakso sem opravljal v podjetju INKOS d.o.o. v Krmelju, poleg
tega pa sem preko študentskega servisa delal še v podjetju FEM Consulting d.o.o. iz
Maribora.
Zoran Lestan