Sunteți pe pagina 1din 14

Academia de Studii Economice Bucureti

Facultatea de Cibernetic, Statistic i Informatic Economic

ALGORITMI GENETICI
PENTRU
PROBLEMA COLORRII
HRILOR

n aceast lucrare se contureaz o abordare a problemei


colorrii hrilor folosind c culori prin algoritmi gertetici.
Obiectivul acestei probleme este de a umple fiecare regiune
a hrii cu una dintre cele c culori astfel nct regiunile
adiacente s fie distincte cromatic.

Ancua-Roxana Vochescu

Bucureti, 2017
1. Enunul problemei

Utilizai un algoritm genetic pentru rezolvarea problemei colorrii hrilor, definit


astfel: Se d o hart cu n (n>15) ri (se cunosc vecintile pe hart, prin intermediul
matricei de adiacen). Sunt disponibile c culori distincte pentru colorarea hrii. Se cere s
se determine o modalitate de colorare a hrii astfel nct fiecare ar s fie colorat cu alt
culoare dect toi vecinii si. Care este numrul minim de culori necesare pentru colorarea
hrii?

Problema de colorare a hrii a fost propus la nceputul anilor 1850. Ideea este s se
foloseasc numrul minim de culori pentru a umbra diferitele ri, care sunt de culoare diferit
fa de vecinii adiaceni, pe harta lumii. Problema este considerat dificil deoarece nu se
impune nici o restricie asupra numrului de regiuni din harta care mprtesc aceeai limit.
Muli matematicieni, inclusiv Augustus De Morgan, Arthur Kempe i Peter Tait, au dovedit
c problema oricrui grafic simplu poate fi colorat cu cel puin patru culori [1].

Soluia de colorare a hrii poate fi reprezentat n structura genetic cromozomal, astfel


nct cele c culori vor fi exprimate prin c alele.

De exemplu, galben, verde, albastru , etc. sunt reprezentate prin 1,2,3,..,c, unde c
.Fiecare regiune va fi reprezentat de ctre o gen. De exemplu, o soluie posibil pentru
colorarea a celor 42 de judee din Romnia, inclusiv Bucureti, poate fi reprezentat printr-un
cromozom compus din 42 de gene, fiecare lund valorile 1,2,..,c. Un cromozom A, care
reprezinta colorarea a n regiuni ale unei harti, este notat astfel :

A = (c1,c2,c3, , cn), ci {1,2, , c}, i =


1,

unde ci este alela reprezentand culoarea regiunii i din harta.

Vom alege pentru implementare reprezentarea cu numere ntregi pentru a putea asocia facil
soluia cu realitatea.

Informaiile despre adiacena a n regiuni din hart pot fi pstrate ntr-o matrice de n n
elemente, cunoscut sub denumirea de matricea adiacenelor.

11 1
Fie M o matrice de adiacenta : M = ( ),
1

1,
unde mij = { , unde i,j =
1, cu i j
0,

De exemplu, pentru Figura 1, regiunea r1 este adiacena fa de r2, adic au o grani


comun. Codificarea culorilor folosite se regasete n Figura 2, iar matricea de adiacen
pentru Figura 1 se afl n Tabelul 1.

Considernd exemplul de mai jos, pentru n = 4, c = 3 i matriea de adiacen m, o posibil


soluie este reprezentat n Figura 3, notata ca A = (1, 2, 1, 3).
Aadar, colorarea hrii A, avnd n ri, cu cele c culori este valid dac i,j =
1, cu i

j si mij = 1 atunci ci cj. Daca i j, i,j = 1, i mij = 1, dar i ci = cj atunci spunem c i i j
sunt n conflict. (1)

1 2 3 4
1 0 1 0 0
2 1 0 1 1
3 0 1 0 1
s4 0 1 1 0

Tabelul 1. Matricea de adiacen

2. Structura general a algoritmului utilizat

Spunem ca am rezolvat o problem de colorare a hrii de fiecare dat cnd gsim


valori conforme cu (1). Procesul consta in:

Porinim cu un numar de c culor i n ri pentru care generm populaia iniial:


pop = (c1,c2,c3, , cn), reprezentnd asocierea aleatoare a unei culori fiecrei ri/
regiuni din cele n.
Considerm o funcie obiectiv n ceea ce privete numrul de conflicte pentru
fiecare numr c de culori fixat, pentru ca la fiecare etap numrul de conflicte s
ncercm sl reducem la zero, ceea ce corespunde unei solutii valide.
Capacitatea de fitness corespunde urmtoarei sume de conflicte:
f = =1 =+1 , daca i j, i,j =
1, , mij = 1 i ci = cj
Aadar vom urmri minimizarea funciei obiectiv f.
Algoritmul cautarii unei solutii a problemei generale de colorare a hartii cu c
culori, folosind Algoritmii Genetici, poate fi descris astfel:
1) generam aleator populatia initiala pop0 cu dim indivizi, unde dim este
dimensiunea populaiei, dat.
2) repet
3) k k + 1
4) popt reproducere ( popt -1)
5) popt recombinare(popt , pr), unde pr = probabilitatea de recombinare
6) popt mutaie(popt , pm), unde pm = probabilitatea de mutaie
7) evalueaz(popt)
8) pn cnd numrul de populaii generate este mai mic sau egal dect k
3. Specificarea fiecrei componente a algoritmului genetic utilizat pentru rezolvarea
problemei
I. Funcia obiectiv urmrete minimizarea conflictelor ntre regiunile cu aceeai
culoare i este calculat ca:

