• No results found

Self-Organizing Migrating Algorithm – SOMA

In document globálna optimalizácia (Page 32-40)

5.2 Evoluˇ cn´ e algoritmy

5.2.2 Self-Organizing Migrating Algorithm – SOMA

SOMA, alebo inak Self-Organizing Migrating algorithm, je pomerne nov´ym objavom na poli evoluˇcn´ych algoritmov, jeho autorom je Ivan Zelinka [8]. Tento algoritmus, podobne ako PSO, nevytv´ara nov´ych jedincov, ale jedinci sa pohybuj´u po mnoˇzine pr´ıpustn´ych rieˇsen´ı. Jednotliv´ı jedinci navz´ajom ovplyvˇnuj´u svoj pohyb.

Jednu ˇcasticu (jedinca) poˇcas jednej iter´acie k charakterizuje: • poloha x(k)i – n-rozmern´y vektor, kde n je rozmer ´ulohy

• fitness – skal´arna hodnota vypoˇc´ıtan´a pomocou ´uˇcelovej funkcie

Algoritmus sa inicializuje popul´aciou n´ahodn´ych jedincov a urˇc´ı sa ich fitness. Jedinec s najlepˇsou fitness hodnotou sa vyberie ako l´ıder. Nov´a popul´acia sa vytvor´ı tak, ˇze vˇsetci jedinci okrem l´ıdra sa pok´usia n´ajst’ si vhodnejˇsiu polohu. Skokmi urˇcitej d´lˇzky sa bud´u pribliˇzovat’ po priamke k l´ıdrovi a spomedzi t´ychto polˆoh si vyber´u t´u s najlepˇsou hodnotou fitness.

A

B L

Obr. 4: Migr´acia jedinca (A) k l´ıdrovi (L) v SOMA

5. GLOB ´ALNA OPTIMALIZ ´ACIA

Po prejden´ı celej trajekt´orie si vyberie polohu s najlepˇsou fitness – na pr´ısluˇsnom obr´azku zelen´y bod (B). Pˆovodn´u popul´aciu tvoria modr´e body a l´ıder, nov´u popul´aciu vytvoria l´ıder spolu so zmigrovan´ymi ostatn´ymi ˇcasticami – bud´uce zelen´e body.

