Scippy

SCIP

Solving Constraint Integer Programs

heur_gins.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2020 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file heur_gins.h
17  * @ingroup PRIMALHEURISTICS
18  * @brief LNS heuristic that tries to delimit the search region to a neighborhood in the constraint graph
19  * @author Gregor Hendel
20  *
21  *
22  * Graph Induced Neighborhood Search (GINS) is a Large Neighborhood Search Heuristic that attempts to improve
23  * an incumbent solution by fixing a suitable percentage of integer variables to the incumbent and
24  * solving the resulting, smaller and presumably easier sub-MIP.
25  *
26  * Its search neighborhoods are based on distances in a bipartite graph \f$G\f$ with the variables and constraints as nodes and
27  * an edge between a variable and a constraint, if the variable is part of the constraint.
28  * Given an integer \f$k\f$, the \f$k\f$-neighborhood of a variable \f$v\f$ in \f$G\f$ is the set of variables, whose nodes
29  * are connected to \f$v\f$ by a path not longer than \f$2 \cdot k\f$. Intuitively, a judiciously chosen neighborhood size
30  * allows to consider a local portion of the overall problem.
31  *
32  * An initial variable selection is made by randomly sampling different neighborhoods across the whole main problem.
33  * The neighborhood that offers the largest potential for improvement is selected to become the local search neighborhood,
34  * while all variables outside the neighborhood are fixed to their incumbent solution values.
35  *
36  * GINS also supports a rolling horizon approach, during which several local neighborhoods are considered
37  * with increasing distance to the variable selected for the initial sub-problem. The rolling horizon approach ends
38  * if no improvement could be found or a sufficient part of the problem component variables has been part of
39  * at least one neighborhood.
40  */
41 
42 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
43 
44 #ifndef __SCIP_HEUR_GINS_H__
45 #define __SCIP_HEUR_GINS_H__
46 
47 #include "scip/def.h"
48 #include "scip/type_retcode.h"
49 #include "scip/type_scip.h"
50 
51 #ifdef __cplusplus
52 extern "C" {
53 #endif
54 
55 /** creates the gins primal heuristic and includes it in SCIP
56  *
57  * @ingroup PrimalHeuristicIncludes
58  */
61  SCIP* scip /**< SCIP data structure */
62  );
63 
64 #ifdef __cplusplus
65 }
66 #endif
67 
68 #endif
#define SCIP_EXPORT
Definition: def.h:100
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
type definitions for return codes for SCIP methods
type definitions for SCIP&#39;s main datastructure
SCIP_EXPORT SCIP_RETCODE SCIPincludeHeurGins(SCIP *scip)
Definition: heur_gins.c:2690
common defines and data types used in all packages of SCIP