Adaptive stress testing of black-box systems, implemented within the POMDPs.jl ecosystem.
To stress test a new system, the user has to define the GrayBox
and BlackBox
interface outlined in src/GrayBox.jl
and src/BlackBox.jl
.
The GrayBox
simulator and environment interface includes:
GrayBox.Simulation
type to hold simulation variablesGrayBox.environment(sim::Simulation)
to return the collection of environment distributionsGrayBox.transition!(sim::Simulation)
to transition the simulator, returning the log-likelihood
The BlackBox
system interface includes:
BlackBox.initialize!(sim::Simulation)
to initialize/reset the system under testBlackBox.evaluate!(sim::Simulation)
to evaluate/execute the system under testBlackBox.distance(sim::Simulation)
to return how close we are to an eventBlackBox.isevent(sim::Simulation)
to indicate if a failure event occurredBlackBox.isterminal(sim::Simulation)
to indicate the simulation is in a terminal state
Functions ending with !
may modify the Simulation
object in place.
Several solvers are implemented.
An example implementation of the AST interface is provided for the Walk1D problem:
- Julia source:
test/Walk1D.jl
- Jupyter notebook:
Walk1D.ipynb
- Descriptive tutorial-style write-up:
walk1d.pdf
(created using TeX.jl)
Install the required forked packages then the POMDPStressTesting.jl
package:
using Pkg
pkg"registry add https://github.com/JuliaPOMDP/Registry"
pkg"add https://github.com/sisl/CrossEntropyMethod.jl"
pkg"add https://github.com/mossr/MCTS.jl"
pkg"add https://github.com/sisl/POMDPStressTesting.jl"
We welcome contributions—please fork the repository and submit a new Pull Request with your changes.
Package maintained by Robert Moss: [email protected]
1 TRPO and PPO thanks to Shreyas Kowshik's initial implementation.