Scippy

    SCIP

    Solving Constraint Integer Programs

    concsolver.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-2026 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 concsolver.h
    26 * @brief data structures for concurrent solvers
    27 * @author Leona Gottwald
    28 */
    29
    30/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    31
    32#ifndef __SCIP_CONCSOLVER_H__
    33#define __SCIP_CONCSOLVER_H__
    34
    35#include "scip/def.h"
    37#include "scip/type_retcode.h"
    38#include "scip/type_set.h"
    40#include "scip/type_syncstore.h"
    41#include "scip/type_message.h"
    42
    43#ifdef __cplusplus
    44extern "C" {
    45#endif
    46
    47/** creates a concurrent solver type */
    49 SCIP_CONCSOLVERTYPE** concsolvertype, /**< pointer to concurrent solver data structure */
    50 SCIP_SET* set, /**< global SCIP settings */
    51 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    52 BMS_BLKMEM* blkmem, /**< block memory for parameter settings */
    53 const char* name, /**< name of concurrent solver */
    54 SCIP_Real prefpriodefault, /**< the default preferred priority of this concurrent solver type */
    55 SCIP_DECL_CONCSOLVERCREATEINST ((*concsolvercreateinst)),/**< data copy method of concurrent solver */
    56 SCIP_DECL_CONCSOLVERDESTROYINST ((*concsolverdestroyinst)),/**< data copy method of concurrent solver */
    57 SCIP_DECL_CONCSOLVERINITSEEDS ((*concsolverinitseeds)),/**< initialize random seeds of concurrent solver */
    58 SCIP_DECL_CONCSOLVEREXEC ((*concsolverexec)),/**< execution method of concurrent solver */
    59 SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA ((*concsolvercopysolvdata)),/**< method to copy solving data */
    60 SCIP_DECL_CONCSOLVERSTOP ((*concsolverstop)),/**< terminate solving in concurrent solver */
    61 SCIP_DECL_CONCSOLVERSYNCWRITE ((*concsolversyncwrite)),/**< synchronization method of concurrent solver */
    62 SCIP_DECL_CONCSOLVERSYNCREAD ((*concsolversyncread)),/**< synchronization method of concurrent solver */
    63 SCIP_DECL_CONCSOLVERTYPEFREEDATA ((*concsolvertypefreedata)),/**< method to free data of concurrent solver type */
    64 SCIP_CONCSOLVERTYPEDATA* data /**< the concurent solver type's data */
    65 );
    66
    67/** frees all memory of a concurrent solver type */
    69 SCIP_CONCSOLVERTYPE** concsolvertype /**< pointer to concurrent solver data structure */
    70 );
    71
    72/** gets the data of a concurrent solver type */
    74 SCIP_CONCSOLVERTYPE* concsolvertype /**< concurrent solver type */
    75 );
    76
    77/** sets the data of a concurrent solver type */
    79 SCIP_CONCSOLVERTYPE* concsolvertype, /**< concurrent solver type */
    80 SCIP_CONCSOLVERTYPEDATA* data /**< the concurrent solver's data */
    81 );
    82
    83/** gets the name of a concurrent solver type */
    85 SCIP_CONCSOLVERTYPE* concsolvertype /**< concurrent solver type */
    86 );
    87
    88/** gets the preferred priority from a concurrent solver type */
    90 SCIP_CONCSOLVERTYPE* concsolvertype /**< concurrent solver type */
    91 );
    92
    93/** creates an instance of the given concurrent solver type */
    95 SCIP_SET* set, /**< global SCIP settings */
    96 SCIP_CONCSOLVERTYPE* concsolvertype, /**< concurrent solver type to create */
    97 SCIP_CONCSOLVER** concsolver /**< pointer to return concurrent solver instance */
    98 );
    99
    100/** destroys an instance of the given concurrent solver */
    102 SCIP_SET* set, /**< global SCIP settings */
    103 SCIP_CONCSOLVER** concsolver /**< concurrent solver */
    104 );
    105
    106/** gets the data of a concurrent solver */
    108 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    109 );
    110
    111/** sets the data of a concurrent solver */
    113 SCIP_CONCSOLVER* concsolver, /**< concurrent solver */
    114 SCIP_CONCSOLVERDATA* data /**< the concurrent solver's data */
    115 );
    116
    117/** gets the name of a concurrent solver */
    119 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    120 );
    121
    122/** initializes the random seeds of a concurrent solver */
    124 SCIP_CONCSOLVER* concsolver, /**< concurrent solver */
    125 unsigned int seed /**< seed for initializing the solver's internal random seeds */
    126 );
    127
    128/** start the solving process of a concurrent solver */
    130 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    131 );
    132
    133/** gets solving data of concurrent solver and stores it in the given SCIP instance */
    135 SCIP_CONCSOLVER* concsolver, /**< concurrent solver */
    136 SCIP* scip /**< SCIP data structure */
    137 );
    138
    139/** interrupt solving in a concurrent solver */
    141 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    142 );
    143
    144/** let the given concurrent solver synchronize, i.e., pass its own solutions and bounds to syncstore */
    146 SCIP_CONCSOLVER* concsolver, /**< concurrent solver */
    147 SCIP_SET* set /**< global SCIP settings */
    148 );
    149
    150/** gets the current synchronization frequency of the concurrent solver */
    152 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    153 );
    154
    155/** gets the total memory used by the concurent solver */
    157 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    158 );
    159
    160/** sets the time elapsed since the last synchronization. Must be set before the synchronization is
    161 * started.
    162 */
    164 SCIP_CONCSOLVER* concsolver, /**< concurrent solver */
    165 SCIP_Real time /**< the time passed since the last synchronization */
    166 );
    167
    168/** gets the solving time of the concurrent solver */
    170 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    171 );
    172
    173/** gets the time spent for synchronization for the concurrent solver */
    175 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    176 );
    177
    178/** gets the number of lp iterations the concurrent solver used */
    180 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    181 );
    182
    183/** gets the number of branch and bound nodes the concurrent solver used */
    185 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    186 );
    187
    188/** gets the number of solutions the concurrent solver received during synchronization */
    190 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    191 );
    192
    193/** gets the number of solutions the concurrent solver shared during synchronization */
    195 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    196 );
    197
    198/** gets the number of tighter global variable bounds the solver received */
    200 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    201 );
    202
    203/** gets the number of tighter global variable bounds of integer variables the solver received */
    205 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    206 );
    207
    208/** gets index of concurrent solver */
    210 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    211 );
    212
    213#ifdef __cplusplus
    214}
    215#endif
    216
    217#endif
    SCIP_Longint SCIPconcsolverGetNNodes(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:576
    void SCIPconcsolverSetTimeSinceLastSync(SCIP_CONCSOLVER *concsolver, SCIP_Real time)
    Definition: concsolver.c:535
    SCIP_RETCODE SCIPconcsolverExec(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:330
    SCIP_RETCODE SCIPconcsolverCreateInstance(SCIP_SET *set, SCIP_CONCSOLVERTYPE *concsolvertype, SCIP_CONCSOLVER **concsolver)
    Definition: concsolver.c:211
    SCIP_Real SCIPconcsolverGetSyncFreq(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:513
    SCIP_RETCODE SCIPconcsolverInitSeeds(SCIP_CONCSOLVER *concsolver, unsigned int seed)
    Definition: concsolver.c:313
    SCIP_RETCODE SCIPconcsolverDestroyInstance(SCIP_SET *set, SCIP_CONCSOLVER **concsolver)
    Definition: concsolver.c:260
    SCIP_CONCSOLVERDATA * SCIPconcsolverGetData(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:282
    SCIP_Longint SCIPconcsolverGetNSolsRecvd(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:586
    SCIP_Real SCIPconcsolverGetSyncTime(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:556
    void SCIPconcsolverSetData(SCIP_CONCSOLVER *concsolver, SCIP_CONCSOLVERDATA *data)
    Definition: concsolver.c:292
    SCIP_RETCODE SCIPconcsolverTypeCreate(SCIP_CONCSOLVERTYPE **concsolvertype, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, SCIP_Real prefpriodefault, SCIP_DECL_CONCSOLVERCREATEINST((*concsolvercreateinst)), SCIP_DECL_CONCSOLVERDESTROYINST((*concsolverdestroyinst)), SCIP_DECL_CONCSOLVERINITSEEDS((*concsolverinitseeds)), SCIP_DECL_CONCSOLVEREXEC((*concsolverexec)), SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA((*concsolvercopysolvdata)), SCIP_DECL_CONCSOLVERSTOP((*concsolverstop)), SCIP_DECL_CONCSOLVERSYNCWRITE((*concsolversyncwrite)), SCIP_DECL_CONCSOLVERSYNCREAD((*concsolversyncread)), SCIP_DECL_CONCSOLVERTYPEFREEDATA((*concsolvertypefreedata)), SCIP_CONCSOLVERTYPEDATA *data)
    Definition: concsolver.c:113
    int SCIPconcsolverGetIdx(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:626
    SCIP_Longint SCIPconcsolverGetNTighterIntBnds(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:616
    SCIP_RETCODE SCIPconcsolverGetSolvingData(SCIP_CONCSOLVER *concsolver, SCIP *scip)
    Definition: concsolver.c:348
    SCIP_Real SCIPconcsolverGetSolvingTime(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:546
    SCIP_Longint SCIPconcsolverGetNTighterBnds(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:606
    char * SCIPconcsolverTypeGetName(SCIP_CONCSOLVERTYPE *concsolvertype)
    Definition: concsolver.c:191
    SCIP_RETCODE SCIPconcsolverSync(SCIP_CONCSOLVER *concsolver, SCIP_SET *set)
    Definition: concsolver.c:378
    SCIP_Longint SCIPconcsolverGetNLPIterations(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:566
    void SCIPconcsolverTypeFree(SCIP_CONCSOLVERTYPE **concsolvertype)
    Definition: concsolver.c:153
    SCIP_RETCODE SCIPconcsolverStop(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:361
    char * SCIPconcsolverGetName(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:303
    SCIP_Real SCIPconcsolverTypeGetPrefPrio(SCIP_CONCSOLVERTYPE *concsolvertype)
    Definition: concsolver.c:201
    SCIP_Longint SCIPconcsolverGetNSolsShared(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:596
    SCIP_Longint SCIPconcsolverGetMemTotal(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:523
    void SCIPconcsolverTypeSetData(SCIP_CONCSOLVERTYPE *concsolvertype, SCIP_CONCSOLVERTYPEDATA *data)
    Definition: concsolver.c:180
    SCIP_CONCSOLVERTYPEDATA * SCIPconcsolverTypeGetData(SCIP_CONCSOLVERTYPE *concsolvertype)
    Definition: concsolver.c:170
    common defines and data types used in all packages of SCIP
    #define SCIP_Longint
    Definition: def.h:148
    #define SCIP_Real
    Definition: def.h:163
    memory allocation routines
    struct BMS_BlkMem BMS_BLKMEM
    Definition: memory.h:437
    Definition: heur_padm.c:135
    type definitions for concurrent solvers
    #define SCIP_DECL_CONCSOLVERSTOP(x)
    #define SCIP_DECL_CONCSOLVERINITSEEDS(x)
    #define SCIP_DECL_CONCSOLVERTYPEFREEDATA(x)
    #define SCIP_DECL_CONCSOLVERSYNCWRITE(x)
    #define SCIP_DECL_CONCSOLVERDESTROYINST(x)
    #define SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA(x)
    struct SCIP_ConcSolverTypeData SCIP_CONCSOLVERTYPEDATA
    #define SCIP_DECL_CONCSOLVEREXEC(x)
    #define SCIP_DECL_CONCSOLVERCREATEINST(x)
    #define SCIP_DECL_CONCSOLVERSYNCREAD(x)
    struct SCIP_ConcSolverData SCIP_CONCSOLVERDATA
    type definitions for message output methods
    type definitions for return codes for SCIP methods
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63
    type definitions for global SCIP settings
    the type definitions for the synchronization store