Detailed Description
multistart heuristic for convex and nonconvex MINLPs
The heuristic applies multiple NLP local searches to a mixed-integer nonlinear program with, probably nonconvex, constraints of the form g_j(x) \le 0. The algorithm tries to identify clusters which approximate the boundary of the feasible set of the continuous relaxation by sampling and improving randomly generated points. For each cluster we use a local search heuristic to find feasible solutions. The algorithm consists of the following four steps:
sample points
Sample random points x^1, \ldots, x^n in the box [\ell,u] . For an unbounded variable x_i we consider [\ell_i,\ell_i + \alpha], [u_i - \alpha,u_i], or [-\alpha / 2, \alpha / 2] for an \alpha > 0 depending on which bound is infinite.
reduce infeasibility
For each point x^i we use a gradient descent method to reduce the maximum infeasibility. We first compute
d_j = -\frac{g_j(x^i)}{||\nabla g_j(x^i)||^2} \nabla g_j(x^i)
and update the current point x^i with
x^i := x^i + \frac{1}{n_j} \sum_{j} d_j
where n_j is the number of strictly positive d_j . The algorithm is called Constraint Consensus Method and has been introduced by here .
cluster points
We use a greedy algorithm to all of the resulting points of step 3. to find clusters which (hopefully) approximate the boundary of the feasible set locally. Points with a too large violations will be filtered.
solve sub-problems
Depending on the current setting, we solve a sub-problem for each identified cluster. The default strategy is to compute a starting point for the sub-NLP heuristic (see heur_subnlp.h) by using a linear combination of the points in a cluster C , i.e.,
s := \sum_{x \in C} \lambda_x x
Since the sub-NLP heuristic requires a starting point which is integer feasible we round each fractional value s_i to its closest integer.
Definition in file heur_multistart.h.
Go to the source code of this file.
Functions | |
SCIP_RETCODE | SCIPincludeHeurMultistart (SCIP *scip) |