Testing
POMDPTools contains basic utilities for testing models and solvers.
Testing (PO)MDP Models
POMDPTools.Testing.has_consistent_distributions
— Functionhas_consistent_distributions(m::MDP; atol=0)
has_consistent_distributions(m::POMDP; atol=0)
Return true if no problems are found in the distributions for a discrete problem. Print information and return false if problems are found.
Tests whether
- All probabilities are positive
- Probabilities for all distributions sum to 1
- All items with positive probability are in the support
Keyword Arguments
atol
: absolute tolerance passed toapprox
for all probability checks
POMDPTools.Testing.has_consistent_initial_distribution
— Functionhas_consistent_initial_distribution(m; atol=0)
Return true if no problems are found with the initial state distribution for a discrete problem. Print information and return false if problems are found.
See has_consistent_distributions
for information on what checks are performed.
POMDPTools.Testing.has_consistent_transition_distributions
— Functionhas_consistent_transition_distributions(m; atol=0)
Return true if no problems are found in the transition distributions for a discrete problem. Print information and return false if problems are found.
See has_consistent_distributions
for information on what checks are performed.
POMDPTools.Testing.has_consistent_observation_distributions
— Functionhas_consistent_observation_distributions(m; atol=0)
Return true if no problems are found in the observation distributions for a discrete POMDP. Print information and return false if problems are found.
See has_consistent_distributions
for information on what checks are performed.
Testing Solvers
POMDPTools.Testing.test_solver
— Functiontest_solver(solver::Solver, problem::POMDP)
test_solver(solver::Solver, problem::MDP)
Use the solver to solve the specified problem, then run a simulation.
This is designed to illustrate how solvers are expected to function. All solvers should be able to complete this standard test with the simple models in the POMDPModels package.
Note that this does NOT test the optimality of the solution, but is only a smoke test to see if the solver interacts with POMDP models as expected.
To run this with a solver called YourSolver, run
using POMDPToolbox
using POMDPModels
solver = YourSolver(# initialize with parameters #)
test_solver(solver, BabyPOMDP())