All Projects β†’ JuliaPOMDP β†’ Pomdps.jl

JuliaPOMDP / Pomdps.jl

Licence: other
MDPs and POMDPs in Julia - An interface for defining, solving, and simulating fully and partially observable Markov decision processes on discrete and continuous spaces.

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Pomdps.jl

Free Ai Resources
πŸš€ FREE AI Resources - πŸŽ“ Courses, πŸ‘· Jobs, πŸ“ Blogs, πŸ”¬ AI Research, and many more - for everyone!
Stars: ✭ 192 (-43.2%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Applied Reinforcement Learning
Reinforcement Learning and Decision Making tutorials explained at an intuitive level and with Jupyter Notebooks
Stars: ✭ 229 (-32.25%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Dm control
DeepMind's software stack for physics-based simulation and Reinforcement Learning environments, using MuJoCo.
Stars: ✭ 2,592 (+666.86%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Elf
An End-To-End, Lightweight and Flexible Platform for Game Research
Stars: ✭ 2,057 (+508.58%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Rl4j
Deep Reinforcement Learning for the JVM (Deep-Q, A3C)
Stars: ✭ 330 (-2.37%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Atari
AI research environment for the Atari 2600 games πŸ€–.
Stars: ✭ 174 (-48.52%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Evostra
A fast Evolution Strategy implementation in Python
Stars: ✭ 227 (-32.84%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Airsim
Open source simulator for autonomous vehicles built on Unreal Engine / Unity, from Microsoft AI & Research
Stars: ✭ 12,528 (+3606.51%)
Mutual labels:  artificial-intelligence, control-systems
He4o
ε’ŒοΌˆhe for objective-cοΌ‰ β€”β€” β€œδΏ‘ζ―η†΅ε‡ζœΊη³»η»Ÿβ€
Stars: ✭ 284 (-15.98%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Dreamer
Dream to Control: Learning Behaviors by Latent Imagination
Stars: ✭ 269 (-20.41%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Awesome Ml Courses
Awesome free machine learning and AI courses with video lectures.
Stars: ✭ 2,145 (+534.62%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Gdrl
Grokking Deep Reinforcement Learning
Stars: ✭ 304 (-10.06%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Mindpark
Testbed for deep reinforcement learning
Stars: ✭ 163 (-51.78%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Adeptrl
Reinforcement learning framework to accelerate research
Stars: ✭ 173 (-48.82%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Awesome Ai
A curated list of artificial intelligence resources (Courses, Tools, App, Open Source Project)
Stars: ✭ 161 (-52.37%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Amazing Machine Learning Opensource 2019
Amazing Machine Learning Open Source Tools and Projects for the Past Year (v.2019)
Stars: ✭ 198 (-41.42%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Flappy Es
Flappy Bird AI using Evolution Strategies
Stars: ✭ 140 (-58.58%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Java Deep Learning Cookbook
Code for Java Deep Learning Cookbook
Stars: ✭ 156 (-53.85%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Polyaxon
Machine Learning Platform for Kubernetes (MLOps tools for experimentation and automation)
Stars: ✭ 2,966 (+777.51%)
Mutual labels:  artificial-intelligence, reinforcement-learning
Dreamerv2
Mastering Atari with Discrete World Models
Stars: ✭ 287 (-15.09%)
Mutual labels:  artificial-intelligence, reinforcement-learning

POMDPs

Linux Mac OS X Windows
Build Status Build Status Build Status

Docs Dev-Docs Gitter Slack

This package provides a core interface for working with Markov decision processes (MDPs) and partially observable Markov decision processes (POMDPs). For examples, please see POMDPExamples, QuickPOMDPs, and the Gallery.

Our goal is to provide a common programming vocabulary for:

  1. Expressing problems as MDPs and POMDPs.
  2. Writing solver software.
  3. Running simulations efficiently.

There are several ways to define (PO)MDPs:

  • Transition and observation distributions and rewards can be defined separately with explicit or implicitly sampled distributions.
  • All of the dynamics can be defined in a single generative model function: (s', o, r) = G(s,a).
  • Problems may be defined with probability tables.
  • The QuickPOMDPs interfaces make defining simple problems easier.

POMDPs.jl integrates with other ecosystems:

For help, please post in GitHub Discussions tab. We welcome contributions from anyone! See CONTRIBUTING.md for information about contributing.

Installation

POMDPs.jl and associated solver packages can be installed using Julia's package manager. For example, to install POMDPs.jl and the QMDP solver package, type the following in the Julia REPL:

using Pkg; Pkg.add("POMDPs"); Pkg.add("QMDP")

Some auxiliary packages and older versions of solvers may be found in the JuliaPOMDP registry. To install this registry, see the installation instructions.

Quick Start

To run a simple simulation of the classic Tiger POMDP using a policy created by the QMDP solver, you can use the following code (note that POMDPs.jl is not limited to discrete problems with explicitly-defined distributions like this):

using POMDPs, QuickPOMDPs, POMDPModelTools, POMDPSimulators, QMDP

m = QuickPOMDP(
    states = ["left", "right"],
    actions = ["left", "right", "listen"],
    observations = ["left", "right"],
    initialstate = Uniform(["left", "right"]),
    discount = 0.95,

    transition = function (s, a)
        if a == "listen"
            return Deterministic(s) # tiger stays behind the same door
        else # a door is opened
            return Uniform(["left", "right"]) # reset
        end
    end,

    observation = function (s, a, sp)
        if a == "listen"
            if sp == "left"
                return SparseCat(["left", "right"], [0.85, 0.15]) # sparse categorical distribution
            else
                return SparseCat(["right", "left"], [0.85, 0.15])
            end
        else
            return Uniform(["left", "right"])
        end
    end,

    reward = function (s, a)
        if a == "listen"
            return -1.0
        elseif s == a # the tiger was found
            return -100.0
        else # the tiger was escaped
            return 10.0
        end
    end
)

solver = QMDPSolver()
policy = solve(solver, m)

rsum = 0.0
for (s,b,a,o,r) in stepthrough(m, policy, "s,b,a,o,r", max_steps=10)
    println("s: $s, b: $([pdf(b,s) for s in states(m)]), a: $a, o: $o")
    global rsum += r
end
println("Undiscounted reward was $rsum.")

For more examples with visualization see POMDPGallery.jl.

Tutorials

Several tutorials are hosted in the POMDPExamples repository.

Documentation

Detailed documentation can be found here.

Docs Docs

Supported Packages

Many packages use the POMDPs.jl interface, including MDP and POMDP solvers, support tools, and extensions to the POMDPs.jl interface. POMDPs.jl and all packages in the JuliaPOMDP project are fully supported on Linux and OS X. Windows is supported for all native solvers*, and most non-native solvers should work, but may require additional configuration.

Tools:

POMDPs.jl itself contains only the interface for communicating about problem definitions. Most of the functionality for interacting with problems is actually contained in several support tools packages:

Package Build Coverage
POMDPModelTools Build Status Coverage Status
BeliefUpdaters Build Status Coverage Status
POMDPPolicies Build Status Coverage Status
POMDPSimulators Build Status Coverage Status
POMDPModels Build Status Coverage Status
POMDPTesting Build Status Coverage Status
ParticleFilters Build Status codecov.io
RLInterface Build Status Coverage Status

MDP solvers:

Package Build/Coverage Online/
Offline
Continuous
States
Continuous
Actions
Value Iteration Build Status
Coverage Status
Offline N N
Local Approximation Value Iteration Build Status
Coverage Status
Offline Y N
Global Approximation Value Iteration Build Status
Coverage Status
Offline Y N
Monte Carlo Tree Search Build Status
Coverage Status
Online Y (DPW) Y (DPW)

POMDP solvers:

Package Build/Coverage Online/
Offline
Continuous
States
Continuous
Actions
Continuous
Observations
QMDP Build Status
Coverage Status
Offline N N N
FIB Build Status
Coverage Status
Offline N N N
BeliefGridValueIteration Build Status
codecov
Offline N N N
SARSOP* Build Status
Coverage Status
Offline N N N
BasicPOMCP Build Status
Coverage Status
Online Y N N1
ARDESPOT Build Status
Coverage Status
Online Y N N1
MCVI Build Status
Coverage Status
Offline Y N Y
POMDPSolve* Build Status
Coverage Status
Offline N N N
IncrementalPruning Build Status
Coverage Status
Offline N N N
POMCPOW Build Status
Coverage Status
Online Y Y2 Y
AEMS Build Status
Coverage Status
Online N N N
PointBasedValueIteration Build status
Coverage Status
Offline N N N

1: Will run, but will not converge to optimal solution

2: Will run, but convergence to optimal solution is not proven, and it will likely not work well on multidimensional action spaces

Reinforcement Learning:

Package Build/Coverage Continuous
States
Continuous
Actions
TabularTDLearning Build Status
Coverage Status
N N
DeepQLearning Build Status
Coverage Status
Y1 N

1: For POMDPs, it will use the observation instead of the state as input to the policy. See RLInterface.jl for more details.

Packages Awaiting Update

These packages were written for POMDPs.jl in Julia 0.6 and have not been updated to 1.0 yet.

Package Build Coverage
DESPOT Build Status Coverage Status

Performance Benchmarks:

Package
DESPOT

*These packages require non-Julia dependencies

Citing POMDPs

If POMDPs is useful in your research and you would like to acknowledge it, please cite this paper:

@article{egorov2017pomdps,
  author  = {Maxim Egorov and Zachary N. Sunberg and Edward Balaban and Tim A. Wheeler and Jayesh K. Gupta and Mykel J. Kochenderfer},
  title   = {{POMDP}s.jl: A Framework for Sequential Decision Making under Uncertainty},
  journal = {Journal of Machine Learning Research},
  year    = {2017},
  volume  = {18},
  number  = {26},
  pages   = {1-5},
  url     = {http://jmlr.org/papers/v18/16-300.html}
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].