Do algoritmu prin´aˇsa n´ahodnost’ parameter perturb´acie, ozn. P RT , definovan´y v rozmedz´ı (0, 1i. Pomocou tohto parametru sa vytvor´ı vektor perturb´acie, P RT vector, nasledovn´ym spˆosobom: P RT vectori=        0 s pravdepodobnost’ou 1 − P RT 1 s pravdepodobnost’ou P RT , pre i = 1, . . . , n,

kde n je rozmer ´ulohy. Hodnota 0 na i-tom mieste vektora perturb´acie znamen´a, ˇze v danom smere sa ˇcastica nebude h´ybat’. Na nasledovnom obr´azku mˆoˇzeme vidiet’, ako vpl´yva na pohyb ˇcastice perturb´acia pre rozmer ´ulohy n = 2.

PRTvector = [1,0] PRTvector = [1,1] A B L B

Obr. 5: N´ahodnost’ v SOMA

Budeme predpokladat’, ˇze vektor perturb´acie nemˆoˇze byt’ nulov´y vektor, pretoˇze vtedy by ˇcastica neprehl’adala ˇziadnu ˇcast’ priestoru. Teda ak sa vygeneruje P RT vector = 0n,

tak na n´ahodnom mieste vygenerujeme jednotku.

5. GLOB ´ALNA OPTIMALIZ ´ACIA

tomto pr´ıpade mˆoˇzme postupovat’ rˆoznym spˆosobom. V pr´aci sme podobne ako v PSO vyuˇzili reˇstrikciu a penaliz´aciu.

Aj algoritmus SOMA m´a rˆozne verzie. V pr´aci [4] s´u uveden´e varianty: • All-to-One – jedinci z popul´acie sa h´ybu k jedn´emu pevn´emu l´ıdrovi,

• All-to-All – jedinci nemigruj´u k urˇcen´emu l´ıdrovi, ale ku vˇsetk´ym ostatn´ym je- dincom, ˇco v´yrazne zvyˇsuje v´ypoˇctov´u n´aroˇcnost’, ale aj vel’kost’ priestoru, ktor´y algoritmus prehl’ad´a, ˇc´ım sa zvyˇsuje pravdepodobnost’ n´ajdenia optima,

• All-to-One-Random – vˇsetci jedinci sa h´ybu k in´emu n´ahodne vybrat´emu jedincovi, a in´e. V naˇsej pr´aci sme pouˇzili z´akladn´y pr´ıstup All-to-One.

5. GLOB ´ALNA OPTIMALIZ ´ACIA

Algoritmus 4: SOMA

Input: maxiter, popsize, P RT, krok, cesta

1 vygenerujeme n´ahodn´u popul´aciu vel’kosti popsize 2 vypoˇc´ıtame fitness popul´acie

3 do L prirad´ıme index jedinca s najmenˇsou hodnotou fitness 4 for k = 1, . . . , maxiter do 5 for i = 1, . . . , popsize; i 6= L do 6 for j = 1, . . . , n do 7 if rndj < P RT then 8 P RT vectorj = 1 9 else 10 P RT vectorj = 0 11 end 12 end

13 aktualiz´acia polohy: x(k)i,start+ (x(k)L − x(k)i,start)tP RT vector, kde

t ∈ hod 0, po krok, do cestai a do x(k+1)i prirad´ıme hodnotu s najlepˇsou fitness

14 end

15 vyberieme nov´eho l´ıdra a jeho index prirad´ıme do L 16 if min f itness = 0 then

17 return aktu´alna popul´acia

18 end

6. 1D PR´ISTUP

6

1D pr´ıstup

Z vlastnost´ı kvadratick´ych zvyˇskov sa d´a uk´azat’, ˇze je moˇzn´e rieˇsit’ ´ulohu (U2) ako jednorozmern´u, teda pre fixn´e y minimalizovat’ funkciu

g(x) = x2− y2 (mod N ).

V tejto ˇcasti uk´aˇzeme, ˇze toto je moˇzn´e pre l’ubovol’n´e y ∈ Z∗n. V naˇsich experimentoch

sme neskˆor volili hodnotu y = 1.

Pripomeˇnme, ˇze mnoˇzinou Z∗n sa myslia tie ˇc´ısla zo zvyˇskovej triedy Zn, pre ktor´e

plat´ı N SD(a, n) = 1 (pozri Defin´ıcia 4.2). Je zrejm´e, ˇze poˇcet prvkov mnoˇziny Z∗N pre

N = p · q je pr´ave hodnota Eulerovej funkcie ϕ(N ), t. j. (p − 1)(q − 1), ked’ˇze Eulerova funkcia ud´ava poˇcet nes´udelitel’n´ych ˇc´ısel menˇs´ıch ako N . Pre lepˇsie pochopenie ˇcitatel’a uv´adzame nasleduj´uci pr´ıklad.

Pr´ıklad 6.1. Nech N = 3 · 5 = 15. Potom mnoˇzina Z∗15 = {1, 2, 4, 7, 8, 11, 13, 14} m´a 8

prvkov a hodnota Eulerovej funkcie pre N je ϕ(N ) = (3 − 1) · (5 − 1) = 8.

Mnoˇzinu Z∗n moˇzno rozdelit’ na dve disjunktn´e podmnoˇziny – kvadratick´e zvyˇsky a

kvadratick´e nezvyˇsky. N´as by vˇsak zauj´ımalo, kol’ko je kvadratick´ych zvyˇskov a kol’ko nezvyˇskov.

D´a sa odvodit’ (pozri knihu [16]), ˇze pre prvoˇc´ıslo p plat´ı |Qp| = p−12 a |Qp| = p−12

(pripomeˇnme, ˇze Qp je mnoˇzina vˇsetk´ych kvadratick´ych zvyˇskov a Qpmnoˇzina vˇsetk´ych

kvadratick´ych nezvyˇskov), teda ˇze polovica ˇclenov mnoˇziny Z∗p s´u kvadratick´e zvyˇsky

a druh´a polovica s´u kvadratick´e nezvyˇsky. Uvaˇzujme teraz N = pq. Plat´ı, ˇze a ∈ Z∗N

je kvadratick´y zvyˇsok modulo N pr´ave vtedy, ked’ a ∈ Qp a z´aroveˇn a ∈ Qq. Z toho

vypl´yva, ˇze |QN| = |Qp| · |Qq| = (p − 1)(q − 1) 4 a |QN| = 3(p − 1)(q − 1) 4 .

6. 1D PR´ISTUP

Pre objasnenie uv´adzame nasledovn´y pr´ıklad.

Pr´ıklad 6.2. Nech N = 3 · 5 = 15. Potom Q15 = {1, 4} a Q15 = {2, 7, 8, 11, 13, 14}.

Vid´ıme, ˇze |Q15| = |Q3| · |Q5| = (3−1)(5−1)4 = 2 a |Q15| =

3(3−1)(5−1)

4 = 6.

Nasleduj´uce tvrdenie a jeho dˆosledok s´u pre n´as kl’´uˇcov´e. Tvrdenie 6.1 (Poˇcet odmocn´ın modulo n). Nech n = pe1

1 p

e2

2 · · · p ek

k , kde pi s´u rˆozne

nep´arne prvoˇc´ısla a ei ≥ 1. Ak a ∈ Qn, tak a m´a pr´ave 2k rˆoznych odmocn´ın modulo n.

Dˆokaz. Pre potreby naˇsej pr´ace uv´adzame bez dˆokazu, viac v [1] a v [16].

Dˆosledok 6.1. ˇSpeci´alne pre N = pq plat´ı, ˇze ak a ∈ QN, tak a m´a pr´ave 4 rˆozne

odmocniny modulo N .

Pre lepˇsie pochopenie dˆosledku uv´adzame pr´ıklad.

Pr´ıklad 6.3. Nech N = 3 · 5 = 15. Pre kvadratick´y zvyˇsok 1 existuj´u 4 odmocniny modulo N – 1, 4, 11 a 14. Pre kvadratick´y zvyˇsok 4 m´ame tieˇz 4 odmocniny modulo N – 2, 7, 8 a 13.

Takto moˇzno cel´u mnoˇzinu Z∗N rozdelit’ na triedy ekvivalencie podl’a toho, ku ktor´emu

kvadratick´emu zvyˇsku prvky ako odmocniny prin´aleˇzia. V kaˇzdej triede s´u potom 4 ˇc´ısla a tried je presne tol’ko, kol’ko je kvadratick´ych zvyˇskov (mod N ).

Teda pre zvyˇsok a ∈ QN m´ame 4 odmocniny x1, x2, x3 a x4, pre ktor´e plat´ı

x21 ≡ x22 ≡ x23 ≡ x24≡ a (mod N ).

Preto pre l’ubovol’n´e y ∈ Z∗N m´ame 4 rˆozne x ∈ Z∗N tak´e, ˇze x2 ≡ y2 (mod N ). Z toho

dve s´u trivi´alne rieˇsenia x = ±y.

V praktickej ˇcasti sme konkr´etne zvolili y = 1. Potom rovnica x2 ≡ 1 (mod N ) m´a pr´ave 4 rˆozne rieˇsenia v Z∗N. Dve rieˇsenia s´u trivi´alne x = 1 a x = N − 1. Tieto

6. 1D PR´ISTUP

vˇsak nevyhovuj´u podmienke x 6≡ ±y (mod N ) v naˇsej ´ulohe (U2). Ostatn´e dve bud´u symetrick´e okolo bodu (N − 1)/2. M´ame teda zaruˇcen´e pr´ave jedno rieˇsenie x ´ulohy (U2) pre fixn´e y = 1 na mnoˇzine X = {2, . . . , (N − 1)/2}.

Na nasleduj´ucom obr´azku moˇzno vidiet’ funkciu h : {1, 2, . . . , (N −1)/2} → {0, . . . , N − 1} s predpisom

h(x) = (x2− 1) (mod N ), (7)

pre N = 23 · 31. Na obr´azku je vyznaˇcen´e aj minimum funkcie s hodnotou 0 v bode x = 185. 0 50 100 150 200 250 300 350 0 100 200 300 400 500 600 700 X= 185 Y= 0

Obr. 6: Graf funkcie h pre N = 23 · 31

Z vlastnost´ı funkcie je zrejm´e, ˇze deterministick´e met´ody glob´alnej optimaliz´acie n´am nepomˆoˇzu. Preto sa t´uto funkciu pok´usime optimalizovat’ upraven´ym SOMA algoritmom.

´

7. PRAKTICK ´A ˇCAS ˇT

7

Praktick´a ˇcast’

V nasleduj´ucich kapitol´ach si uk´aˇzeme fungovanie spomenut´ych pr´ıstupov v praxi. V programovacom prostred´ı Python sme nap´ısali jednotliv´e proced´ury, ktor´e priklad´ame v Pr´ılohe. Kaˇzd´y z t´ychto algoritmov sme 100-kr´at spustili pre tri rˆozne hodnoty N a v´ysledky porovn´ame. Konkr´etne sme pouˇz´ıvali hodnoty N = 133 · 211, N = 691 · 701, N = 1777 · 2777.

Vˇsetky v´ypoˇcty sme vykon´avali na poˇc´ıtaˇci Lenovo Y570 so ˇspecifik´aciou: • Pam¨at’ RAM: 8GB

• Procesor: Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz (8 CPUs), ∼2.2GHz • Operaˇcn´y syst´em: Windows 7 Home Premium 64-bit

7.1 Kvadratick´e sito

Prv´u uvedieme klasick´u met´odu rozkladania N na prvoˇc´ısla p a q – kvadratick´e sito. Al- goritmus sme spustili pre spomenut´e tri hodnoty N , ktor´e sme pouˇzili aj pri ostatn´ych met´odach pre porovnanie. Parameter t sme volili sp;sobom uveden´ym v kapitole 4. Nako- niec sme sa pok´usili faktorizovat’ ˇco najv¨aˇcˇsie ˇc´ıslo. Najv¨aˇcˇsie, ktor´e sme ´uspeˇsne rozloˇzili bolo N = 112272535095293 · 794757777698303, ˇco je 29 miestne ˇc´ıslo. V tabul’ke niˇzˇsie uv´adzame ˇcas trvania behu algoritmu pre jednotliv´e ˇc´ısla N v sekund´ach (T).

N T [s] 199 · 211 0.08 691 · 701 3.90 1777 · 2777 17.71 1517265216 · 2663357 74.33 112272535095293 · 794757777698303 5011.28 Tabul’ka 2: Kvadratick´e sito – v´ysledky

7. PRAKTICK ´A ˇCAS ˇT

Mˆoˇzme vidiet’, ˇze s´ıce algoritmus trv´a pomerne dlho, dok´azal v prijatel’nom ˇcase ´

uspeˇsne faktorizovat’ relat´ıvne vel’k´e ˇc´ıslo. Pre mal´e N je algoritmus pri optim´alnej vol’be t extr´emne r´ychly. V´ypoˇctov´y ˇcas vˇsak s rast´ucim N vel’mi narast´a, preto ˇc´ısla r´adovo 10617, ak´e sa pri RSA pouˇz´ıvaj´u, nedok´aˇzeme t´ymto spˆosobom rozloˇzit’ v prija- tel’nom ˇcase. V pr´aci budeme sk´umat’, ˇci s´u pr´ıstupy glob´alnej optimaliz´acie rovnocenn´ym s´uperom pre kvadratick´e sito, teda nie je naˇsim ciel’om kvadratick´e sito priamo pora- zit’. V tomto smere sa budeme snaˇzit’, aby nami navrhnut´e algoritmy porazili n´ahodn´e prehl’ad´avanie priestoru.

In document globálna optimalizácia (Page 32-40)

Related documents