Sto lavorando a un progetto in cui implementeremo una sorta di simulazione mondiale in cui esiste un mondo quadrato 2D. Gli agenti vivono in questo mondo e prendono decisioni come muoversi o replicarsi in base alle celle adiacenti (world = grid) e ad alcuni parametri aggiuntivi (che non sono basati sullo stato del mondo). Sto cercando una struttura dati per implementare un progetto del genere.
Le mie preoccupazioni sono: Implementerò questo 3 volte: sequenziale, usando OpenMP, usando MPI. Quindi, se posso usare la stessa struttura che sarà abbastanza buona.
La prima cosa che emerge è mantenere un array 2D per il mondo e memorizzare i riferimenti di agenti al suo interno. E simula il mondo per ogni fasce temporali controllando ogni cella in ogni iterazione ed elaborando ulteriormente se un agente viene trovato nella cella. Il rovescio della medaglia è cosa succede se ho 1000x1000 mondo e solo 5 agenti in esso. Sarà un overkill per entrambe le versioni sequenziali e parallele per controllare ogni cella e cercare possibili agenti in esse. Posso usare quadtree e agenti di memorizzazione, ma come posso ottenere le informazioni sulle celle vicine?
Per favore fammi sapere se dovrei elaborare di più.