[PYTHON] Öffnen Sie AI Gym, um mit PD-gesteuertem Cart Pole zu lernen

Ich habe es gepostet, weil es gut funktioniert hat, als ich CartPole-v0 von OpenAI Gym mit PD-Steuerung verschoben habe. Die Verwendung ist zu unterschiedlich, aber ich denke, es reicht als Demo aus, um zu lernen, wie man es verwendet.

Der Steueralgorithmus ist eine PD-Steuerung mit positiven und negativen Klatschen (dh -1 oder +1).

Der Code ist unten. Alle detaillierten Erklärungen sind im Code geschrieben. Es ist auch auf github aufgeführt.

cart_pole_pd.py


# coding : utf-8

#CartPole mit PD-Kontrollmittel klatschte positiv und negativ-Demonstration von v0

#Bedeutung des Wertes
#  observation : [Wagenposition(Einheit unbekannt),Wagengeschwindigkeit(Einheit unbekannt),Polwinkel(Radian),Polwinkelgeschwindigkeit(Einheit unbekannt)]
#  action : 0->-1, 1->+1
#  step : 100step =1 Sekunde
#Ausgangsbedingungen:Neigen Sie mehr als 15 Grad oder 2.4(Einheit unbekannt)Bewegen Sie sich von der Mitte oder 200 Stufen

import agents
import gym
from gym import wrappers

video_path = './video' #Pfad zum Speichern des Videos
n_episode = 1 #Anzahl der Folgen
n_step = 200 #Anzahl der Schritte
#PD-Steuerparameter(Übrigens funktioniert es nicht, wenn nur die P-Steuerung verwendet wird.)
#* Da es positiv und negativ geklatscht ist, ist nur das Verhältnis von Bedeutung
kp = 0.1
kd = 0.01

myagent = agents.PDAgent(kp, kd) #PD-Kontrollmittel durch positiv und negativ geklatscht
env = gym.make('CartPole-v0') #Schaffung einer Umgebung
#Wrap-Klasse für eine Umgebung, in der Videos im angegebenen Verzeichnis gespeichert werden
# force=True: Vorherige Überwachungsdatei automatisch löschen
env = wrappers.Monitor(env, video_path, force=True)
for i_episode in range(n_episode):
    observation = env.reset() #Umgebungsinitialisierung und erste Beobachtungserfassung
    for t in range(n_step):
        env.render() #Umgebung anzeigen(Es wird jedoch ohne Verwendung von Monitor angezeigt)
        print(observation)
        action = myagent.action(observation) #Holen Sie sich die Aktion von der Agentenklasse
        observation, reward, done, info = env.step(action) #Mach einen Schritt
        if done: #Flag beenden
            print('Episode finished after {} timesteps'.format(t+1))
            break

agents.py


# coding: utf-8

import random

#Zufälliger Agent
class RandomAgent():
    def action(self):
        return random.randint(0, 1) #Gibt eine ganzzahlige Zufallszahl im Bereich von 0 oder mehr und 1 oder weniger zurück

#PD-Kontrollmittel durch positiv und negativ geklatscht
class PDAgent():
    def __init__(self, kp, kd):
        self.kp = kp
        self.kd = kd

    def action(self, observation):
        m = self.kp * observation[2] + self.kd * observation[3] #Betriebsmenge berechnen
        if m >= 0:
            return 1
        if m < 0:
            return 0

Recommended Posts

Öffnen Sie AI Gym, um mit PD-gesteuertem Cart Pole zu lernen
Lösen Sie OpenAI Gym Copy-v0 mit Q-Learning
Löse OpenAI Gym Copy-v0 mit Sarsa
Lernen Sie mit Chainer, monochrome Bilder einzufärben
Fordern Sie DQN (Modoki) mit Chainer heraus ✕ Öffnen Sie AI Gym!
Vorbereitung auf das Erlernen technischer Indikatoren mit TFlearn
[Computer Vision] Epipolare Geometrie mit Katzen gelernt
Ich habe versucht, mit TF Learn die logische Operation zu lernen
Lernen Sie mit Caffe, handschriftliche Zahlen (MNIST) zu erkennen
So entwickeln Sie eine Cart-App mit Django
AWS-Schrittfunktionen zum Lernen anhand eines Beispiels
Wie man Kaldi mit JUST Corpus trainiert
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
Site-Zusammenfassung zum Erlernen des maschinellen Lernens mit englischen Videos
Erstellen Sie eine Open AI Gym-Umgebung mit Bash unter Windows 10
Wie man strukturiertes SVM von ChainCRF mit PyStruct lernt
[How to!] Lerne und spiele Super Mario mit Tensorflow !!
MVC-Model Edition, um nur mit Voreingenommenheit von 0 zu lernen