A avere un labirinto e un personaggio che è controllato dal giocatore e da un drone che deve trovarlo (da solo). Qualcuno conosce un (efficiente) algoritmo di intelligenza artificiale per fare qualcosa del genere? P.S. So che ci sono diversi algoritmi per trovare percorsi (ad esempio A *), ma per quanto ne so questi funzionano solo per trovare il percorso tra due nodi che "non si muovono" (questo funzionerebbe se il mio personaggio fosse fermo, ma quello è ovviamente non è il caso).Algoritmo (s) per trovare entità in movimento in un labirinto
risposta
Se il "punto di partenza" è il punto in cui si trova il drone e il "punto finale" deve essere eseguito nel lettore, il meglio che si può fare usando solo un algoritmo "standard" è usare A * periodicamente e da che determina dove deve muoversi il drone.
Come ci si avvicina al giocatore, si calcola sempre più velocemente poiché lo spazio di ricerca è, in teoria, più piccolo.
Usando questo, si sarebbe essere possibile per il giocatore di trovare una serie di posizioni che, quando ci si sposta tra di loro fa sì che il drone per ottenere "bloccato" semplicemente spostando avanti e indietro, ma questo genere di ottimizzazioni sono SITUAZIONE specifico e un algoritmo generale non li includerà.
In sostanza, è do avere uno spazio di ricerca fisso ogni "frame", ma è sufficiente eseguirlo ogni frame per decidere cosa fare.
Ci sono probabilmente ritocchi ad A * che coprono lievi perturbazioni tra le esecuzioni, ma non ne conosco nessuno in cima alla mia testa.
Questa è stata la prima cosa che ho pensato. Uno dei problemi con questa soluzione è che il calcolo del percorso potrebbe richiedere molto tempo al drone e quindi il suo movimento potrebbe essere simile a questo: spostarsi un po ', quindi fermarsi e calcolare, quindi spostarsi di nuovo, quindi calcolare di nuovo ecc. piace muoversi costantemente (un po 'come il modo in cui i fantasmi si muovono in pacman). – conectionist
Sono d'accordo, A * è probabilmente la scelta migliore. Avrai la capacità di fermare A * nel mezzo di un calcolo quando l'essere umano si è mosso. Dovrai inoltre aggiornare gli obiettivi di inizio e fine ogni volta che l'umano o il drone si sono spostati. Immagino che potresti anche usare qualcosa come l'algoritmo di Johnson per trovare tutti i percorsi più brevi tra tutte le possibili posizioni e quindi usarlo come tabella di ricerca. Questo dovrebbe funzionare se il labirinto non è dinamico. http://en.wikipedia.org/wiki/Johnson%27s_algorithm – Justin
@Justin - Mi piace l'idea della ricerca ... _ Molto più veloce che fare continuamente A *. Puoi usare la stessa idea memorizzata _with_ A * e memorizzare i risultati nella cache. Quindi costruirai lentamente la tabella di ricerca in base a dove sono e sono stati il giocatore e il drone, ignorando le parti "non visitate" del labirinto finché non saranno necessarie. – cdeszaq
Il drone conosce il layout del labirinto o deve scoprirlo così com'è? Inoltre, sa dove si trova il giocatore nel labirinto mentre si muove? – cdeszaq
A * richiede anche di conoscere in anticipo le posizioni dei punti di inizio e di fine. Il drone sa dove si trova il giocatore e deve solo raggiungerlo? Il nostro drone ha anche bisogno di localizzare il giocatore? –
@cdeszaq Sì, conosce il layout del labirinto (anche se non mi dispiacerebbe un algoritmo si presuppone che non lo sappia) e sì, lo sa dove il giocatore è nel labirinto. – conectionist