1

Je travaille sur un projet de combiner l'apprentissage par renforcement avec des simulations de feux de circulation en utilisant le package Pybrain. J'ai lu le tutoriel et mis en œuvre mes propres sous-classes de Environment et Task. J'utilise un ActionValueNetwork comme contrôleur parce que je veux que mon état soit un vecteur avec des valeurs continues telles qu'il puisse contenir des informations sur par exemple le nombre de voitures qui attendent sur chaque voie, le temps d'attente total par voie et plus.Pybrain renforcement de l'apprentissage; dimension de l'état

Je définis les dimensions d'entrée du ActionValueNetwork aux dimensions de mon vecteur d'état, ce qui suggère qu'il est possible d'utiliser des vecteurs comme variables d'état. Quand j'utilise le Q-learner ou l'apprenant SARSA, le code fonctionne bien au début mais j'obtiens un message d'erreur dès que la méthode learn() est appelée. Cette fonction contient la ligne

state = int(state) 

et le message d'erreur est

TypeError: only length-1 arrays can be converted to Python scalars 

qui suggère que seuls les Etats en forme de scalaires peuvent être utilisés. L'environnement d'apprentissage par renforcement de pybrain prend-il en charge les états en forme de vecteur? Si oui, comment puis-je modifier mon code de sorte qu'il fonctionnera avec leurs implémentations de Q-learning ou d'autres méthodes?

Répondre

1

J'ai trouvé mon problème entre-temps. J'utilisais l'apprenant Q() mais j'aurais dû utiliser l'apprenant NFQ() qui implémente le neural-fitted Q-learning algorithm. Maintenant ça marche.