palaestrAI: A Training Ground for Autonomous Agents#
About#
palaestrAI is a distributed framework to train and test all kinds of autonomous agents. It provides interfaces to any environment, be it OpenAI Gym or co-simulation environments via mosaik. palaestrAI can train and test any kind of autonomous agent in these environments: From Deep Reinforcement Learning (DRL) algorithms over model-based to simple rule-based agents, all can train and test with or against each other in a shared environment.
In short, palaestrAI can…
…train and test one or more agent of any algorithm
…place the agents on one or several environments at once, depending on the agents’ algorithm
…provides facilities to define and reproducibly run experiments
palaestrAI is the core framework of a whole ecosystem:
hARL provides implementations of several DRL algorithms and interfaces to existing DRL libraries.
arsenAI provides all facilities needed for proper design of experiments.
palaestrai-mosaik is a interface to the mosaik co-simulation software
palaestrai-environments provides a number of simple, easy to use environments for playing with palaestrAI
Use Cases#
palaestrAI is the framework for the Adversarial Resilience Learning (ARL) reference implementation. The ARL core concept consists of two agents, attacker and defender agents, working an a common model of a cyber-phyiscal system (CPS). The attacker’s goal is to de-stabilize the CPS, whereas the defender works to keep the system in a stable and operational state. Both agents do not perceive their opponent’s actions directly, but only the state of the CPS itself. This imples that none of the agents knows whether anything they perceive through their sensors is the result of the dynamics of the CPS itself or of another agent’s action. Also, none of the agents has an internal model of the CPS. Attacker and defender alike have to explore the CPS given their sensors and actuators independently and adapt to it. ARL is, in that sense, suitable to a reinforcement learning approach. Combined with the fact the both agents do not simply learn the CPS, but also its respective opponent, ARL implements system-of-systems deep reinforcement learning.
- Installation and Setup
- palaestrAI Quick Start Guide
- Tutorials
- PalaestrAI CLI
- Experiment Scheduler
- Experiment Run Documents
- Access results
- Runtime Configuration: Tweaking how palaestrAI Executes
- Using Your Algorithms with palaestrAI
- Reward
- Memory
- Implementing Environments
- Contributing and Development
- Internal Architecture
- palaestrAI API
- Subpackages
- palaestrai.agent
- palaestrai.cli package
- palaestrai.core package
- Submodules
- palaestrai.core.MDP module
- palaestrai.core.basic_state module
- palaestrai.core.major_domo_broker module
MajorDomoBroker
MajorDomoBroker.HEARTBEAT_EXPIRY
MajorDomoBroker.HEARTBEAT_INTERVAL
MajorDomoBroker.HEARTBEAT_LIVENESS
MajorDomoBroker.INTERNAL_SERVICE_PREFIX
MajorDomoBroker.bind()
MajorDomoBroker.dispatch()
MajorDomoBroker.mediate()
MajorDomoBroker.process_client()
MajorDomoBroker.purge_workers()
MajorDomoBroker.require_worker()
MajorDomoBroker.send_heartbeats()
MajorDomoBroker.send_to_worker()
MajorDomoBroker.service_internal()
MajorDomoBroker.worker_waiting()
Service
Worker
- palaestrai.core.major_domo_client module
- palaestrai.core.major_domo_worker module
- palaestrai.core.runtime_config module
- palaestrai.core.serialisation module
- palaestrai.core.zhelpers module
- Module contents
- palaestrai.entrypoints package
- palaestrai.environment package
- palaestrai.environment.Environment: Environment Base Class
- palaestrai.environment.EnvironmentBaseline: Inital Environment Data
- palaestrai.environment.EnvironmentState: Current State of an Environment
- palaestrai.environment.DummyEnvironment: Minimal Working Dummy Environment
- palaestrai.environment.EnvironmentConductor: Environment Lifecycle Management
- palaestrai.experiment package
- Submodules
- palaestrai.experiment.executor module
- palaestrai.experiment.experiment_run module
ExperimentRun
ExperimentRun.SCHEMA_FILE
ExperimentRun.agent_conductors()
ExperimentRun.canonical_config
ExperimentRun.check_syntax()
ExperimentRun.constr_randomstate()
ExperimentRun.create_subseed()
ExperimentRun.environment_conductors()
ExperimentRun.get_episodes()
ExperimentRun.get_phase_name()
ExperimentRun.has_next_phase()
ExperimentRun.instance_uid
ExperimentRun.load()
ExperimentRun.num_phases
ExperimentRun.phase_configuration()
ExperimentRun.repr_randomstate()
ExperimentRun.save()
ExperimentRun.setup()
ExperimentRun.simulation_controllers()
RunDefinitionError
update_dict()
- palaestrai.experiment.run_governor module
- palaestrai.experiment.termination_condition module
- palaestrai.experiment.vanilla_rungovernor_termination_condition module
- Module contents
- palaestrai.simulation package
- Submodules
- palaestrai.simulation.vanilla_sim_controller module
VanillaSimController
VanillaSimController.access_list()
VanillaSimController.agent_update()
VanillaSimController.collect_actuators()
VanillaSimController.continue_simulation()
VanillaSimController.get_agent_updates()
VanillaSimController.get_env_update()
VanillaSimController.handle_env_reset()
VanillaSimController.handle_env_update()
VanillaSimController.perform_restart()
VanillaSimController.send_termination_request()
VanillaSimController.simulation()
VanillaSimController.simulation_shutdown()
- palaestrai.simulation.vanilla_simcontroller_termination_condition module
- Module contents
- palaestrai.store package
- Submodules
- palaestrai.store.database_base module
- palaestrAI’s Object-Relational Mapper: palaestrai.store.database_model module
- palaestrai.store.database_util module
- palaestrai.store.receiver module
- Module contents
- palaestrai.types package
- palaestrai.util package
- Submodules
- palaestrai.util.dynaloader module
- palaestrai.util.exception module
AgentConductorFailedError
BrainMuscleConnectionFailedError
DeadChildrenRisingAsZombiesError
EnvConductorFailedError
EnvironmentHasNoUIDError
ExperimentAlreadyRunningError
ExperimentSetupFailedError
InitializationFailedError
InvalidRequestError
InvalidResponseError
NoneInputError
OutOfActionSpaceError
OutOfObservationSpaceError
PrematureTaskDeathError
ReplyIsNoneError
RequestIsNoneError
SignalInterruptError
SimControllerFailedError
SimulationSetupError
TasksNotFinishedError
UnknownModeError
- palaestrai.util.logserver module
- palaestrai.util.seeding module
- palaestrai.util.spawn module
- Module contents
- Module contents
- Subpackages