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.
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.
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
TBC
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
Built Distribution
File details
Details for the file opof-0.3.0-py3-none-any.whl
.
File metadata
- Download URL: opof-0.3.0-py3-none-any.whl
- Upload date:
- Size: 35.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78f1883c60af3a998ed82d08a3952618b84d9ecf7a02cc2f8cd6bf9da3ab59e6 |
|
MD5 | 29dd7ab95bf4d62577b4d3f4ff2700db |
|
BLAKE2b-256 | 4b23d4aa4e18ee3067df6540bb93f0b773ca7f201e23de33aab71bed2ad837bd |