Frage

Ich habe einen Agenten bekommen, die in Staaten und kehren Aktionen nimmt, während eine interne Darstellung des Nutzens der Zustands / Aktions-Paare zu halten. Ich habe auch eine Umgebung, die in Aktionen nimmt und Staat / Lohn-Paare.

Ich brauche die Agenten nach oben mit einem Startzustand versetzen zu können und dann gehe kontinuierlich von Agenten - (Aktion) -> Umwelt - (Staat, Lohn) -> Agent - (action) -> ... Allerdings sind die internen Zustände (die jede Iteration aktualisiert werden müssen) müssen privat bleiben (das heißt, innerhalb des Agenten oder der Umwelt). Das bedeutet, dass ich nicht einfach Umgebung als eine Funktion innerhalb des Agenten aufrufen können Zustand und Aktion als Argumente verwendet wird.

Ich bin so etwas wie ein Haskell noobie, also bin ich nicht einmal sicher, ob dies möglich ist.

War es hilfreich?

Lösung

Zwei Fragen:

  • Wenn der Agent einen Zustand verwenden muß, um eine Aktion zu berechnen, dann wie wollen Sie die Darstellung von Zuständen Geheimnis von dem Agenten zu halten erwarten?

  • Wenn die Umgebung erwartet einen Zustand (und eine Belohnung) gegeben um eine Aktion zu produzieren, wie Sie das tun erwarten, dass die Darstellung von Zuständen Geheimnis aus der Umgebung zu halten?

Beide sind möglich, aber jeder irgendeine Art von Abstraktion für die Abfrage von Staaten oder das Erstellen von Staaten einbezogen werden müssen. Ich habe kein gutes Gefühl bei diesem Entwurf haben.

Es würde helfen, die Frage nach

zu klären
  • Die Bereitstellung Typ Signaturen für die Funktionen von Interesse

  • Die Identifizierung auf welche Funktionen Sie die Darstellung von Staaten wollen nicht ausgesetzt werden.

P. S. Diese Schwierigkeiten sind ganz trennbar von Haskell und würden in Frage sein, unabhängig von der Wahl der Implementierungssprache (vorausgesetzt, dass die Implementierungssprache unterstützt einig Form der Privatsphäre).

Andere Tipps

Sie müssen entscheiden, welche von den Agenten und die Umwelt sitzt „on top“ -. Lassen Sie uns für den Rest dieser Antwort nehme an, dass es die Umwelt an der Spitze ist in den Agenten anrufen, da diese im Allgemeinen am meisten Sinn macht

Sie können Datendarstellungen des Agenten halten Privat das Modul-System - nur den Datentyp Namen, ohne seine Einbauten exportieren.

module Agent (AgentState, other_stuff) where

als opposd zu

module Agent (AgentState(..), other_stuff) where

Wenn der Agent muss auch die staatliche Umgebung übergeben werden (obwohl ich keinen Grund sehen, kann dies notwendig sein würde, wie die Umwelt verfolgen es für sich behalten kann), dann der Agent polymorphe Funktionen machen, so dass sie sein können geben jeder State-Typ -. dann kann die Umgebung passieren, was es mag in ohne seine Darstellung ausgesetzt

Es sollte auch möglich sein Zustand Monaden zu verwenden, um mehr Kontrolle über das zu erreichen, was dem Zustand der Fall ist, zum Beispiel aus der Umgebung verhindert einen Zustand der Agent gibt es duplizieren und den Agenten wiederholt mit dem gleichen Zustand nennen, aber wenn Sie‘ re neu Haskell es ist wahrscheinlich am besten ein wenig Erfahrung zunächst ohne Monaden zu bekommen. (Nicht, dass Monaden sind besonders beängstigend oder etwas, aber sie tun verstecken Detail von Ihnen, so dass es schwieriger ist, zu sehen, was los ist.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top