← Open Source
JuliaPOMDP

POMDPs.jl

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

Model DevelopmentReinforcement LearningJulia
Open on GitHub
Momentum
+0stars in 24 hours0.0%
770
Stars
106
Forks
+1
This week
32
Contributors
Created 2015-06-23 · Updated 2026-10-12 · #14002 today
Top developers

JuliaPOMDP/POMDPs.jl is ranked 14,002 with 770 stars.

Same-category comparison

JuliaPOMDP/POMDPs.jl is ranked 14,002 among these 8 peers; FlyMyAI/flymyai-lora-trainer is ranked 14,001.

Same-category comparison
NameRankMetrics
GalaxyGeneralRobotics/OpenTrack13,989
Language:
C++
Stars:
771
Forks:
56
Description:
Official implementation of Any2Track.
ayushoriginal/Sentiment-Analysis-Twitter13,991
Language:
Python
Stars:
771
Forks:
277
Description:
:mortar_board:RESEARCH [NLP :thought_balloon:] We use different feature sets and machine learning classifiers to determine the best combination for sentiment analysis of twitter.
wmcnally/kapao14,000
Language:
Python
Stars:
771
Forks:
104
Description:
KAPAO is an efficient single-stage human pose estimation model that detects keypoints and poses as objects and fuses the detections to predict human poses.
FlyMyAI/flymyai-lora-trainer14,001
Language:
Python
Stars:
770
Forks:
71
Description:
Qwen-Image text to image lora trainer.
facebookresearch/flores14,005
Language:
Python
Stars:
770
Forks:
136
Description:
Facebook Low Resource (FLoRes) MT Benchmark.
mila-iqia/babyai14,007
Language:
Python
Stars:
770
Forks:
152
Description:
BabyAI platform. A testbed for training agents to understand and execute language commands.
ErwannMillon/Color-diffusion14,012
Language:
Python
Stars:
769
Forks:
31
Description:
A diffusion model to colorize black and white images.
UM-ARM-Lab/pytorch_mppi14,014
Language:
Python
Stars:
769
Forks:
75
Description:
Model Predictive Path Integral (MPPI) with approximate dynamics implemented in pytorch.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguageJulia
CategoryModel Development
SubcategoryReinforcement Learning
KeywordsRL
Stars770
Forks106
Contributors32
Created date2015-06-23
Updated date2026-10-12
Stars in 1 day0
Stars in 7 days1
Rank14,002
Previous rank13,875
Rank change-127
7-day stars rank10,727
Previous 7-day stars rank10,779
7-day stars rank change52
Total stars rank13,769
Previous total stars rank13,745
Total stars rank change-24
CountryUSA
README summary

The POMDPTools package acts as a "standard library" for the POMDPs. jl interface, providing implementations of commonly-used components such as policies, belief updaters, distributions, and simulators. Our goal is to provide a common programming vocabulary for: 1. jl integrates with other ecosystems: Python can be used to define and solve MDPs and POMDPs via the quickpomdps package or through tables directly via pyjulia. POMDPTools provides two-way integration with CommonRLInterface and therefore with the JuliaReinforcementLearning packages. The SymbolicMDPs package

provides an interface to work with PDDL models. For a detailed introduction, check out our Julia Academy course! For help, please post in GitHub Discussions tab. jl and associated solver packages can be installed using Julia's package manager. jl and the QMDP solver package, type the following in the Julia REPL: 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): For more examples and examples with visualizations, reference the Examples and Gallery of POMDPs. jl Problems sections of the documentaiton. Documentation and Tutorials In addition to the above-mentioned Julia Academy course, detailed documentation and examples can be found here. Supported Packages Many packages use the POMDPs. jl interface, including MDP and POMDP solvers, support tools, and extensions to the POMDPs. jl and all packages in the

JuliaPOMDP project are fully supported on Linux. OSX and Windows are supported for all native solvers\*, and most non-native solvers should work, but may require additional configuration. 3 Subjective rating; File an issue if you believe one should be changed ★★★★★: Reliably Computes solution for every problem. May require some configuration, or not support every edge of interface. ★★★: May work well, but could require difficult or significant configuration.

Frequently asked questions

How many stars and forks are recorded?

JuliaPOMDP/POMDPs.jl has 770 stars and 106 forks.

What is the repository rank?

JuliaPOMDP/POMDPs.jl is ranked 14,002.

What language and category are recorded?

JuliaPOMDP/POMDPs.jl has 770 stars, uses Julia and belongs to Model Development.

Which repository is closest in rank?

