|
2 | 2 | -------------------------------
|
3 | 3 | Solution methods and parameters
|
4 | 4 | -------------------------------
|
| 5 | + |
| 6 | +Standard reformulation |
| 7 | +^^^^^^^^^^^^^^^^^^^^^^ |
| 8 | + |
| 9 | +Consider the chance constraint |
| 10 | + |
| 11 | +.. math:: |
| 12 | +
|
| 13 | + P\left(\sum_{i=1}^k \left(c_i^Tx +d_i\right)z_i \geq b\right) \leq \epsilon |
| 14 | +
|
| 15 | +where :math:`z \sim \mathcal{N}(\mu,\Sigma)` is a vector in :math:`\mathbb{R}^n` of jointly normal random |
| 16 | +variables with mean :math:`\mu` and covariance matrix :math:`\Sigma`. JuMPChance currently only supports a diagonal covariance matrix :math:`\Sigma`, i.e., all variables are independent, but we present the more general case here. For simplicity, we can introduce a new set of variables :math:`y_i = c_i^Tx + d_i` and reduce the constraint to: |
| 17 | + |
| 18 | +.. math:: |
| 19 | +
|
| 20 | + P\left(y^Tz \geq b\right) \leq \epsilon |
| 21 | +
|
| 22 | +Recall that :math:`y^Tz` is normally distributed with mean :math:`y^T\mu` and variance :math:`y^T\Sigma y`. Then |
| 23 | + |
| 24 | +.. math:: |
| 25 | +
|
| 26 | + P\left(y^Tz \geq b\right) = P\left(y^Tz - y^T\mu \geq b - y^T\mu\right) = P\left( \frac{y^Tz - \mu^Tz}{\sqrt{y^T\Sigma y}} \geq \frac{b - y^T\mu}{\sqrt{y^T\Sigma y}}\right) |
| 27 | + |
| 28 | + |
| 29 | + = 1- \Phi\left(\frac{b - y^T\mu}{\sqrt{y^T\Sigma y}}\right) |
| 30 | +
|
| 31 | +where :math:`\Phi` is the standard normal cumulative distribution function. |
| 32 | + |
| 33 | +Therefore the chance constraint is satisfied if and only if |
| 34 | + |
| 35 | +.. math:: |
| 36 | +
|
| 37 | + \Phi\left(\frac{b - y^T\mu}{\sqrt{y^T\Sigma y}}\right) \geq 1- \epsilon |
| 38 | +
|
| 39 | +or, since :math:`\Phi^{-1}` is monotonic increasing, |
| 40 | + |
| 41 | +.. math:: |
| 42 | +
|
| 43 | + \frac{b - y^T\mu}{\sqrt{y^T\Sigma y}} \geq \Phi^{-1}(1-\epsilon) |
| 44 | +
|
| 45 | +which is |
| 46 | + |
| 47 | +.. math:: |
| 48 | +
|
| 49 | + y^T\mu + \Phi^{-1}(1-\epsilon)\sqrt{y^T\Sigma y} \leq b. |
| 50 | +
|
| 51 | +For :math:`\epsilon \leq 0`, :math:`\Phi^{-1}(1-\epsilon) > 0`, so the above constraint is convex and equivalent to |
| 52 | + |
| 53 | +.. math:: |
| 54 | +
|
| 55 | + ||\Sigma^{\frac{1}{2}}y|| \leq (b-\mu^Ty)/\Phi^{-1}(1-\epsilon) |
| 56 | +
|
| 57 | +which is a `second-order conic <http://en.wikipedia.org/wiki/Second-order_cone_programming>`_ constraint, where :math:`\Sigma^{\frac{1}{2}}` is the `square root <http://en.wikipedia.org/wiki/Square_root_of_a_matrix>`_ of :math:`\Sigma`. |
| 58 | + |
| 59 | +Methods for distributionally robust constraints |
| 60 | +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 61 | + |
| 62 | +Following the notation in the quick start guide, a distributionally robust |
| 63 | +chance constraint can be formulated as |
| 64 | + |
| 65 | +.. math:: |
| 66 | +
|
| 67 | + ||\Sigma^{\frac{1}{2}}y|| \leq (b-\mu^Ty)/\Phi^{-1}(1-\epsilon)\quad \forall\, \mu \in M, \Sigma \in V |
| 68 | +
|
| 69 | +This is a convex constraint because it is the intersection of a large (possibly infinite) set of convex constraints. These are challenging to reformulate into an explicit conic form. Instead, we approximate the constraint by a sequence of linear tangents, i.e., given a point :math:`y`, we detect if the constraint is violated for any choice of :math:`\mu` or :math:`\Sigma`, and if so we add a separating hyperplane which is simple to compute. |
| 70 | + |
| 71 | +solvechance parameters |
| 72 | +^^^^^^^^^^^^^^^^^^^^^^ |
| 73 | + |
| 74 | +The ``solvechance`` method has the following optional keyword parameters: |
| 75 | + |
| 76 | + - ``method::Symbol``, either ``:Reformulate`` to use the second-order conic formulation or ``:Cuts`` to approximate the constraints by a sequence of linear outer-approximations. Defaults to ``:Reformulate``. |
| 77 | + - ``linearize_objective::Bool``, either ``true`` or ``false`` indicating whether to provide a convex quadratic objective directly to the solver or to use linear outer approximations. Defaults to ``false``. |
| 78 | + - ``probability_tolerance::Float64``, chance constraints are considered satisfied if within :math:`\epsilon` plus the given tolerance. Defaults to ``0.001``. |
| 79 | + - ``debug::Bool``, enables debugging output for the outer approximation algorithm. Defaults to ``false``. |
| 80 | + - ``iteration_limit::Int``, limits the number of iterations performed by the outer approximation algorithm. (In each iteration, a single linearization is added for each violated constraint.) Defaults to ``60``. |
| 81 | + - ``objective_linearization_tolerance::Float64``, absolute term-wise tolerance used when linearizing quadratic objectives. Defaults to ``1e-6``. |
| 82 | + - ``reformulate_quadobj_to_conic::Bool``, if ``true``, automatically reformulates a quadratic objective into second-order conic form. This is necessary for some solvers like Mosek or ECOS which don't support mixing quadratic and conic constraints. Defaults to ``false`` except if the solver is ECOS. |
0 commit comments