Une fois connecté, le client envoit le message
"start"
au serveur.
Le serveur répond en envoyant une description textuelle du système. Il
s'agit de 4 nombres représentant, dans l'ordre, la position du
véhicule, la vitesse du véhicule, l'angle du bras, la vitesse angulaire
du bras.
Par exemple : "1.700,-4.0,0.131,-0.21"
S'en suit une boucle d'interactions entre le client et le serveur. Le
client répond au serveur en envoyant une des trois actions suivantes :
"<" : appliquer une force vers la gauche.
">" : appliquer une force vers la droite.
"=" : ne rien faire.
Lorsque le pendule touche le sol ou lorsque le chariot quitte la
zone de jeu, le serveur envoit le message
"Game over".
Par défaut, le client essaie de contacter le serveur à l'adresse
"localhost",
sur le port 1980. Les arguments de la ligne de commande peuvent être
utilisés pour modifier l'adresse et le port.
Un serveur de test est actif à l'adresse
"xprov.org",
sur le port 1980.
Ok, pour être honnête, l'architecture client-serveur est beaucoup trop lente pour faire de l'apprentissage machine. Une implémentation C++ d'un programme effectuant l'entrainement d'un IA qui utilise une Q-matrice est disponible ici : trainer.zip.