Home > IT, Programe > Aplicarea algoritmilor genetici la identificarea comportarii mecanice a sistemelor tehnologice

Aplicarea algoritmilor genetici la identificarea comportarii mecanice a sistemelor tehnologice

Articolul de faţă prezintă aplicaţia software realizată de către mine pentru lucrarea de dizertaţie la absolvirea masteratului în domeniul Modelarea Numerică a Proceselor Mecanice şi tehnologice. Titlul proiectului este Identificarea sistemelor mecanice folosind calculul evolutiv şi a fost susţinut în anul 2004 la Facultatea de Mecanică din cadrul Universităţii “Dunărea de Jos” din Galaţi. Problema ce mi-a fost dată spre rezolvare consta în studierea următorului sistem mecanic:

sistemul mecanic studiat

Este vorba despre un corp de masă m,  care este susţinut de un resort elastic cu constanta elastică k şi element vâsco-elastic caracterizat de h şi c. Asupra acestui corp se acţionează cu o forţă f şi acesta se deplasează pe o distanţă x. După ce am determinat experimental măsurători asupra sistemului, am întocmit următorul tabel cu valori pentru forţa f aplicată şi distanţele de deplasare corespunzătoare x:

Număr experiment f alfa
1 10 1.9530500
2 116 376.2566273
3 223 1966.4130530
4 329 1149.1480207
5 436 955.4891093
6 542 883.3210517
7 649 847.3314909
8 755 826.9199129
9 861 814.0472947
10 968 805.3135368
11 1074 799.2086623
12 1181 794.6918891
13 1287 791.3123638
14 1394 788.6709578
15 1500 786.6029218

După ce am scris cele două ecuaţii ale mişcării pentru amortizarea histeretică şi cea elastică, am realizat ceva calcule si am ajuns la o singură ecuaţie:

ecuatia miscarii

O posibilitate de găsire a valorilor pentru m, g şi k are fi aceea de a stabili un anumit pas de căutare pentru domeniul fiecărei dintre aceste valori, şi testarea combinaţiilor de aceste valori până la găsirea soluţiilor. Pentru a realiza aceste calcule, însă ar fi necesar un timp de căutare a soluţiilor extrem de mare, direct proporţional cu fineţea pasului de căutare. Considerând împărţirea fiecărui interval în 10000, ar rezulta  combinaţii posibile de testat. Iar dacă s-ar dori obţinerea unei soluţii cât mai exacte, partiţionarea intervalelor ar putea fi mult mai fină. O alternativă la această căutare “oarbă” o reprezintă calculul evolutiv, mai exact algoritmul genetic. Acesta foloseşte o metodă de căutare euristică, care pleacă întâi de la o căutare aleatoare, apoi urmează anumite căi de găsire a celor mai bune soluţii. La fiecare generaţie trebuie realizată o verificare dacă combinaţia de valori corespunde unui criteriu, denumit criteriu de performanţă. Am realizat un program care determină cea mai bună soluţie pentru problema ridicată mai sus:

01

Fereastra principală poate fi extinsă prin afişarea bazinului de soluţii pentru m, g şi k (sunt cunoscute intervalele în care m, g şi k au soluţii) şi graficul istoricului erorii:

02

Găsirea soluţiilor poate fi realizată fie prin căutare exhaustivă, fie prin calcul genetic:

03

Calculul genetic poate dura destul de mult funcţie de pasul intervalului şi eroarea minimă ce se doreşte a fi obţinută:

04

Este de menţionat faptul că timpul necesar executării calculului genetic, faţă de căutarea exhaustivă este deosebit de redus:

05

Graficul pentru istoricul erorii poate fi salvat prin accesarea meniului contextual al aplicaţiei (click dreapta mouse pe grafic):

06

Această aplicaţie conţine codul sursă ataşat în executabil, fapt inedit pentru o aplicaţie software, chiar şi open-source. Accesul la acesta se obţine din meniul Ajutor, comanda Sursa aplicaţiei. Într-un articol viitor voi descrie modul de realizarea al acestei opţiuni:

07

Despre calcul gentic prezintă informaţiile prin autoderularea textului:

08

P.S.:

În general, orice sarcină abstractă care trebuie îndeplinită, poate fi privită ca fiind rezolvarea unei probleme, care, la rândul ei, poate fi percepută ca o căutare în spaţiul soluţiilor potenţiale. Deoarece, de obicei, căutăm cea mai bună soluţie, putem privi acest proces ca fiind unul de optimizare. Pentru spaţii mici, metodele clasice exhaustive sunt suficiente; pentru spaţii mari, pot fi folosite tehnicile speciale ale inteligenţei artificiale.
Metodele calculului evolutiv se numără printre aceste tehnici; ele folosesc algoritmi ale căror metode de căutare au ca model câteva fenomene naturale: moştenirea genetică şi lupta pentru supravieţuire. Cele mai cunoscute tehnici din clasa calculului evolutiv sunt algoritmii genetici, strategiile evolutive, programarea genetică şi programarea evolutivă. Există şi alte sisteme hibride care încorporează diferite proprietăţi ale paradigmelor de mai sus; mai mult, structura oricărui algoritm de calcul evolutiv este, în mare măsura, aceeaşi.
Începuturile algoritmilor genetici se situează undeva în jurul anului 1950, când mai mulţi biologi au folosit calculatoarele pentru simularea sistemelor biologice. Rezultatele muncii au început să apară după 1960, când la Universitatea din Michigan, sub directa îndrumare a lui John Holland, algoritmii genetici au apărut în forma în care sunt cunoscuţi astăzi.
După cum sugerează şi numele, algoritmii genetici folosesc principii din genetica naturală.
Câteva principii fundamentale ale geneticii sunt împrumutate şi folosite artificial pentru a construi algoritmi de căutare care sunt robuşti şi cer informaţii minime despre problemă.
Algoritmii genetici au fost inventaţi folosind modelul procesului de adaptare. Ei operează, în principal, cu şiruri binare şi folosesc un operator de recombinare şi unul de mutaţie. Prin mutaţie se schimbă un element (genă) dintr-un cromozom, iar prin încrucişare se schimb material genetic între doi părinţi; dacă părinţii sunt reprezentaţi prin şiruri de cinci biţi, de exemplu (0, 0, 0, 0, 0) şi (1, 1, 1, 1, 1), încrucişarea celor doi vectori poate duce la obţinerea descendenţilor (0, 0, 1, 1, 1) şi (1, 1, 0, 0, 0) (acesta este un exemplu al aşa-numitei încrucişări cu un punct de tăietură).
Fitness-ul unui individ este atribuit proporţional cu valoarea funcţiei criteriu corespunzător individului; indivizii sunt selectaţi pentru generaţia următoare pe baza fitness-ului lor.

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: