Multi-Agent Simulation Studio - Soft - Mehedinti - 2007 Nationala

Informatii generale

  • Categorie: Soft
  • Judetul: Mehedinti

Descriere

Multi-agent Simulation Studio (MaSS) este o platforma destinata proiectarii, de catre utilizator,a unor modele complexe pentru simularea dinamicii unor grupuri de indivizi.
In evolutia indivizilor luati in considerare se integreaza proprietati specifice modelului, functii obiectiv globale si individuale, legi de actiune interne si externe, legi interactive de miscare, modele dinamice de creare si distrugere a indivizilor, memorie individuala si modele de comunicare, factori externi ficsi sau flexibili si asa mai departe.
Altfel spus, MaSS permite proiectarea si modelarea fina a unor simulari multi-agent, pentru care se urmareste echilibrul, dinamica si evolutia populatiilor implicate in conditiile initiale si la limita definite de utilizator.
Aplicatiile MaSS sunt numeroase si includ: epidemiologie/virusologie/biologie, sociologie/psihologie,simulari militare/tactice/strategice, ecologie, dinamica prada/pradator, migratia speciilor, dinamica si psihologia maselor, studiul general al emergentei sistemelor nelineare, evolutia societatilor competitive/colaborative etc.

Mai mult, MaSS pune la dispozitia utilizatorului numeroase unelte pentru studiul statistic si evolutiv al datelor numerice obtinute in urma simularii. Utilizatorul are in permanenta control deplin al simularii, de la datele individuale ale fiecarui agent si pana la legile si variabilele globale care guverneaza simularea.

Unei interfete grafice maleabile si atragatoare, cu componente 2D si 3D, se adauga posibilitati de salvare a modelelor, a rezultatelor numerice si a imaginilor generate de program.

In concluzie, MaSS, unul dintre putinele programe specializate in aceste probleme, se doreste a fi o unealta noua si puternica in explorarea unor domenii inca “necartografiate”, inca necunoscute pe deplin (dinamica grupurilor de indivizi, emergenta sistemelor nelineare, generarea si evolutia echilibrelor dinamice etc).

Tehnologii

Delphi 6, OpenGL, metode numerice

Cerinte sistem

Procesor 600MHz, 128 MB RAM, placa video care sa suporte 800x600x24, platforma Windows 98 sau mai noua.

Realizatori

Bocse Bogdan

  • Scoala: Colegiul National Traian
  • Clasa: 12
  • Judet: Mehedinti

Screenshots



Oki…o sa sparg eu gheata. Mi se pare interesanta lucrarea. In orice caz foarte inovator pt un soft romanesc. As avea totusi cateva intrebari.

Prima ar fi in legatura cu numarul de “agenti” pe care ii poate suporta programul la un moment dat.

A doua ar fi daca trebuie sa stiu matematica la un nivel mai mare decat mediu. Realizez ca trebuie sa stiu ceva mai multa matematica decat un student la filologie. Totusi, daca as fi un student la psihologie as putea folosi programul tau relativ usor?

Poti face simulari pe niste intervale mari de timp, sa zicem un an? Si daca da se poate da un fel “speed-up” ( adica sa vad simularea intr-un fel de fast forward ; desigur pt o simulare de un an mi-ar fi de folos doar rezultatele…fast forward-ul ar fi pentru simulari ceva mai scurte :smile: )

Anyway cam atata as avea de intrebat momentan. Sper sa ai timp sa raspunzi ca vad ca esti intra 12-ea si tu ( asa ca bafta la BAC si admitere :smile: ). Cheers

Multumesc pentru interesul acordat… si acuma sa-ti raspund la intrebari.



Numarul de agenti se poate defini pana la 50.000. Cu toate acestea, presupunand ca softul ruleaza pe un PC cu procesor de 2 GHz, sa zicem, numarul acesta ar trebui sa ramana sub 1.000, intrucat numarul de calcule (detectarea potentialelor interactiuni, calcularea numerica a acestora, integrarea numerica a rezultatelor obtinute) solicita foarte mult procesorul. Un alt factor, ce trebuie luat in evidenta, este complexitatea agentilor, fiindca un agent are un numar de proprietati (implicit sunt 5 straturi*2 nivele + 6 proprietati mecanice (pozitie, viteza)=16 proprietati) - mai multe proprietati inseamna mai mult ecuatii diferentiale de rezolvat. Pe scurt, da, se pot folosi suficienti agenti, dar timpul de executie creste supra-linear cu numarul lor (e mai complicat, fiindca conteaza si densitatea indivizilor, nu numai numarul lor total).