JuliaPOMDP/POMDPs.jl is compared with FlyMyAI/flymyai-lora-trainer, ranked 14,001 with 770 stars.

README

POMDPs

Linux Mac OS X Windows

This package provides a core interface for working with Markov decision processes (MDPs) and partially observable Markov decision processes (POMDPs). The POMDPTools package acts as a "standard library" for the POMDPs.jl interface, providing implementations of commonly-used components such as policies, belief updaters, distributions, and simulators.

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.

POMDPs.jl integrates with other ecosystems:

For a detailed introduction, check out our Julia Academy course! 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")

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, POMDPTools, 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: $([s=>pdf(b,s) for s in states(m)]), a: $a, o: $o")
    global rsum += r
end
println("Undiscounted reward was $rsum.")

For more examples and examples with visualizations, reference the Examples and Gallery of POMDPs.jl Problems sections of the documentaiton.

Documentation and Tutorials

In addition to the above-mentioned Julia Academy course, detailed documentation and examples can be found here.

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. OSX and Windows are supported for all native solvers*, and most non-native solvers should work, but may require additional configuration.

Tools:

POMDPs.jl itself contains only the core interface for communicating about problem definitions; these packages contain implementations of commonly-used components:

Package Build Coverage
POMDPTools (hosted in this repository)
ParticleFilters
GaussianFilters

Implemented Models:

Many models have been implemented using the POMDPs.jl interface for various projects. This list contains a few commonly used models:

Package Build Coverage
POMDPModels
LaserTag
RockSample
TagPOMDPProblem
DroneSurveillance
ContinuumWorld
VDPTag2
RoombaPOMDPs

MDP solvers:

| Package | Build/Coverage | Online/
Offline | Continuous
States - Actions | Rating3 | |-------------------|----------------------|----------------------|-------------------------|--| | DiscreteValueIteration |
| Offline | N-N | ★★★★★ | | LocalApproximationValueIteration |
| Offline | Y-N | ★★ | | GlobalApproximationValueIteration |
| Offline | Y-N | ★★ | | MCTS (Monte Carlo Tree Search) |
| Online | Y (DPW)-Y (DPW) | ★★★★ |

POMDP solvers:

| Package | Build/Coverage | Online/
Offline | Continuous
States-Actions-Observations | Rating3 | |-------------------|----------------------|--------------------|---------------------------|--| | QMDP (suboptimal) |
| Offline | N-N-N | ★★★★★ | | AdaOPS |
| Online | Y-N-Y | ★★★★ | | ARDESPOT |
| Online | Y-N-N1 | ★★★★ | | BasicPOMCP |
| Online | Y-N-N1 | ★★★★ | | CompressedBeliefMDPs |

| Offline | Y-Y-Y | ★★★★ | | NativeSARSOP |
| Offline | N-N-N | ★★★★ | | POMCGraphSearch | | Offline | Y-Y-Y | ★★★★ | | SARSOP* |
| Offline | N-N-N | ★★★★ | | GapHeuristicSearch |
| Online | ?-?-? | ★★★ | | IncrementalPruning |
| Offline | N-N-N | ★★★ | | ParticleFilterTrees (SparsePFT, PFT-DPW) |
| Online | Y-Y2-Y | ★★★ | | POMCPOW |
| Online | Y-Y2-Y | ★★★ | | POMDPSolve* |
| Offline | N-N-N | ★★★ | | AEMS |
| Online | N-N-N | ★★ | | BeliefGridValueIteration |
| Offline | N-N-N | ★★ | | FIB (suboptimal) |
| Offline | N-N-N | ★★ | | MCVI |
| Offline | Y-N-Y | ★★ | | PointBasedValueIteration |
| 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. See also https://github.com/michaelhlim/VOOTreeSearch.jl.

Reinforcement Learning:

| Package | Build/Coverage | Continuous
States | Continuous
Actions | Rating3 | |-------------------|----------------------|------------------|------------------|--| | TabularTDLearning |
| N | N | ★★ | | DeepQLearning |
| Y1 | N | ★★★ | | Crux |
| Y | Y | ★★★★ |

1: For POMDPs, it will use the observation instead of the state as input to the policy.

3 Subjective rating; File an issue if you believe one should be changed

  • ★★★★★: Reliably Computes solution for every problem.
  • ★★★★: Works well for most problems. May require some configuration, or not support every edge of interface.
  • ★★★: May work well, but could require difficult or significant configuration.
  • ★★: Not recently used (unknown condition). May not conform to interface exactly, or may have package compatibility issues
  • ★: Not known to run

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}
}
Nearby in the ranking
Similar items