Solve the problem of stochastic reachability of a target tube (a lower bound
on the maximal reach probability and an open-loop controller synthesis) using
Genz's algorithm and MATLAB's patternsearch (a nonlinear, derivative-free,
constrained optimization solver)
=============================================================================
SReachPointGpO implements the Fourier transform-based underapproximation to
the stochastic reachability of a target tube problem. The original problem was
formulated (for the simpler problem of terminal hitting-time stochastic
reach-avoid problem) in
A. Vinod and M. Oishi, "Scalable Underapproximation for Stochastic
Reach-Avoid Problem for High-Dimensional LTI Systems using Fourier
Transforms," in IEEE Control Systems Letters (L-CSS), 2017.
High-level desc. : Maximize the multivariate Gaussian integral over a
polytope, evaluated using Genz's algorithm, and
optimize the nonlinear (log-concave) problem using
MATLAB's patternsearch
Approximation : Approximate upto a user-specified tolerance
Controller type : Open-loop controller that satisfies the hard input
bounds
Optimality : Optimal open-loop controller for the
underapproximation problem due to convexity guarantees
=============================================================================
[approx_stoch_reach, opt_input_vec] = SReachPointGpO(sys, initial_state, ...
safety_tube, options)
Inputs:
-------
sys - System description (LtvSystem/LtiSystem object)
initial_state- Initial state for which the maximal reach probability must be
evaluated (A numeric vector of dimension sys.state_dim)
safety_tube - Collection of (potentially time-varying) safe sets that
define the safe states (Tube object)
options - Collection of user-specified options for 'genzps-open'
(Matlab struct created using SReachPointOptions)
Outputs:
--------
approx_stoch_reach
- Approximation of the stochastic reachability of a target tube
problem | Returns -1 if patternsearch fails (exitflag < 1)
opt_input_vec
- Open-loop controller: column vector of dimension
(sys.input_dim*N) x 1
See also SReachPoint.
Notes:
------
* We recommend using this function through SReachPoint.
* This function requires MATLAB's Global Optimization Toolbox for its
nonlinear solver 'patternsearch'.
* This function requires CVX to work, since it uses SReachPointCcO for
initialization of MATLAB's 'patternsearch'.
* This function uses Genz's algorithm (see in src/helperFunctions) instead of
MATLAB's Statistics and Machine Learning Toolbox's mvncdf to compute the
integral of the Gaussian over a polytope.
* See @LtiSystem/getConcatMats for more information about the notation used.
* This code is also used internally by SReachSetGpO (stochastic reach set
underapproximation via genzps-open method). There are a few adjustments done
for computational purposes:
1. Using options.thresh, an inner min operation is used that is
convexity-preserving. This is an attempt to ensure that the quasi
Monte-Carlo simulation-driven optimization:
- does report a safety probability that is above prob_thresh, and
- does not spend too much time looking for global optimality, when a
certificate of exceeding a lower bound suffices.
2. After the optimization, the optimal value is reevaluated using a fresh
set of particles for generality.
* A probabilistic bound on the overapproximation error between the provided
estimate and the true estimate may be found using Hoeffding's inequality.
============================================================================
This function is part of the Stochastic Reachability Toolbox.
License for the use of this function is given in
https://sreachtools.github.io/license/