Complexitatea modulelor implementate in program necesita si un nivel de cunostiinte de matematica. Prin MaSS insa am dorit sa ridic de pe umerii utilizatorului greutatea proiectarii diverselor probleme necesare unei astfel de simulari (integrari numerice, interpolari, calcul de distante, proiectii in plan si spatiu etc), incat acesta sa se poate concentra asupra modelului in sine. DA, trebui sa stii ceva matematica de facultate - dar doar conceptual, nu low-level. Daca stii ce inseamna o ecuatie diferentiala si ce inseamna o functie obiectiv, atunci te poti descurca.

Bineinteles, dinamica unei simulari este guvernata de niste legi mai mult sau mai putin numerice - miscarea, comportamentele interne si externe, evolutia mediului exterior etc. Utilizatorului i se cere sa fie capabil sa conceapa si sa cuantifice un astfel de model - programul se ocupa de restul detaliilor de mate.

Ad strictum, da, un student la psihologie/sociologie/medicina s-ar putea descurca cu MaSS, cu conditia sa citeasca intai documentatia programului si sa stie, mai mult sau mai putin clar, CE vrea sa simuleze (chiar daca studentul respectiv copiaza formulele dintr-o carte). Pe net, prin carti se gasesc destule modele conceptuale gata-facute, cu formule, legi de evolutie si asa mai departe. Consider (cu subiectivitatea implicita) ca MaSS ar putea fi foarte folositor in situatiile in care utilizatorul stie ce model vrea sa descrie/vizualizeze/analizeze, dar nu are cunostintele, rabdarea sau resursele necesare pentru a implementa de la zero toate metodele numerice si grafice pe care programul de fata le ofera.



Fast-forward-urile sunt posibile, dar intr-un anumit sens. Nu poti forta procesorul sa lucreze mai repede, sa efectueze mai multe calcule (decat daca faci un overclocking). Pe de alta parte, poti schimba pasul diferential global - ceea ce inseamna ca poti vizualiza evolutia unui simulari pe un timp mai mare, folosind acelasi numar de calcule. Dezavantajul maririi pasului diferential este o pierdere a preciziei, a acuratetei datelor obtinute. Altfel spus, timpul de executie al procesorului trebuie impartit intre acoperirea unei perioade mari de timp si acuratetea datelor.

Intr-adevar, dupa ce ai facut toate calculele, poti re-vizualiza rezultatele cu fast-forward real, fiindca starea globala a sistemului simulat poate fi inregistrata periodic de unul dintre modulele programului.

Ah da, si o alta varianta, mai eficienta, dar mai putin generala este sa modifici modelul simulat de asa natura incat sa fie “specializat” pe perioade lungi de timp - dar asta tine deja de ingeniozitatea utilizatorului in cazuri particulare.



Cam atat… Sper ca a fost inteligibil ce am spus mai sus.



Astept, ce de obicei, critici si intrebari.



Alles gute!

De ce instrumente dispun sa definesc comportamentul indivizilor?



Spre exemplu, cum as putea sa simulez niste automate celulare, in particular un Game-Of-Life?

Ma gandesc ca e cam greu sa exprimi in ecuatii diferentiale niste reguli de transformare discrete. In plus ai nevoie de niste atribute arbitrare asociate fiecarui individ, de o multime arbitrara de stari.



Pot sa introduc in ecuatiile de miscare masuri statistice precum numarul de indivizi aflati in proximitate? Spre exemplu, vreau sa modelez un pes(h)te care tinde sa adere la un banc atunci cand se afla in preajma lui.





Ian Stewart explica intr-o carte a a sa (Numerele Naturii) ca multe sisteme dinamice care se comporta haotic la nivel de individ au un comportament regulat si predictibil cand sunt privite in ansamblu, cand le analizezi masurile agregate.



Stewart ofera ca exemplu o populatie de iepuri si o cultura de varza. Iepurii se inmultesc in timp (proportional cu patratul populatiei lor) insa tind sa moara cand nu au suficienta mancare la indemana. Evident, cultura de varza evolueaza invers proportional cu cea de iepuri.



