Skip to main content

Open-source framework for solving the Planner Optimization Problem

Project description

OPOF, the Open-Source Planner Optimization Framework, is an open source framework for developing domains and algorithms for planner optimization. It provides a standard API to communicate between optimization algorithms and domains, along with a set of stable algorithm implementations.

Our complete documentation is available at https://opof.kavrakilab.org.

Build and Test

OPOF is developed and maintained by the Kavraki Lab at Rice University.

Algorithms

OPOF includes the following stable algorithm implementations.

  • Generator-Critic (GC) - Learns a conditional and stochastic generator using gradient-based deep learning techniques.
  • SMAC - Learns an unconditional and deterministic generator using the latest Bayesian optimization techniques. Wrapper around the actively maintained SMAC3 Bayesian optimization library.
  • PyPop - Learns an unconditional and deterministic generator using the latest evolution strategies. Wrapper around the actively maintained PyPop7 library for population-based (i.e. evolution strategy) techniques.

We expect the list to grow with time, and welcome any additions.

Domains

Domains are available as external packages maintained separately from OPOF. Some existing domain include:

  • opof-grid2d - Simple navigation domains in a 2D grid world to help users familiarize with OPOF. They also act as a sanity check for developing optimization algorithms.
  • opof-sbmp - Sampling-based motion planning (SBMP) domains for high-DoF robots to accomplish real-world picking tasks. They include the optimization of planner hyperparameters, sampling distributions, and projections.
  • opof-pomdp - Online POMDP planning domains for 2D navigation under uncertainty. They include the optimization of macro-actions.

We expect the list to grow with time, and welcome any additions.

Installation

To install OPOF's core library, run pip install opof.

External packages containing additional domains and algorithms may be installed alongside OPOF. Please refer to the specific package's setup instructions.

OPOF is officially tested and supported for Python 3.9, 3.10, 3.11 on Linux.

API

Below is an example of interacting with the RandomWalk2D[11] domain.

from opof_grid2d.domains import RandomWalk2D

domain = RandomWalk2D(11)
problems = domain.create_problem_set()
planner = domain.create_planner()

parameters = [pspace.rand(100).numpy() for pspace in domain.composite_parameter_space()]
for i in range(100):
    result = planner(problems(), [p[i] for p in parameters], [])
    print(result["objective"])

Our complete documentation is available at https://opof.kavrakilab.org.

Citing

If you use OPOF, please cite us with:

@article{lee23opof,
  author = {Lee, Yiyuan and Lee, Katie and Cai, Panpan and Hsu, David and Kavraki, Lydia E.},
  title = {The Planner Optimization Problem: Formulations and Frameworks},
  booktitle = {arXiv},
  year = {2023},
  doi = {10.48550/ARXIV.2303.06768},
}

License

OPOF is licensed under the BSD-3 license.

OPOF is developed and maintained by the Kavraki Lab at Rice University, funded in part by NSF RI 2008720 and Rice University funds.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

opof-0.3.1-py3-none-any.whl (35.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page