Newsgroup: it.comp.ia
Titolo: IA su un VG ?

buongiorno,
sto scrivendo un videogioco (una battaglia tra tank) , e adesso mi sto
occupando dei 'nemici' controllati dal computer. Ho già realizzato qualcosa
di funzionante, ma i risultati sono un po scarsi; i movimenti sono
assolutamente 'random' e gli unici controlli che faccio sono
-se nella attuale direzione il tank incontra un ostacolo, cambio direzione
-se il tank sta mantenendo la stessa direzione da troppo tempo (la mappa è
grande), scelgo una nuova direzione random
Come potete immaginare, il risultato che ottengo è di avere dei 'CpuTank'
abbastanza inutili, che sono ogni tanto vengono coinvolti nella battaglia.
Quello che vorrei scrivere è un algoritmo che
-insegua i tank guidati dai giocatori 'umani'
-tenga conto dalla posizione di tutti gli altri CpuTank, in modo da
distribuirsi nel campo di battaglia, e non concentrarsi nello stesso angolo
alla caccia di 2 ' tank umani' lasciando il resto della mappa libero
-tenga conto della posizione degli altri tank guidati dai giocatori, ovvero
se i giocatori (fino a 10, è un multiplayer) sono concentrati in un settore
della mappa, anche i miei cputank devono concentrarsi li .....
prima di affrontare una cosa così nuova per me, vorrei chiedervi se esiste
documentazione in merito: mi spiacerebbe dovermi inventare l'acqua calda, e
ho dei dubbi sui risultati che potrei ottenere
se avete letto fino a qua, grazie 1000 e alla prox
Andrea


dai un'occhiata qua:
http://robocode.alphaworks.ibm.com/home/home.html
ti potrà essere utile in particolare come hanno scomposto il problema
Ciao
Chairam

 che potrei ottenere
IMHO, non c'e' modo migliore di imparare che re-inventare
l'acqua
calda, magari con un orecchio a chi l'ha gia' inventata.
Ti premetto inoltre che quanto detto in questa email e'
frutto di
mere supposizioni o letture sporadiche (quindi decisamente
IMO),
in quanto personalmente mi occupo di tutt'altro e non ho mai
affrontato problemi di questo tipo :P
Insomma, Just my 2 eurocent :D
Happy Coding =)
Lokar
-- 
UGIdotNET - 
http://www.ugidotnet.org

...

è un analogo dei crobots... prova a guardarti qualche robottino di
quelli, magari ti apre la mente anche se sono semplici e/o limitati
(Cerchiamo sempre di ridurci a forme più semplici... :))

 Lokar
Andrea

 fine delle mie fatiche,  di trovarmi con dei cputank troppo scarsi :-)
...
Ti consiglio di dare un'occhiata alla programmazione genetica; non 
prenderla come una soluzione definitiva, troverai soluzioni curiose anche 
se difficilmente ottimali. 
Imho in questo contesto ne vale sicuramente la pena.
Mieru

 Imho in questo contesto ne vale sicuramente la pena.
Trovo invece questa idea sia un'ottima soluzione...
Per altri scopi ho dovuto realizzare qualcosa di simile, non ho fatto un
tank
ma cmq un essere che deve muoversi in uno spazio bla bla... Potresti
fare cosi, se i giocatori hanno una mappa con tutti i tank (ipotizziamo che
sia la visione satellitare del campo di battaglia.. tanto per da
plausibilita' ;p)
Potresti dotare ogni unita' _intelligente_ di una rete cosi composta (poi
ovviamente te la sistemi come serve):
3 neuroni di input (uno per la distanza, uno per l'angolo [in radianti] e
uno
per il tipo)
5-6 neuroni nascosti
2 neuroni di output con uscita binaria...
Il neurone della distanza riceverebbe in input la distanza del tank piu'
vicino
(opportunamente normalizzata) sia esso amico o nemico, il secondo
prenderebbe l'angolo del tank rispetto a lui stesso e il terzo riceverebbe
il tipo (potresti mettere 0.5 se e' amico -0.5 se e' nemico) e l'uscita
avrebbe
4 valori che potresti ripartire come ti pare (1 1 avanti, 1 0 ruota a destra
e
vai avanti etc...) Ovviamente questa e' la forma piu' semplice che mi viene
in mente,
magari puoi aggiungere altri tre neuroni per fargli sapere sia dove si trova
il piu'
vicno tank amico che il piu vicino tank nemico. Metti questa roba in un algo
genetico
(dovrai trovarti una buona funzione di fitness ovviamente...) e il genoma
finale
lo puoi piazzare nella rete dei tuoi tank, dovrebbe andare, il tutto sta a
fare qualche
prova :) Buon lavoro, spero di averti chiarito qualche dubbio
Bonzo

 genetico (dovrai trovarti una buona funzione di fitness ovviamente...)
Mi sfugge il motivo per selezionare i pesi di una rete cosi' semplice con un
algoritmo genetico.
Puoi elaborare ?
Stefano

 Puoi elaborare ?
Puo' usare l'algoritmo di apprendimento che piu' desidera... Quella
dell'algo
genetico era solo una proposta, in linea di massima lo preferisco perche'
escon fuori comportamenti piu' naturali rispetto a quelli che puoi notare
con un EBP ad esempio... Che puo' tornare utile in determinati ambiti di
lavoro, magari per un game semplice anche una delta rule puo' andare
benissimo :)
A presto.