Mi piacerebbe sentire i pensieri del mio collega programmatore sulla questione della parametrizzazione delle simulazioni basate su agenti:
Si consideri:
- Core di simulazione, tra cui geometria, test di collisione, alcune regole
- Diversi agenti (modellati in modo OOP: ha-a, is-a, interfacce astratte)
- Gli agenti hanno sensori diversi, attori diversi, controller diversi, ... Tutti collegati tra loro da riferimenti / puntatori e accessibili tramite interfacce astratte.
Quindi, in sostanza, ogni agente è composto da un albero proprietario (l'agente possiede sensori, controller, attori), sovrapposto a un grafico del flusso di dati (sensore collegato al controller, collegato all'attore). L'albero, il grafico più la parametrizzazione delle cose insieme formano un setup di simulazione . L'esecuzione di una simulazione equivale a:
- Leggi nella configurazione di simulazione
- Crea un'istanza di un gruppo di oggetti, parametrizza e collegali insieme per formare l'albero e il grafico
- Esegui la simulazione
- Emetti alcuni dati (statistiche, segnali, qualunque cosa)
La domanda è il modo migliore per salvare la configurazione di simulazione e come istanziare & parametrizzare roba.
Requisiti (alcuni dei quali in conflitto):
- Probabilmente la parametrizzazione dovrebbe essere strutturata lungo l'albero di proprietà, come più naturale.
- Molte volte vorrei creare un'istanza di un gruppo di agenti simili con solo i 1 o 2 parametri modificati tra le istanze. Deve essere facile.
- Mi piacerebbe mantenere la parametrizzazione e il codice vicini. Quando faccio esperimenti con algoritmi che sono influenzati dalla parametrizzazione, non vorrei che le modifiche fossero distribuite su troppe posizioni.
- Al contrario, mi piacerebbe mantenere la parametrizzazione fuori dal codice, in modo che sia facile automatizzare le esecuzioni di simulazione per spazzare sistematicamente gli spazi dei parametri.
- I parametri hanno metadati: tipo, intervallo di valori, unità fisica, descrizione testuale, dipendenze logiche (ad esempio se si specifica X non è necessario specificare Y)
- I parametri non riguardano solo i dati (variabili membro) ma anche il codice (utilizzo di una particolare specializzazione della base astratta)
Ora i miei college e io abbiamo il compito di creare una nuova simulazione basata su agenti:
- Conosci qualche framework / libreria / tecnica?
- I modelli sono applicabili? Best practice?
- Meta-programmazione?
- Abandon OOP del tutto?
Non vedo l'ora di pensare.