GithubHelp home page GithubHelp logo

juliapomdp / pomcp.jl Goto Github PK

View Code? Open in Web Editor NEW
12.0 7.0 6.0 630 KB

Julia Implementation of the POMCP algorithm for solving POMDPs

License: Other

Julia 41.36% Jupyter Notebook 58.64%
tree-search pomdps markov-decision-processes monte-carlo-planning

pomcp.jl's Introduction

POMCP (Deprecated)

This package is now unmaintained and DEPRECATED in favor of BasicPOMCP.jl and POMCPOW.jl

Build Status Coverage Status

The Partially Observable Monte Carlo Planning (POMCP) online solver for POMDPs.jl.

Described in

Silver, D., & Veness, J. (2010). Monte-Carlo Planning in Large POMDPs. In Advances in neural information processing systems (pp. 2164โ€“2172). Retrieved from http://discovery.ucl.ac.uk/1347369/

Installation

Using POMDPs.jl (should automatically take care of dependencies)

Pkg.add("POMDPs")
import POMDPs
POMDPs.add("POMCP")

OR (some optional dependencies may be missing)

Pkg.clone("https://github.com/juliapomdp/POMCP.jl.git")

Documentation

Documentation can be found at http://juliapomdp.github.io/POMCP.jl/latest/ (generated by Documenter.jl)

A minimal example showing the functions required to use the package is here: https://github.com/JuliaPOMDP/POMCP.jl/blob/master/notebooks/Minimal_Example.ipynb

pomcp.jl's People

Contributors

cho3 avatar etotheipluspi avatar maximebouton avatar michaelhatherly avatar zsunberg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

pomcp.jl's Issues

Particle filter tester

It might be nice to have some code to test particle filters without running all of pomcp

Prior Knowledge

Need to provide a mechanism to incorporate additional prior knowledge like in MCTS once we figure out the best way to do that.

Overhaul

Recent experience shows that this package can be significantly improved. There are two really important things that should be done:

  1. This package can be greatly simplified by by making it only an implementation of the vanilla POMCP algorithm. DPW and the capability to use arbitrary belief updaters should be in separate packages. They are sufficiently different.
  2. The speed could probably be improved by an order of magnitude for problems with fast state updates by getting rid of the small dictionaries at every node and investigating type stability

No need to update beliefs on tree in some cases

If a custom belief updater is used, there is usually no need to update the beliefs in the tree (this is only the case if the belief is used in the rollout).

I should add an option to turn this off.

running tree visualization breaks profileview

If you run tree visualization, and then attempt to run pofileview, the javascript breaks and the labels for profileview don't show.

A quick fix is to refresh the kernel and refresh the browser window, and rerun only the profileview code.

Precompilation

For an online solver like POMCP that is stopped based on a timeout, I need to make sure that compilation time is not counted against the timeout for the first step. Does anyone know if there is a standard way to make sure that certain functions are precompiled in julia?

Error with -Inf rewards

As @juliohm found, If rewards of -Inf are used, solver.jl line 137 will end up with NaN and there will eventually be hard-to-diagnose errors.

Behavior for this needs to be defined and tested.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.