2

Je suis en train de faire un jeu de chars en pygame où vous déplacez un char autour des murs et tirez sur d'autres chars. J'essaie de trouver un moyen de créer un réseau de neurones, probablement un apprentissage de renforcement pour les ennemis afin que le jeu prenne des décisions sur les chars qui devraient se déplacer où, s'ils devraient tirer en passant des attributs de chaque objet.Python jeu réseau neuronal. Comment configurer les entrées

Attributes: 
Enemy -> x,y,width,height,speed,health and other items 
Wall -> x,y,width,height 
Bullet -> x,y,width,height,speed 
Player -> x,y,width,height,speed,health 

Je prévoyais d'utiliser le module python keras pour créer un réseau de neurones, mais je ne peux pas trouver un moyen de le configurer de sorte que les données d'entrée est la bonne forme et la taille car il y aura un nombre variable des murs et des balles.

Ce que je voudrais faire:

action = Network.predict(state) 


state = (Enemy, Player, Tuple_of_Wall_Data, Tuple_of_Bullet_Data)

et de l'action est une option sur l'endroit où l'ennemi doit se déplacer sous la forme
action = (Direction,Should_Shoot)

TLDR Mon question est, comment pourrais-je mettre en place une couche d'entrée de réseau neuronal de sorte qu'il peut prendre (1 ennemi, 1 joueur, m parois ultimes, balles multiples) et entraîner le réseau neuronal pour donner une direction à l'ennemi et s'il doit tirer en utilisant l'apprentissage par renforcement?

+1

Bienvenue dans StackOverflow! Dans l'ensemble, une bonne question, je vais juste recommander le titre soit édité pour le rendre plus spécifique. – edzillion

+0

Merci. Édité. – Scratchcat1

+1

Le problème que vous présentez est vraiment plus complexe que "simplement utiliser un réseau de neurones". Le plus grand défi est de créer la «bonne» représentation de vos données en tant que base pour un réseau de neurones (supervisé?). Répondre à votre question va probablement bien au-delà d'une simple réponse sur ce site. Je suggère une lecture d'introduction sur [concevoir le jeu IA] (https://www.raywenderlich.com/24824/introduction-to-ai-programming-for-games) [sur NN et les jeux] (http://natureofcode.com/book/chapter-10-neural-networks /) et [spécifiquement sur l'apprentissage par renforcement] (https://arxiv.org/pdf/1312.5602.pdf). – agtoever

Répondre

1

Il existe trois façons typiques de représenter l'état du jeu pour un agent AI:

  1. état du jeu interne, à peu près ce que vous proposez - la liste des objets dans le jeu, avec leurs attributs premières. Si vous voulez utiliser ML pour cela vous avez besoin d'une architecture qui traite de tailles variées, donc vous vous retrouvez probablement avec des réseaux neuronaux récurrents, traitant les objets un par un. Notez que ceci est probablement représentation fortement sous-optimale. En particulier en tant qu'humain, vous n'obtenez pas un état de jeu comme celui-ci, vous n'obtenez pas un flux d'objets.

  2. Vue globale de la carte. si le jeu a une carte assez petite, il peut être alimenté en entier en entrée de l'agent, on finit avec un problème entièrement observable, et les données de forme W x H x K, où W, H est la largeur et la hauteur de la carte , et K est le nombre de types d'objets (donc vous obtenez un codage à chaud de chaque objet)

  3. La "vision" de l'agent, qui est probablement la plus populaire dans le RL moderne, où l'agent est présenté à nouveau avec W x H x K, mais maintenant W et H sont la taille de sa vision (qui se déplace avec l'agent).