Daca urmaresti cuantumurile celor doua populatii vei observa (zice el) ca acestea converg catre o multime (fie A), numita atractor.

Grafic, daca plot-ezi 2d cele doua cuantumuri, acestea vor converge catre o curba A.



Pot sa simulez un astfel de experiment in MaSS?

Utilizatorul defineste pentru fiecare individ o multime de proprietati, organizate pe mai mult nivele si pe mai multe straruri. Stratul 0 este cel care garanteaza “interfata” dintre indivizi - adica, o interactiune intre doi indivizi, poate modifica in mod direct, doar proprietatile de strat 0 ale celor doi. Evident, mai departe schimbarea se poate propaga in straturile superioare prin intermediul ecuatiilor de stare interna.



Mai mult, fiecare individ are acces la mai multe comportamente (nu neaparat aceleasi clase de comportamente sunt disponibile pentru toti indivizii). Fiecare comportament inseamna un set de ecuatii care definesc cum se modifica proprietatile de strat0 ale celor doi agenti implicati intr-o interactiune si o functie obiectiv. Functia obiectiv este definita de utilizator si trebuie sa indice care este comportamentul cel mai favorabil si cu ce individ. Daca functia obiectiv nu depaseste o valoare prag, atunci nu se aplica nicio interaciune. Mai mult, exista conditii de vizibilitate ce trebuie respectate pentru ca o interactiune sa aiba loc.



Evident, in functiile de evolutie interna, in functiile de interactiune, functiile obiectiv si asa mai departe - POTI introduce elemente statistice, aleatoare, pseudoaleatoare, dupa cum doresti. Chiar pentru ecuatiile de miscare e de multe ori util sa consideri o perturbatie aleatoare, foarte mica.



Daca prin Game of Life intelegi sisteme matricele cu forma fixa, MxN, cu pozitii si stari discrete, atunci sa faci asa ceva cu MaSS ar fi ca si cum ai incerca sa omori o musca cu o racheta nucleara. Nu vreau sa exagerez, dar cred ca intelegi ideea: MaSS lucreaza in spatiu continuu, cu un numar practic infinit de stari distincte in care se pot afla agentii (proprietatile sunt in simpla sau dubla precizie). Nu m-am concentrat prea mult pe modelele cu spatii si proprietati discrete, fiindca mi se par foarte limitative. Se pot implementa evident si modele fortat discrete, drept cazuri particulare ale cazurilor continue. Oricum, iti garantez ca se pot face generalizari continue, fooooarte interesante ale jocului lui Conway.



Ecuatiile diferentiale la care am facut referire sunt, din punct de vedere strict matematic, sisteme de recurenta nelineare (intrucat respecta conditii de continuitate a functiilor doar pe portiuni finite!). Totusi, in sens strict matematic, se pot defini transformari discrete folosind ecuatii diferentiale -> pentru detalii care ar putea fi offtopic, iti recomand sa citesesti capitolul despre convolutii dintr-o carte de matematici speciale; cauta functia Delta a lui Dirac si functia pas a lui Heaviside. Uite aici despre ce vorbesc:

http://mathworld.wolfram.com/DeltaFunction.html



In concluzie:

1) Poti defini evolutia agentilor cu mijloace deterministe, statistice sau mixte.

2) Poti crea jocurile gen Conway ca si cazuri discrete, particulare. Poti generaliza astfel de jocuri in spatii continue in foarte multe moduri. Voi aduce un exemplu la Galaciuc…

3) In principiu, orice agent se poate afla intr-o infinitate de stari (strict matematic, mai multe familii infinite de stari).





Am impresia ca postul tau nu era finalizat… daca mai sunt neclaritati, raspund cu cea mai mare placere.



Acum merg sa termin documentatiile si sa mai dezvolt modulul de proiectare a memoriei agentilor. :unamused:



Alles gute!

Da, evident ca se pot introduce masuri aleatoare in oricare dintre ecuatii.



Cu toate ca nu i-am citit cartea, Ian Stewart este un baiat destept - fenomenul pe care il descria el acolo se numeste emergenta: efectul prin care un sistem capata proprietati pe care elementele in sine nu le au. In filozofie, asta e cunoscut si sub numele de sinergie.

