Scippy

    SCIP

    Solving Constraint Integer Programs

    pub_heur.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-2025 Zuse Institute Berlin (ZIB) */
    7/* */
    8/* Licensed under the Apache License, Version 2.0 (the "License"); */
    9/* you may not use this file except in compliance with the License. */
    10/* You may obtain a copy of the License at */
    11/* */
    12/* http://www.apache.org/licenses/LICENSE-2.0 */
    13/* */
    14/* Unless required by applicable law or agreed to in writing, software */
    15/* distributed under the License is distributed on an "AS IS" BASIS, */
    16/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
    17/* See the License for the specific language governing permissions and */
    18/* limitations under the License. */
    19/* */
    20/* You should have received a copy of the Apache-2.0 license */
    21/* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
    22/* */
    23/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
    24
    25/**@file pub_heur.h
    26 * @ingroup PUBLICCOREAPI
    27 * @brief public methods for primal heuristics
    28 * @author Tobias Achterberg
    29 */
    30
    31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    32
    33#ifndef __SCIP_PUB_HEUR_H__
    34#define __SCIP_PUB_HEUR_H__
    35
    36#include "scip/def.h"
    37#include "scip/type_heur.h"
    38#include "scip/type_misc.h"
    39#include "scip/type_retcode.h"
    40#include "scip/type_scip.h"
    41#include "scip/type_sol.h"
    42#include "scip/type_timing.h"
    43#include "scip/type_var.h"
    44
    45#ifdef __cplusplus
    46extern "C" {
    47#endif
    48
    49/**@addtogroup PublicHeuristicMethods
    50 *
    51 * @{
    52 */
    53
    54
    55
    56/** compares two heuristics w.r.t. to their delay positions and priorities */
    57SCIP_EXPORT
    58SCIP_DECL_SORTPTRCOMP(SCIPheurComp);
    59
    60/** compares two heuristics w.r.t. to their priority values */
    61SCIP_EXPORT
    62SCIP_DECL_SORTPTRCOMP(SCIPheurCompPriority);
    63
    64/** comparison method for sorting heuristics w.r.t. to their name */
    65SCIP_EXPORT
    66SCIP_DECL_SORTPTRCOMP(SCIPheurCompName);
    67
    68/** gets user data of primal heuristic */
    69SCIP_EXPORT
    71 SCIP_HEUR* heur /**< primal heuristic */
    72 );
    73
    74/** sets user data of primal heuristic; user has to free old data in advance! */
    75SCIP_EXPORT
    77 SCIP_HEUR* heur, /**< primal heuristic */
    78 SCIP_HEURDATA* heurdata /**< new primal heuristic user data */
    79 );
    80
    81/** marks the primal heuristic as safe to use in exact solving mode */
    82SCIP_EXPORT
    84 SCIP_HEUR* heur /**< primal heuristic */
    85 );
    86
    87/** gets name of primal heuristic */
    88SCIP_EXPORT
    89const char* SCIPheurGetName(
    90 SCIP_HEUR* heur /**< primal heuristic */
    91 );
    92
    93/** gets description of primal heuristic */
    94SCIP_EXPORT
    95const char* SCIPheurGetDesc(
    96 SCIP_HEUR* heur /**< primal heuristic */
    97 );
    98
    99/** gets display character of primal heuristic */
    100SCIP_EXPORT
    102 SCIP_HEUR* heur /**< primal heuristic */
    103 );
    104
    105/** returns the timing mask of the heuristic */
    106SCIP_EXPORT
    108 SCIP_HEUR* heur /**< primal heuristic */
    109 );
    110
    111/** sets new timing mask for heuristic */
    112SCIP_EXPORT
    114 SCIP_HEUR* heur, /**< primal heuristic */
    115 SCIP_HEURTIMING timingmask /**< new timing mask of heuristic */
    116 );
    117
    118/** does the heuristic use a secondary SCIP instance? */
    119SCIP_EXPORT
    121 SCIP_HEUR* heur /**< primal heuristic */
    122 );
    123
    124/** gets priority of primal heuristic */
    125SCIP_EXPORT
    127 SCIP_HEUR* heur /**< primal heuristic */
    128 );
    129
    130/** gets frequency of primal heuristic */
    131SCIP_EXPORT
    133 SCIP_HEUR* heur /**< primal heuristic */
    134 );
    135
    136/** sets frequency of primal heuristic */
    137SCIP_EXPORT
    138void SCIPheurSetFreq(
    139 SCIP_HEUR* heur, /**< primal heuristic */
    140 int freq /**< new frequency of heuristic */
    141 );
    142
    143/** gets frequency offset of primal heuristic */
    144SCIP_EXPORT
    146 SCIP_HEUR* heur /**< primal heuristic */
    147 );
    148
    149/** gets maximal depth level for calling primal heuristic (returns -1, if no depth limit exists) */
    150SCIP_EXPORT
    152 SCIP_HEUR* heur /**< primal heuristic */
    153 );
    154
    155/** gets the number of times, the heuristic was called and tried to find a solution */
    156SCIP_EXPORT
    158 SCIP_HEUR* heur /**< primal heuristic */
    159 );
    160
    161/** gets the number of primal feasible solutions found by this heuristic */
    162SCIP_EXPORT
    164 SCIP_HEUR* heur /**< primal heuristic */
    165 );
    166
    167/** gets the number of new best primal feasible solutions found by this heuristic */
    168SCIP_EXPORT
    170 SCIP_HEUR* heur /**< primal heuristic */
    171 );
    172
    173/** is primal heuristic initialized? */
    174SCIP_EXPORT
    176 SCIP_HEUR* heur /**< primal heuristic */
    177 );
    178
    179/** gets time in seconds used in this heuristic for setting up for next stages */
    180SCIP_EXPORT
    182 SCIP_HEUR* heur /**< primal heuristic */
    183 );
    184
    185/** gets time in seconds used in this heuristic */
    186SCIP_EXPORT
    188 SCIP_HEUR* heur /**< primal heuristic */
    189 );
    190
    191/** returns array of divesets of this primal heuristic, or NULL if it has no divesets */
    192SCIP_EXPORT
    194 SCIP_HEUR* heur /**< primal heuristic */
    195 );
    196
    197/** returns the number of divesets of this primal heuristic */
    198SCIP_EXPORT
    200 SCIP_HEUR* heur /**< primal heuristic */
    201 );
    202
    203/** @} */
    204
    205/** get the heuristic to which this diving setting belongs */
    206SCIP_EXPORT
    208 SCIP_DIVESET* diveset /**< diving settings */
    209 );
    210
    211/** get the working solution of this dive set */
    212SCIP_EXPORT
    214 SCIP_DIVESET* diveset /**< diving settings */
    215 );
    216
    217/** set the working solution for this dive set */
    218SCIP_EXPORT
    220 SCIP_DIVESET* diveset, /**< diving settings */
    221 SCIP_SOL* sol /**< new working solution for this dive set, or NULL */
    222 );
    223
    224/**@addtogroup PublicDivesetMethods
    225 *
    226 * @{
    227 */
    228
    229/** get the name of the dive set */
    230SCIP_EXPORT
    231const char* SCIPdivesetGetName(
    232 SCIP_DIVESET* diveset /**< diving settings */
    233 );
    234
    235/** get the minimum relative depth of the diving settings */
    236SCIP_EXPORT
    238 SCIP_DIVESET* diveset /**< diving settings */
    239 );
    240
    241/** get the maximum relative depth of the diving settings */
    242SCIP_EXPORT
    244 SCIP_DIVESET* diveset /**< diving settings */
    245 );
    246
    247/** get the number of successful runs of the diving settings */
    248SCIP_EXPORT
    250 SCIP_DIVESET* diveset, /**< diving settings */
    251 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    252 );
    253
    254/** get the number of calls to this dive set */
    255SCIP_EXPORT
    257 SCIP_DIVESET* diveset, /**< diving settings */
    258 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    259 );
    260
    261/** get the number of calls successfully terminated at a feasible leaf node */
    262SCIP_EXPORT
    264 SCIP_DIVESET* diveset, /**< diving settings */
    265 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    266 );
    267
    268/** get the minimum depth reached by this dive set */
    269SCIP_EXPORT
    271 SCIP_DIVESET* diveset, /**< diving settings */
    272 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    273 );
    274
    275/** get the maximum depth reached by this dive set */
    276SCIP_EXPORT
    278 SCIP_DIVESET* diveset, /**< diving settings */
    279 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    280 );
    281
    282/** get the average depth this dive set reached during execution */
    283SCIP_EXPORT
    285 SCIP_DIVESET* diveset, /**< diving settings */
    286 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    287 );
    288
    289/** get the minimum depth at which this dive set found a solution */
    290SCIP_EXPORT
    292 SCIP_DIVESET* diveset, /**< diving settings */
    293 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    294 );
    295
    296/** get the maximum depth at which this dive set found a solution */
    297SCIP_EXPORT
    299 SCIP_DIVESET* diveset, /**< diving settings */
    300 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    301 );
    302
    303/** get the average depth at which this dive set found a solution */
    304SCIP_EXPORT
    306 SCIP_DIVESET* diveset, /**< diving settings */
    307 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    308 );
    309
    310/** get the total number of LP iterations used by this dive set */
    311SCIP_EXPORT
    313 SCIP_DIVESET* diveset, /**< diving settings */
    314 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    315 );
    316
    317/** get the total number of probing nodes used by this dive set */
    318SCIP_EXPORT
    320 SCIP_DIVESET* diveset, /**< diving settings */
    321 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    322 );
    323
    324/** get the total number of backtracks performed by this dive set */
    325SCIP_EXPORT
    327 SCIP_DIVESET* diveset, /**< diving settings */
    328 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    329 );
    330
    331/** get the total number of conflicts found by this dive set */
    332SCIP_EXPORT
    334 SCIP_DIVESET* diveset, /**< diving settings */
    335 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    336 );
    337
    338/** get the total number of solutions (leaf and rounded solutions) found by the dive set */
    339SCIP_EXPORT
    341 SCIP_DIVESET* diveset, /**< diving settings */
    342 SCIP_DIVECONTEXT divecontext /**< context for diving statistics */
    343 );
    344
    345/** get the maximum LP iterations quotient of the diving settings */
    346SCIP_EXPORT
    348 SCIP_DIVESET* diveset /**< diving settings */
    349 );
    350
    351/** get the maximum LP iterations offset of the diving settings */
    352SCIP_EXPORT
    354 SCIP_DIVESET* diveset /**< diving settings */
    355 );
    356
    357/** get the maximum upper bound quotient parameter of the diving settings if no solution is available */
    358SCIP_EXPORT
    360 SCIP_DIVESET* diveset /**< diving settings */
    361 );
    362
    363/** get the average quotient parameter of the diving settings if no solution is available */
    364SCIP_EXPORT
    366 SCIP_DIVESET* diveset /**< diving settings */
    367 );
    368
    369/** get the maximum upper bound quotient parameter of the diving settings if an incumbent solution exists */
    370SCIP_EXPORT
    372 SCIP_DIVESET* diveset /**< diving settings */
    373 );
    374
    375/** get the average upper bound quotient parameter of the diving settings if an incumbent solution exists */
    376SCIP_EXPORT
    378 SCIP_DIVESET* diveset /**< diving settings */
    379 );
    380
    381/** should backtracking be applied? */
    382SCIP_EXPORT
    384 SCIP_DIVESET* diveset /**< diving settings */
    385 );
    386
    387/** returns the LP solve frequency for diving LPs (0: dynamically based on number of intermediate domain reductions) */
    388SCIP_EXPORT
    390 SCIP_DIVESET* diveset /**< diving settings */
    391 );
    392
    393/** returns the domain reduction quotient for triggering an immediate resolve of the diving LP (0.0: always resolve)*/
    394SCIP_EXPORT
    396 SCIP_DIVESET* diveset /**< diving settings */
    397 );
    398
    399/** should only LP branching candidates be considered instead of the slower but
    400 * more general constraint handler diving variable selection?
    401 */
    402SCIP_EXPORT
    404 SCIP_DIVESET* diveset /**< diving settings */
    405 );
    406
    407/** returns TRUE if dive set supports diving of the specified type */
    408SCIP_EXPORT
    410 SCIP_DIVESET* diveset, /**< diving settings */
    411 SCIP_DIVETYPE divetype /**< bit mask that represents the supported dive types by this dive set */
    412 );
    413
    414/** returns the random number generator of this \p diveset for tie-breaking */
    415SCIP_EXPORT
    417 SCIP_DIVESET* diveset /**< diving settings */
    418 );
    419
    420/** is this dive set publicly available (ie., can be used by other primal heuristics?) */
    421SCIP_EXPORT
    423 SCIP_DIVESET* diveset /**< diving settings */
    424 );
    425
    426/** @} */
    427
    428/**@defgroup PublicVariableGraphMethods Public Variable Graph Methods
    429 * @ingroup MiscellaneousMethods
    430 *
    431 * @brief methods to create a variable graph and perform breadth-first search
    432 *
    433 * @{
    434 */
    435
    436/** Perform breadth-first (BFS) search on the variable constraint graph.
    437 *
    438 * The result of the algorithm is that the \p distances array contains the correct distances for
    439 * every variable from the start variables. The distance of a variable can then be accessed through its
    440 * problem index (calling SCIPvarGetProbindex()).
    441 * Hence, The method assumes that the length of \p distances is at least
    442 * SCIPgetNVars().
    443 * Variables that are not connected through constraints to the start variables have a distance of -1.
    444 *
    445 * Limits can be provided to further restrict the breadth-first search. If a distance limit is given,
    446 * the search will be performed until the first variable at this distance is popped from the queue, i.e.,
    447 * all variables with a distance < maxdistance have been labeled by the search.
    448 * If a variable limit is given, the search stops after it completes the distance level at which
    449 * the limit was reached. Hence, more variables may be actually labeled.
    450 * The start variables are accounted for those variable limits.
    451 *
    452 * If no variable variable constraint graph is provided, the method will create one and free it at the end
    453 * This is useful for a single use of the variable constraint graph. For several consecutive uses,
    454 * it is advised to create a variable constraint graph via SCIPvariableGraphCreate().
    455 */
    456SCIP_EXPORT
    458 SCIP* scip, /**< SCIP data structure */
    459 SCIP_VGRAPH* vargraph, /**< pointer to the variable graph, or NULL to let the function create a local graph */
    460 SCIP_VAR** startvars, /**< array of start variables to calculate distance from */
    461 int nstartvars, /**< number of starting variables, at least 1 */
    462 int* distances, /**< array to keep distance in vargraph from start variables for every variable */
    463 int maxdistance, /**< maximum distance >= 0 from start variable (INT_MAX for complete BFS) */
    464 int maxvars, /**< maximum number of variables to compute distance for */
    465 int maxbinintvars /**< maximum number of binary or integer variables to compute distance for */
    466 );
    467
    468/** initialization method of variable graph data structure */
    469SCIP_EXPORT
    471 SCIP* scip, /**< SCIP data structure */
    472 SCIP_VGRAPH** vargraph, /**< pointer to the variable graph */
    473 SCIP_Bool relaxdenseconss, /**< should dense constraints (at least as dense as \p density) be
    474 * ignored by connectivity graph? */
    475 SCIP_Real relaxdensity, /**< density (with respect to number of variables) to relax constraint from graph */
    476 int* nrelaxedconstraints /**< pointer to store the number of constraints that were relaxed, or NULL if not needed */
    477 );
    478
    479/** deinitialization method of variable graph data structure */
    480SCIP_EXPORT
    482 SCIP* scip, /**< SCIP data structure */
    483 SCIP_VGRAPH** vargraph /**< pointer to the variable graph */
    484 );
    485
    486/** @} */
    487
    488
    489#ifdef __cplusplus
    490}
    491#endif
    492
    493#endif
    common defines and data types used in all packages of SCIP
    #define SCIP_Longint
    Definition: def.h:141
    #define SCIP_Bool
    Definition: def.h:91
    #define SCIP_Real
    Definition: def.h:156
    SCIP_Real SCIPdivesetGetMaxLPIterQuot(SCIP_DIVESET *diveset)
    Definition: heur.c:655
    SCIP_Bool SCIPdivesetIsPublic(SCIP_DIVESET *diveset)
    Definition: heur.c:764
    SCIP_Real SCIPdivesetGetUbQuotNoSol(SCIP_DIVESET *diveset)
    Definition: heur.c:671
    SCIP_Real SCIPdivesetGetMaxRelDepth(SCIP_DIVESET *diveset)
    Definition: heur.c:463
    SCIP_Longint SCIPdivesetGetNBacktracks(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:615
    SCIP_Longint SCIPdivesetGetNSols(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:641
    int SCIPdivesetGetMaxSolutionDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:563
    SCIP_Longint SCIPdivesetGetNConflicts(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:628
    SCIP_Real SCIPdivesetGetAvgQuot(SCIP_DIVESET *diveset)
    Definition: heur.c:694
    SCIP_Bool SCIPdivesetUseBacktrack(SCIP_DIVESET *diveset)
    Definition: heur.c:702
    int SCIPdivesetGetLPSolveFreq(SCIP_DIVESET *diveset)
    Definition: heur.c:710
    SCIP_Real SCIPdivesetGetMinRelDepth(SCIP_DIVESET *diveset)
    Definition: heur.c:455
    SCIP_Real SCIPdivesetGetUbQuot(SCIP_DIVESET *diveset)
    Definition: heur.c:686
    SCIP_Real SCIPdivesetGetAvgSolutionDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:576
    int SCIPdivesetGetMaxDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:524
    int SCIPdivesetGetMinDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:511
    SCIP_Bool SCIPdivesetSupportsType(SCIP_DIVESET *diveset, SCIP_DIVETYPE divetype)
    Definition: heur.c:753
    SCIP_Real SCIPdivesetGetAvgDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:537
    SCIP_Bool SCIPdivesetUseOnlyLPBranchcands(SCIP_DIVESET *diveset)
    Definition: heur.c:743
    SCIP_Longint SCIPdivesetGetNLPIterations(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:589
    SCIP_Longint SCIPdivesetGetSolSuccess(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:471
    int SCIPdivesetGetMinSolutionDepth(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:550
    const char * SCIPdivesetGetName(SCIP_DIVESET *diveset)
    Definition: heur.c:445
    int SCIPdivesetGetNCalls(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:485
    SCIP_Real SCIPdivesetGetAvgQuotNoSol(SCIP_DIVESET *diveset)
    Definition: heur.c:679
    SCIP_RANDNUMGEN * SCIPdivesetGetRandnumgen(SCIP_DIVESET *diveset)
    Definition: heur.c:720
    SCIP_Longint SCIPdivesetGetNProbingNodes(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:602
    SCIP_Real SCIPdivesetGetLPResolveDomChgQuot(SCIP_DIVESET *diveset)
    Definition: heur.c:731
    int SCIPdivesetGetNSolutionCalls(SCIP_DIVESET *diveset, SCIP_DIVECONTEXT divecontext)
    Definition: heur.c:498
    int SCIPdivesetGetMaxLPIterOffset(SCIP_DIVESET *diveset)
    Definition: heur.c:663
    char SCIPheurGetDispchar(SCIP_HEUR *heur)
    Definition: heur.c:1487
    SCIP_HEURDATA * SCIPheurGetData(SCIP_HEUR *heur)
    Definition: heur.c:1368
    SCIP_HEURTIMING SCIPheurGetTimingmask(SCIP_HEUR *heur)
    Definition: heur.c:1497
    const char * SCIPheurGetDesc(SCIP_HEUR *heur)
    Definition: heur.c:1477
    SCIP_Longint SCIPheurGetNSolsFound(SCIP_HEUR *heur)
    Definition: heur.c:1603
    int SCIPheurGetPriority(SCIP_HEUR *heur)
    Definition: heur.c:1528
    SCIP_Bool SCIPheurUsesSubscip(SCIP_HEUR *heur)
    Definition: heur.c:1518
    SCIP_Longint SCIPheurGetNBestSolsFound(SCIP_HEUR *heur)
    Definition: heur.c:1613
    void SCIPheurSetFreq(SCIP_HEUR *heur, int freq)
    Definition: heur.c:1562
    void SCIPheurSetTimingmask(SCIP_HEUR *heur, SCIP_HEURTIMING timingmask)
    Definition: heur.c:1507
    SCIP_Longint SCIPheurGetNCalls(SCIP_HEUR *heur)
    Definition: heur.c:1593
    int SCIPheurGetFreqofs(SCIP_HEUR *heur)
    Definition: heur.c:1573
    SCIP_DECL_SORTPTRCOMP(SCIPheurComp)
    Definition: heur.c:51
    SCIP_Real SCIPheurGetSetupTime(SCIP_HEUR *heur)
    Definition: heur.c:1645
    int SCIPheurGetMaxdepth(SCIP_HEUR *heur)
    Definition: heur.c:1583
    int SCIPheurGetNDivesets(SCIP_HEUR *heur)
    Definition: heur.c:1675
    void SCIPheurMarkExact(SCIP_HEUR *heur)
    Definition: heur.c:1457
    int SCIPheurGetFreq(SCIP_HEUR *heur)
    Definition: heur.c:1552
    SCIP_Real SCIPheurGetTime(SCIP_HEUR *heur)
    Definition: heur.c:1655
    const char * SCIPheurGetName(SCIP_HEUR *heur)
    Definition: heur.c:1467
    SCIP_Bool SCIPheurIsInitialized(SCIP_HEUR *heur)
    Definition: heur.c:1623
    SCIP_DIVESET ** SCIPheurGetDivesets(SCIP_HEUR *heur)
    Definition: heur.c:1665
    void SCIPheurSetData(SCIP_HEUR *heur, SCIP_HEURDATA *heurdata)
    Definition: heur.c:1378
    void SCIPvariableGraphFree(SCIP *scip, SCIP_VGRAPH **vargraph)
    Definition: heur.c:2048
    SCIP_RETCODE SCIPvariablegraphBreadthFirst(SCIP *scip, SCIP_VGRAPH *vargraph, SCIP_VAR **startvars, int nstartvars, int *distances, int maxdistance, int maxvars, int maxbinintvars)
    Definition: heur.c:1704
    SCIP_RETCODE SCIPvariableGraphCreate(SCIP *scip, SCIP_VGRAPH **vargraph, SCIP_Bool relaxdenseconss, SCIP_Real relaxdensity, int *nrelaxedconstraints)
    Definition: heur.c:2010
    SCIP_HEUR * SCIPdivesetGetHeur(SCIP_DIVESET *diveset)
    Definition: heur.c:416
    SCIP_SOL * SCIPdivesetGetWorkSolution(SCIP_DIVESET *diveset)
    Definition: heur.c:424
    void SCIPdivesetSetWorkSolution(SCIP_DIVESET *diveset, SCIP_SOL *sol)
    Definition: heur.c:434
    type definitions for primal heuristics
    enum SCIP_DiveContext SCIP_DIVECONTEXT
    Definition: type_heur.h:73
    struct SCIP_HeurData SCIP_HEURDATA
    Definition: type_heur.h:77
    unsigned int SCIP_DIVETYPE
    Definition: type_heur.h:63
    type definitions for miscellaneous datastructures
    type definitions for return codes for SCIP methods
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63
    type definitions for SCIP's main datastructure
    type definitions for storing primal CIP solutions
    timing definitions for SCIP
    unsigned int SCIP_HEURTIMING
    Definition: type_timing.h:103
    type definitions for problem variables