Ogni libreria di algoritmi genetici dovrebbe avere un modo per definire una funzione di fitness, che è davvero ciò che stai cercando. AForge.NET espone l'interfaccia IFitnessFunction. GeneticSharp espone l'interfaccia IFitness. Sì, dovrai codificare autonomamente la funzione fitness - questa è la parte che è unica per la tua area problematica. Puoi renderlo semplice o complesso come vuoi.
Dopo che ogni cromosoma passa attraverso la funzione fitness e gli viene assegnato un punteggio, il sistema utilizza qualsiasi criterio di selezione (torneo, ruota della roulette, ecc.) Per scegliere quali cromosomi passare alla generazione successiva tramite crossover e/o mutazione.
Quindi, piuttosto che il processo che scorre in questo modo:
- Abbinare cromosomi in generazione attuale
- Ogni coppia di cromosomi gioca un rotondo
- I vincitori creare la prossima generazione
genetica gli algoritmi funzionano così:
- Ogni cromosoma gioca un giro e ottiene un punteggio
- L'algoritmo di selezione utilizza quel punteggio di scegliere i vincitori assoluti
- I vincitori creare la prossima generazione
In sostanza, ogni cromosoma è già in competizione con ogni altro cromosoma, solo un gradino più astratto di te e vorrei giocare un gioco.
Probabilmente potresti impostare la funzione fitness per attirare in modo casuale un altro membro della popolazione attuale come avversario. Meglio sarebbe usare il miglior cromosoma della generazione precedente come avversario per l'intera generazione attuale.
Assegna punti al tuo cromosoma per progredire ulteriormente nel gioco e assegnare punti per generare ostacoli per l'avversario (se si tratta di una distinta azione separata dal normale gameplay nel tuo gioco). Restituisce il punteggio finale del cromosoma come risultato della funzione fitness.
Quando si parla di GA in C# di solito scrivo il mio. In ogni caso la valutazione del fitness è sempre la parte più difficile da scrivere. – Alkasai
Piuttosto che iniziare da zero, perché non dare uno di questi progetti e aiutarli a implementare le funzionalità di cui hai bisogno. – craftworkgames
Puoi mostrare il codice che hai provato finora usando GeneticSharp? – giacomelli