1 UVOD Postopkom za iskanje minimuma realne funkcije n spre- menljivk pravimo tudi optimizacijski postopki, funkciji, katere minimum iščemo, pa kriterijska funkcija (KF). Ključni merili za kakovost optimizacijskega postopka sta njegova hitrost in končna vrednost KF, ki jo dosežemo, Prejet 19. november, 2012 Odobren 9. januar, 2013 ko se postopek ustavi. Hitrost postopka po navadi izražamo s številom vrednotenj kriterijske funkcije (N ). Hitrejši postopki pridejo do enake končne vrednosti KF z manjšim N . Vsak optimizacijski postopek ima tudi parametre, od katerih sta odvisna hitrost postopka in končna vrednost KF. Vektor teh parametrov imenujemo tudi strategija optimizacijskega postopka. Optimalna strategija je na splošno odvisna od pro- blema, ki ga rešujemo z optimizacijskim postopkom. V literaturi je ob vsakem objavljenem postopku skoraj vedno objavljena tudi priporočena strategija, ki je po- gosto dobljena s pomočjo omejenega števila poskusov, ali pa je plod nekega (običajno preveč) poenostavljenega sklepanja. Kljub temu se objavljene strategije v praksi uporabljajo brez kritične presoje in po ključu ”avtor je že vedel zakaj”. Posledica takega nekritičnega prevzemanja priporočenih vrednosti je skoraj vedno neučinkovitost postopka pri reševanju optimizacijskih problemov. Zaradi odvisnosti optimalne strategije od narave opti- mizacijskega problema (ali družine problemov) jo mo- ramo po navadi določiti sami. Naloga je sama po sebi spet optimizacijski problem, ki ga imenujemo tudi meta- optimizacijski problem, postopek njegovega reševanja pa metaoptimizacija. Optimizacijski postopek, za katerega iščemo strategijo, imenujemo tudi osnovni (optimizacij- ski) postopek. Tudi pri metaoptimizaciji definiramo KF, ki odraža kakovost strategije. Spremenljivke v metaop- timizaciji so komponente vektorja, ki pomeni strategijo. Določanje vrednosti KF za izbrano strategijo vključuje enega ali več tekov osnovnega postopka, s katerimi 232 BŰRMEN, TUMA, FAJFAR skušamo zajeti njegovo obnašanje na dani družini pro- blemov. Metaoptimizacija je zaradi tega računsko zelo zahteven postopek, saj lahko že en sam izračun KF traja tudi po več ur. Zadeve dodatno zaplete še dejstvo, da je KF pri metaoptimizaciji pogosto nezvezna, ima več minimumov in je več ali manj popačena z numeričnim šumom. Ravno yato nam pogosto ne preostane nič drugega, kot da za metaoptimizacijo uporabimo globalne optimiza- cijske postopke. Njihova glavna slabost je veliko število izračunov KF (10000 in več), ki so potrebni, da po- stopek najde rešitev metaoptimizacijskega problema. Na srečo lahko omenjeno slabost močno omilimo z uporabo vzporednega računanja na več procesorskih jedrih. V tem smislu nam gre v prid tudi dejstvo, da za glo- balne optimizacijske postopke ponavadi obstajajo tudi učinkovite vzporedne izvedbe, ki izkoriščajo računsko moč več procesorjev. V nadaljevanju se bomo omejili na metaoptimiza- cijo lokalnih optimizacijskih postopkov. To so postopki, ki nehajo iskati, ko najdejo lokalni minimum KF. Po navadi zahtevajo precej manjše število izračunov KF kot globalni optimizacijski postopki. Čeprav lokalni minimum ponavadi ne pomeni najboljše rešitve nekega optimzacijskega problema, pa se lokalnih optimizacij- skih postopkov pogosto poslužujemo v inženirski praksi. Če je optimizacijski problem zelo zahteven (en izračun kriterijske funkcije traja dolgo), računska moč pa ome- jena, je lokalni optimizacijski postopek edina uporabna možnost, ki jo imamo. Tudi ko smo zadovoljni že samo z zmanjšanjem vrednosti KF, je lokalni optimizacijski postopek ustrezen. 2 KRITERIJSKA FUNKCIJA V METAOPTIMIZACIJI Pred vsako metaoptimizacijo se moramo vprašati, za kakšne optimizacijske probleme iščemo optimalno stra- tegijo. Realni optimizacijski problemi iz inženirske pra- kse so pogosto prezahtevni, da bi jih lahko uporabili pri določanju učinkovitosti osnovnega optimizacijskega po- stopka. Zato se raje poslužujemo naborov matematičnih testnih funkcij. Danes se za preizkušanje lokalnih opti- mizacijskih postopkov uporabljata dva nabora: nekoliko starejši Moré-Garbow-Hillstromov nabor [1] in nabor CUTEr [2]. Prvi obsega 35 neomejenih optimizacijskih problemov, drugi pa več 1000 problemov, od katerih so nekateri omejeni, drugi pa neomejeni. Po navadi iz nabora problemov (kriterijskih funkcij) izberemo podmnožico {f1, f2, ..., fm}. Ker lokalni optimizacijski postopki potrebujejo tudi začetno točko, bomo le-te označevali z x01, x 0 2, ..., x 0 m . Pri določanju izraza za KF v metaoptimizaciji po navadi izhajamo iz rezultatov, ki jih dobimo, ko izbrane probleme rešimo z uporabo osnovnega optimizacijskega postopka in trenutno najboljših znane (referenčne) stra- tegije. Pri tem nam dobljeno število izračunov kriterij- ske funkcije (N ′1, N ′ 2, ..., N ′ m ) podaja referenčne vredno- sti za hitrost osnovnega postopka. Kakovost rezultata osnovnega postopka lahko ocenimo z ℓ2 normo gradienta KF v točki, ki jo postopek vrne kot rešitev optimi- zacijskega problema. Nižja vrednost norme gradienta ustreza boljšemu približku lokalnega minimuma opti- mizacijskega problema. Označimo z x′1, x ′ 2, ..., x ′ m pri- bližke rešitev izbranih optimizacijskih problemov, ki jih dobimo z uporabo referenčne strategije, z g′1, g ′ 2, ..., g ′ m pa pripadajoče vrednosti gradienta. Recimo, da za neko strategijo dobimo kot pri- bližke rešitev izbranih optimizacijskih problemov točke x1, x2, ..., xm, ki jim pripadajo vrednosti gradienta g1, g2, ..., gm. Število vrednotenj KF, ki pripadajo po- sameznim optimizacijskim tekom osnovnega postopka, označimo z N1, N2, ..., Nm. Ker se lahko primeri, da optimizacijski postopek pri tej strategiji deluje slabše, kot pri referenčnih strategiji, lahko postanejo pripadajoči optimizacijski teki zelo dolgi. Zato število izračunov fi omejimo na Nmax i = max (5N ′ i , 10000) . (1) Končni cilj metaoptimizacije je najti strategijo, pri kateri se optimizacijski postopek obnaša vsaj tako dobro kot pri referenčni strategiji. Omejitve te vrste lahko izrazimo s kriterijskimi fukcijami, ki jih sestavimo iz kazenskih prispevkov (Ci). [3] Pri tem obnašanje osnov- nega postopka, ki je slabše od tistega pri referenčni strategiji, kaznujemo z velikim pozitivnim prispevkom Ci. Obnašanje, ki je boljše od referenčnega nagradimo z majhnim negativnim prispevkom Ci. Če se osnovni postopek obnaša enako kot pri referenčnih strategiji, velja Ci = 0. KF metaoptimizacije je enaka vsoti prispevkov, ki pripadajo m testnim problemom. C = m ∑ i=1 Ci. (2) Vrednost C = 0 tako ustreza enaki učinkovitosti postopka, kot jo dobimo pri referenčni strategiji (gledano prek nabora m izbranih optimizacijskih problemov). Prispevek i-tega optimizacijskega problema k vrednosti KF lahko zapišemo kot Ci = { (Ni/N ′ i − 1) · 10; Ni > N ′ i (Ni/N ′ i − 1)/10; Ni ≤ N ′ i (3) + { log10(||gi||/||g ′ i ||) · 10; ||gi|| > ||g ′ i || log10(||gi||/||g ′ i ||)/10; ||gi|| ≤ ||g ′ i || (4) Namesto vrednosti 10 lahko uporabimo poljubno kon- stanto P > 1. Pri tem je absolutna vrednost razmerja med kazenskim prispevkom in nagrado enaka P 2. En izračun kriterijske funkcije (2) v metaoptimizaciji ob- sega m tekov osnovnega optimizacijskega postopka. 3 STROJNA OPREMA Metaoptimizacija je računsko zelo zahteven posto- pek. Da bi jo lahko sploh izvedli, potrebujemo ve- META-OPTIMIZACIJA Z VISOKOZMOGLJIVIM RAČUNSKIM SESTAVOM 233 liko računsko moč, ki jo danes dajejo viskozmogljivi računski sestavi (ang. High Performance Computing, HPC). Ti so po navadi sestavljeni iz velikega števila procesorskih enot, v vlogi katerih lahko nastopajo tudi namizni računalniki. Cena ene procesorske enote je danes relativno nizka, saj za 600 evrov že dobimo zmogljiv namizni računalnik s štirijedrnim procesorjem, kar znaša 150 evrov na procesorsko jedro. Ker so namizni računalniki večinoma že opremljeni z mrežnim vmesnikom Ethernet hitrosti 1Gbit/s, je edina dodatna investicija, ki jo potrebujemo za vzpostavitev visokoz- mogljivega računskega sestava, mrežno stikalo, kate- rega cena je ponavadi nižja od cene enega namiznega računalnika. Cena sistema s 100 procesorskimi jedri se tako giblje okrog 15000 evrov. PC 1 Stikalo Ethernet PC 2 PC M Nadzorni PC Internet (1Gbit) Slika 1: Zgradba visokozmogljivega računskega sestava Ozko grlo tako zgrajenega računskega sestava je mrežna povezava. Kljub veliki hitrosti prenosa, so za- kasnitve pri komunikaciji med dvema računalnikoma v sestavu reda velikosti 20µs. Zakasnitev je v veliki meri posledica narave mrežnega vmesnika, delno pa jo lahko pripišemo tudi neučinkovitim gonilnikom (pribl. 10µs, [4]). To je precej več kot v primerljivih sistemih, ki uporabljajo povezave InfiniBand (kot npr. [5]). Te zlahka dosegajo zakasnitve reda velikosti 1µs. Tudi hitrost prenosa podatkov je pri InfiniBandu boljša, saj za najosnovnejšo povezavo SDR znaša 2Gbit/s. Seveda uporaba InfiniBanda precej zviša ceno sestava. Ne glede na nekoliko nižjo hitrost prenosa podatkov in večjo zakasnitev pa je računski sestav s povezavami Ethernet dovolj zmogljiv za izvajanje vzporednih optimi- zacijskih postopkov. Označimo hitrost prenosa podatkov z R, zakasnitev pri prenosu pa s τ . Da počasnost mrežne povezave ne postane omejilni faktor sistema, morata biti izponjena dva pogoja. Čas od sprejema naloge do oddaje rezultatov (čas T , ki ga procesorsko jedro potrebuje za reševanje dodeljene naloge) mora biti precej daljši od zakasnitve pri prenosu. Celotna količina podatkov (D), ki jih procesorsko jedro prejme pred računanjem oziroma odda po končanem računanju, mora biti dovolj majhna, da se podatki prenesejo v precej krajšem času, kot pa traja samo računanje. Oba pogoja lahko zapišemo matematično kot T ≫ τ, (5) D/R ≪ T. (6) Metaoptimizacija, pa tudi večina optimizacij inženirskih problemov, ki vključujejo takšne ali drugačne simulacije, zlahka izpolni oba kriterija. Pogoj (5) je izpolnjen, ker je čas T reda velikosti sekunde ali več, medtem ko znaša τ le nekaj 10µs. Vsako nalogo lahko podamo z naborom n′ realnih števil (n′ je dimenzija metaoptimizacijskega problema oz. število parametrov osnovnega postopka), njen rezultat pa z enim realnim številom. Če uporabljamo 64-bitni zapis števil s plavajočo vejico, je količina prenesenih podatkov (D) enaka 64 · (n′ + 1) bitov in velja D/R = (n′ + 1) · 64ns. Če traja reševanje ene naloge zgolj T = 1ms, je pogoj (6) izpolnjen za n′ < 15624. 4 PROGRAMSKA OPREMA ZA OPTIMIZACIJO Reševanje problemov v sodobnih visokozmogljivih računskih sestavih poteka tako, da vsako procesorsko jedro izvaja po en program, ki rešuje del problema. Programi komunicirajo in se tako medsebojno usklaju- jejo. Ponavadi poteka komunikacija v obliki sporočil, na katere se programi odzovejo z računanjem, ki mu sledi pošiljanje povratnih sporočil z rezultati. Progra- miranje se močno poenostavi, če uporabimo katero od knjižnic, ki pošiljanje in sprejemanje sporočil izvedeta s preprostim programskim vmesnikom (ang. Application Programming Interface, API). Ta skrije podrobnosti pro- tokolov, prek katerih komunikacija dejansko poteka. Tre- nutno sta na voljo dve rešitvi: PVM [6] in MPI [7]. PVM je nekoliko starejša knjižnica, MPI pa je pravzaprav le specifikacija, ki predpisuje API za komunikacijo. Samih izvedb knjižnice MPI je veliko. Za razvoj optimizacijskih postopkov je najprimernejše okolje, ki omogoča 1) preprosto programiranje zaplete- nih matematičnih postopkov in 2) hitro iskanje napak v programih. Prvemu pogoju ustreza precejšnje število programskih jezikov v kombinaciji z ustreznimi mate- matičnimi knjižnicami. Drugi pogoj ponavadi izpolnju- jejo različni skriptni jeziki. Zaradi njegove enostavnosti, splošnosti in velikega števila knjižnic smo se odločili za Python [8] v kombinaciji z matematičnima knjižnicama NumPy/SciPy [9]. Metaoptimizacijo lahko pospešimo na dva načina. Pri prvem vsako procesorsko jedro izvaja enega od m tekov osnovne optimizacijske metode. Ko je vseh m tekov končanih, iz dobljenih rezultatov izračunamo vrednost kriterijske funkcije (2). Metaoptimizacijski postopek nato določi novo strategijo, ki jo spet ovrednotimo z m teki osnovnega optimizacijskega postopka. Teoretično lahko tako dosežemo do m-kratno pospešitev računanja. V praksi je ta precej manjša, saj se ne končajo vsi teki hkrati. Procesorska jedra, ki končajo prej, morajo čakati, da računanje končajo vsa jedra, preden jim je dodeljena nova naloga. Posledica je manjša pospešitev računanja. Pojavu pravimo sinhronizacijska kazen (ang. synchronization penalty). 234 BŰRMEN, TUMA, FAJFAR Da se izognemo temu, v metaoptimizaciji uporabimo asinhroni vzporedni optimizacijski postopek, ki poskrbi, da je vsako procesorsko jedro ves čas zasedeno z računanjem. Tak postopek ne razdeli izračuna vrednosti KF med več procesorjev. To ima dodatno prednost, da je čas T zelo dolg in sta pogoja (5) in (6) izpolnjena tudi pri počasnih mrežnih povezavah. Primer takega postopka je opisan v [10]. 5 PRIMER Simpleksni postopek Nelderja in Meada [11] pri iskanju minimuma funkcije n spremenljivk premika množico n + 1 točk (simpleks). Predpostavimo, da so točke urejene po pripadajoči vrednosti funkcije tako, da je ta najvišja pri xn+1 oziroma najnižja pri x1. Večinoma se simpleks premika tako, da postopek zamenja najslabšo točko xn+1 z eno od točk, ki ležijo na poltraku z izhodiščem v xn+1, ki je usmerjen proti centroidu x težišču (centroidu) n najboljših točk x = (x1 + ... + xn)/n. Lego točk določata parameter γ in enačba x = x+ γ(x− xn+1). (7) x1 xn+1 xn xxic xoc xr xe Slika 2: Koraki zrcaljenja, odmika, zunanjega primika in notranjega primika v postopku Nelderja in Meada Za vrednosti parametra γ, ki jih označimo z γr, γe, γoc in γic, dobimo štiri točke (xr, xe, xoc in xic), ki nastopajo kot zamenjava za xn+1 (slika 2). Pripadajoče korake imenujemo tudi zrcaljenje, razteg, zunanji primik in notranji primik. Če nobena od teh točk ni boljša od xn+1, skrčimo simpleks s faktorjem γs proti najboljši točki. xi → x1 + γs(xi − x1), i = 2,...,n+ 1 (8) Parametri γ morajo izpolnjevati pogoja 0 < γr < γe in 0 < γoc,−γic, γs < 1. Priporočene vrednosti parame- trov v [11] pomenijo strategijo [γr, γe, γoc, γic, γs] = [1, 2, 1/2,−1/2, 1/2]. (9) Postopek lahko povzamemo z naslednjimi koraki: 1) Uredi točke, da velja f(x1) ≤ f(x2) ≤ ... ≤ f(xn+1) . 2) Izračunaj fr = f(~xr). Če je fr < f1, izračunaj fe = f(xe). Če je fe < fr, zamenjaj xn+1 z xe, če ne pa z xr. 3) Če je f1 ≤ fr < fn, zamenjaj xn+1 z xr. 4) Če je fn ≤ fr < fn+1, izračunaj foc = f(xoc). Če je foc < fn+1, zamenjaj xn+1 z xoc, 5) Če je fn+1 ≤ fr, izračunaj fic = f(xic). Če je fic < fn+1, zamenjaj xn+1 z xic. 6) Če xn+1 ni bila zamenjana v korakih 2-5, skrči simpleks. 7) Če ustavitveni pogoji niso izpolnjeni, pojdi na 1). Opis postopka v [11] ne opredeljuje podrobneje ure- janja točk za primer, ko ima več točk enako vrednost f . Tedaj točke uredimo tako, da se od točk z enako vrednostjo f kot zadnja uvrsti tista, ki je doživela najmanj zamenjav. V literaturi je znanih kar nekaj primerov (npr. [12]), za katere postopek ne konvergira proti minimumu funkcije. Kljub temu pa je precej priljubljen, saj je zelo preprost in nazoren. V postopku metaoptimizacije smo iskali optimalno strategijo, ki jo podaja n′ = 5 parametrov postopka. Kot nabor testnih funkcij smo uporabili funkcije iz [13], katerih večina je podanih v [1]. Po priporočilih [1] smo vsakega od 39 problemov preizkusili s tremi začetnimi točkami: x0, 10x0 in 100x0. Pri tem x0 označuje začetno točko problema, ki je podana v [1] oziroma [13]. Izjema je bila funkcija Jennricha in Sampsona, ki pri 100x0 ni definirana. Tako smo dobili m = 3 ·39−1 = 116 testnih problemov. Kot referenčne vrednosti smo uporabili število izračunov KF in končne vrednosti gradienta KF, ki jih dobimo s konvergen- tno različico postopka [13] in neskaliranimi začetnimi točkami (x0). Začetni simpleks in ustavitveni pogoji so bili enaki kot v [13]. Uporabili smo naslednje omejitve parametrov (strate- gije) 0,001 ≤ γr ≤ 2, (10) 0 ≤ γe − γr ≤ 4, (11) 0,001 ≤ γoc/γr ≤ 0,999, (12) 0,001 ≤ −γic ≤ 0,999, (13) 0,001 ≤ γs ≤ 0,999. (14) Metaoptimizacijo smo izvajali na sestavu, ki ga je tvorilo M = 25 računalnikov s procesorjem Intel Core i5 750 hitrosti 2,66GHz in en nadzorni računalnik, ki je skrbel za povezavo z internetom (slika 1). Teoretična računska moč takega sestava je 1Tflops (ob predpo- stavki, da je vsako procesorsko jedro sposobno izvesti do 4 operacije s plavajočo vejico na urni cikel). Seveda smo pri tem omejeni na probleme, ki izpolnjujejo pogoja (5)-(6). Kot metaoptimizacijski postopek smo uporabili [10], ki je kombinacija simuliranega ohlajanja in diferencialne optimizacije. Zaključili smo ga po 200000 izračunih kriterijske funckije. Rezultat smo dobili po dveh dneh META-OPTIMIZACIJA Z VISOKOZMOGLJIVIM RAČUNSKIM SESTAVOM 235 računanja. Optimalno strategijo podajajo γr = 0,983, (15) γe = 1,27, (16) γoc = 0,734, (17) γic = −0,609, (18) γs = 0,385. (19) Parametra γr in γic sta zelo blizu vrednostma, ki sta ju predlagala Nelder in Mead. Drugi parametri se precej razlikujejo od privzetih vrednosti. Zanimivo je, da je optimalna vrednost γe = 1,27 blizu vrednosti 1,2, ki je predlagana v [14]. Parametra γoc in γs se razlikujeta od privzete vrednosti 0,5. Da bi preverili učinkovitost dobljene strategije, smo pognali osnovni optimizacijski postopek na 39 te- stnih problemih z neskaliranimi začetnimi točkami (x0). Število izračunov KF smo omejili na 100000. Rezultati so podani v tabeli 1. Prvotni postopek je v dveh primerih porabil vse razpoložljive izračune KF, ne da bi izpolnil ustavitvene pogoje. Z optimalnimi vrednostmi parame- trov se to ne zgodi za nobeno od uporabljenih kriterijskih funkcij. Z zvezdicami so označeni primeri, ko ena stra- tegija prekaša drugo glede števila izračunov KF oziroma končne vrednosti norme njenega gradienta. V številu izračunov KF privzeta strategija prekaša optimalno v 23 primerih, medtem ko slednja prekaša privzeto v 16 primerih. Kar se tiče končne vrednosti gradienta je priveza strategija boljša v 14 primerih, optimalna pa v 25 primerih. Če preštejemo še primere, ko je ena strategija boljša od druge, tako glede na število izračunov KF kot tudi glede na končno vrednost norme gradienta, dobimo, da optimalna strategija prekaša privzeto v 10 primerih. Nasprotno se zgodi v 8 primerih. Stolpci #r, #e, #oc, #ic in #s navajajo delež uspešnih korakov zrcaljenja, odmika, notranjega in zunanjega primika ter število korakov skrčenja. Delež korakov zrcaljenja se nekoliko zmanjša, zato pa se poveča delež uspešnih korakov odmika. Predvidevamo, da je to delno tudi razlog za uspešnost optimalne strategije. Pogostnost primerov, ko je optimalna strategija boljša od privzete, se veča z dimenzijo problema. To nakazuje, da je opti- malna strategija odvisna od dimenzije problema. Število korakov skrčenja je majhno in se še dodatno zmanjša z uporabo optimalne strategije. Dobljena vrednost parame- tra γoc = 0,758 ni zanesljiva, saj na korake zunanjega primika v večini primerov odpade le nekaj odstotkov vseh izračunov KF. Po drugi strani koraki notranjega primika pomenijo 10% − 20% vseh izračunov KF, kar daje verodostojnost dobljeni vrednosti γic = 0,559. 6 SKLEP Izbira optimalnih vrednosti parametrov optimizacijskega postopka (strategije), ki določajo njegovo obnašanje, je računsko zahteven postopek. Avtomatiziramo ga lahko z uporabo zunanje optimizacijske zanke, ki išče nji- hove optimalne vrednosti. Postopek, ki teče v tej zanki, imenujemo tudi metaoptimizacija. Podali smo primer kriterijske funkcije za metaoptimizacijo. Sestavljena je iz prispevkov večjega števila testnih funkcij, na katerih preizkušamo osnovni optimizacijski postopek, za kate- rega iščemo optimalno strategijo. Metaoptimizacija je računsko zahteven postopek, ki ga skoraj ne moremo izvesti brez uporabe visokoz- mogljivih računskih sestavov. Predstavili smo primer takega sestava s 100 procesorskimi jedri, ki je cenovno dokaj dostopen. Sestav temelji na standardnih namiznih računalnikih, ki jih povežemo z gigabitnim omrežjem Ethernet. Dobljeni sistem je primeren za vzporedno računanje, če je posamezna naloga, ki jo mora opraviti procesorsko jedro, dovolj obsežna, da so časi prenosa podatkov in zakasnitve pri prenosu v primerjavi z njo zanemarljivi. Postopek smo ilustrirali z metaoptimizacijo petih pa- rametrov (strategije) simpleksnega postopka Nelderja in Meada. Rezultati kažejo, da optimalna strategija še zdaleč ni enaka tisti, ki je bila objavljena skupaj s po- stopkom. Predvsem močno odstopa vrednost parametra, ki določa dolžino koraka odmika. Zanimivo je, da se dobljena vrednost dobro ujema s tisto, ki je bila predla- gana za konvergentno različico simpleksnega postopka iskanja po mreži [14]. Rezultati tudi nakazujejo, da so optimalne vrednosti parametrov postopka odvisne od dimenzije optimizacijskega problema. V nadaljevanju bi bilo zanimivo poiskati odvisnost optimalnih vrednosti parametrov postopka od dimenzije problema in ugotoviti, ali jo je mogoče razložiti tudi teoretično. ZAHVALA Raziskavo je omogočilo Ministrstvo za izobraževanje, znanost, kulturo in šport Republike Slovenije v okviru programa P2-0246 - Algoritmi in optimizacijski po- stopki v telekomunikacijah.