II. La fiecare moment de timp populaia este format din dim indivizi reprezentai
aa cum a fost explicat mai sus. Populia iniial este generat aleator folosind
urmtoarea funcie:

Pe ultima poziie din reprezentarea fiecrui individ se afl valoarea funciei obiectiv.

III. Selecia prinilor este realizat prin urmtorul procedeu: de dim ori sunt alese
perechi de cromozomi din populaia curent i este selectat cel mai bun dintre
ei, din punctul de vedere al funciei de evaluare.
IV. Recombinarea este realizat astfel: pentru fiecare pereche de doi indivizi
aflai pe poziii generate aleator i care nu au mai fost selectai n procesul
curent de recombinare - x i y din populaia curent sunt obinute
progeniturile c1 i c2 prin recombinarea uniform:

Consultarea fiecrei gene n mod independent i atribuirea valorii corespunztoare din


gena unuia dintre prini. Pentru fiecare gen este generat aleator din distribuia uniform
valoarea r. Dac r<pr atunci primul descendent direct motenete valoarea genei de la al
doilea printe, iar cel de-al doilea descendent de la primul printe.[2]

Pe ultima poziie din reprezentarea fiecrui individ se afl valoarea funciei obiectiv.
Dac o pereche de prini nu este selectat pentru ncruciare, aceasta este meninut n
populaia urmtoare.

V. Operatorul de mutaie este aplicat cu probabilitatea pm unui individ x i


revine la resetarea aleatoare a alelelor, generarea aleatoare a unei valori din
mulimea vaorilor admisibile pentru gena respectiv.
VI. Algoritmul genetic utilizat este prezentat n continuare. Condiia de oprire
este dac a fost depit numrul maxim de generaii k.
4. Teste

Un prim test realizat este pentru harta prezentat anterior, la punctul 1.


La apelul GA_Harti("matrice1.txt",3,4,4,5,0.65,0.25); se obin urmtoarele:
Matricea de adiacen a hrii este:
0 1 0 0
1 0 1 1
0 1 0 1
0 1 1 0
Populaia iniial generat aleatorpentru colorarea hrii este:
3 3 4 1 1
4 3 3 1 1
4 4 3 1 1
n urma recombinrii pot rezulta prinii:
4 4 3 1 1
4 3 3 1 1
Urmaii:
4 3 3 1 1
4 4 3 1 1
Mutaia s-a realizat pentru individul:
3 3 4 1 1
Individul rezultat:
3 3 4 2 1
Dup ali pai pn ce numrul de populaii a ajuns la k=5, rezultatele au fost:
Cea mai bun valoare a funciei fitness n fiecare generaie:
Generatia: 1 2 3 4 5
1 1 1 0 0
Indivizii cu cea mai bun valoarea a funciei fitness:
Din generaia 4
4 3 4 2 0

Pentru apelul GA_Harti("matrice.txt",3,7,4,10,0.65,0.25); i matricea de adiacen


de mai jos, am obinut:

Matricea de adiacen a hrii este:

0 1 1 0 1 1 0
1 0 0 1 1 0 1

1 0 0 1 1 1 0

0 1 1 0 1 0 1

1 1 1 1 0 0 0

1 0 1 0 0 0 1

0 1 0 1 0 1 0

Populaia iniial generat aleatorpentru colorarea hrii este:

4 3 2 4 1 1 2 0

2 3 3 1 3 4 2 2

3 2 2 4 2 1 1 3

n urma recombinrii pot rezulta prinii:

4 3 2 4 1 1 2 0

4 3 2 4 1 1 2 0

Urmaii:

4 3 2 4 1 1 2 0

4 3 2 4 1 1 2 0

Mutaia s-a realizat pentru individul:

4 3 2 4 1 1 2 0

Individul rezultat:

4 3 3 4 1 1 2 0

etc.

n urma a zece iteraii celemai bune rezultate ale funciei de evaluare au fost:

Functia fitness:

0 1 2 2 4 3 2 2 2 1

Indivizii cu cea mai buna valoarea a functiei fitness:


Din generatia 1

4 3 3 4 1 1 2 0

n urma apelrii aceleai funcii, dar pentru generarea a 20 de populaii am obinut diferenele:

Se observ faptul c numrul crescut de generaii nu eficientizeaz algoritmul, n acest caz.

Pentru a reveni la problema propus iniial, aceea de colorare a celor 42 de judee


din Romnia, respectnd cerinele problemei de colorare a harilor, am creat
matricea de adiacen a acestora (n urma numerotrii proprii ca n imaginea de
mai jos):
n urma rulrii algoritmului pentru 10 populaii, am obinut:

Se observ ct de puin eficient este n acest caz generarea unui numr mic de generaii.

Vom apela funcia pentru 100 de generaii albastru i 200 de generaii portocaliu.

n graficul de mai jos putem urmri evoluia n urma a 500 de generaii albastru i a 1000 de
generaii rou i portocaliu.
>> GA_Harti("judete.txt",3,42,4,4000,0.6,0.01);

>> GA_Harti("judete.txt",3,42,4,10000,0.6,0.01);

>> GA_Harti("judete.txt",3,42,15,300,0.6,0.01);

Se observ c pentru un numr destul de mic de generaii 300, dar mare de culori, se obine
soluia optim.
Bibliografie

1. K. Appel and W. Haken. "The Solution of the Four-Colour-Map Problem," Scientific


AnLevcian, pp. 108-121. Oct.1977.
2. Cocianu C., Uscatu C. Programare Evolutiv i Algoritmi Genetici, Ed. ASE,
Bucureti 2015

S-ar putea să vă placă și