Pestii respectivi nu sunt constienti ca trebuie sa formeze anumite pattern-uri de deplasare, totusi le formeaza pur si simplu respectand reguli simple cum ar fi: a) sa se indrepte spre hrana; b) sa se fereasca de pericol; c) sa pastreze o distanta optima d0 fata de vecini. Cand e vorba de dinamica la pesti, pasari, insecte, furnici etc. avem de-a face cu ceea ce se numeste flocking - fenomen caruia ii este dedicat un modul in MaSS. Pentru animale mai evoluate, apare si notiunea de interes personal, diferit de al celorlalti, care poate face un individ sa se indrepte intr-o parte sau alta.



Exemplul particular cu iepurii e bun, si in sistemele prada-pradator se observa convergenta la acesti atractori. In MaSS, poti defini o familie prada si o familie pradator, a doua fiind inzestrata cu un comportament de atac/vanatoare, iar prima fiind inzestratata (eventual) cu un comportament de fuga (nu prea e cazul pentru verze, dar nah). Dai drumul la simulare (care eventual se desfasoara si in niste conditii de mediu mai complexe, cu relief, apa, temperatura si poate obstacole) si vezi cum evolueaza. Dupa un timp, plotezi datele (in cazul asta, ne intereseaza populatiile) si o sa observi niste pattern-uri care seamana cu solutiile ecuatiilor Lotka-Voltera (astea sunt niste ecuatii care definesc evolutia ecosistemelor de tip producator-consumator-pradator). Atractorii despre care vorbesti sunt niste curbe care seamana cu sinusoidele (doar ca sunt mai ascutite la varf si tind mai lin spre punctele de minim). Modulul de plotare il poti vedea in screenshotul de mai sus (e ala cu curba, nu ala cu bar-chart-ul; bar-chart-ul e la histograme).



In ceea ce priveste sistemele emergente, in sensul definit de Stewart, MaSS este o unealta de studiu a lor, pornind de la individ spre ceea ce tu numesti caracteristici agregate si eu numesc caracteristici globale.



In ceea ce priveste vecinii, MaSS foloseste, behind the scenes, o harta de densitate, adica un fel de matrice bidimensionala de vectori unidimensionali, care elimina din start considerarea interactiunea cu unui agent cu altul, aflat la o distanta mai mare de Dmax (specificat de utilizator, evident).



Cum am placerea sa fac de obicei, am lungit poate prea mult explicatia… dar pe scurt, DA, in MaSS poti sa simulezi sisteme emergente (like that’s the point, d’oh :laughing: ) si sa cercetezi aparitia curbelor de atractie si a diverselor marimi statistice (medie, abatere standard, abatere medie, variatie bla bla bla)

O documentatie pe larg pentru MaSS, intr-o forma preliminara puteti gasi aici:



http://rapidshare.com/files/45820690/MaSS.doc.html



Enjoy! :smile:

Sau aici:



http://www.megashare.com/241946



Parola:

hamilton

Imi face placere sa anunt publicarea unei variante trial a MaSS, impreuna cu blogul asociat:



http://multiagentsimulation.wordpress.com

Coperta si inca niste screenshot-uri …



Enjoy!



As aprecia parerile, sugestiile, ideile si mai ales criticile voastre :smile:



Multumesc.



<a href=“http://photos.piry.net/view/66023cover.jpg:2ql7dov5]http://photos.piry.net/thumbs/66023cover.jpg[/url:2ql7dov5]

<a href=“http://photos.piry.net/view/22716juniori05.jpg:2ql7dov5]http://photos.piry.net/thumbs/22716juniori05.jpg[/url:2ql7dov5]

<a href=“http://photos.piry.net/view/15593Clip_77.jpg:2ql7dov5]http://photos.piry.net/thumbs/15593Clip_77.jpg[/url:2ql7dov5]

http://photos.piry.net/thumbs/44946Clip_78.jpg

[url=http://photos.piry.net/view/24380temperature02.jpg”>http://photos.piry.net/thumbs/24380temperature02.jpg



[url=http://photos.piry.net/view/96380Clip_85.jpg”>http://photos.piry.net/thumbs/96380Clip_85.jpg

[url=http://photos.piry.net/view/54125Clip_86.jpg”>http://photos.piry.net/thumbs/54125Clip_86.jpg