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-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 concsolver.h
    26 * @brief datastructures 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 datastructure */
    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
    145 * the SPI.
    146 */
    148 SCIP_CONCSOLVER* concsolver, /**< concurrent solver */
    149 SCIP_SET* set /**< global SCIP settings */
    150 );
    151
    152/** gets the current synchronization frequency of the concurent solver */
    154 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    155 );
    156
    157/** gets the total memory used by the concurent solver */
    159 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    160 );
    161
    162/** sets the time elapsed since the last synchronization. Must be set before the synchronization is
    163 * started.
    164 */
    166 SCIP_CONCSOLVER* concsolver, /**< concurrent solver */
    167 SCIP_Real time /**< the time passed since the last synchronization */
    168 );
    169
    170/** gets the solving time of the concurrent solver */
    172 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    173 );
    174
    175/** gets the time spent for synchronization for the concurrent solver */
    177 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    178 );
    179
    180/** gets the number of lp iterations the concurrent solver used */
    182 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    183 );
    184
    185/** gets the number of branch and bound nodes the concurrent solver used */
    187 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    188 );
    189
    190/** gets the number of solutions the concurrent solver received during synchronization */
    192 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    193 );
    194
    195/** gets the number of solutions the concurrent solver shared during synchronization */
    197 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    198 );
    199
    200/** gets the number of tighter global variable bounds the solver received */
    202 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    203 );
    204
    205/** gets the number of tighter global variable bounds of integer variables the solver received */
    207 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    208 );
    209
    210/** gets index of concurrent solver */
    212 SCIP_CONCSOLVER* concsolver /**< concurrent solver */
    213 );
    214
    215#ifdef __cplusplus
    216}
    217#endif
    218
    219#endif
    SCIP_Longint SCIPconcsolverGetNNodes(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:573
    void SCIPconcsolverSetTimeSinceLastSync(SCIP_CONCSOLVER *concsolver, SCIP_Real time)
    Definition: concsolver.c:532
    SCIP_RETCODE SCIPconcsolverExec(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:325
    SCIP_RETCODE SCIPconcsolverCreateInstance(SCIP_SET *set, SCIP_CONCSOLVERTYPE *concsolvertype, SCIP_CONCSOLVER **concsolver)
    Definition: concsolver.c:210
    SCIP_Real SCIPconcsolverGetSyncFreq(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:510
    SCIP_RETCODE SCIPconcsolverInitSeeds(SCIP_CONCSOLVER *concsolver, unsigned int seed)
    Definition: concsolver.c:310
    SCIP_RETCODE SCIPconcsolverDestroyInstance(SCIP_SET *set, SCIP_CONCSOLVER **concsolver)
    Definition: concsolver.c:257
    SCIP_CONCSOLVERDATA * SCIPconcsolverGetData(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:279
    SCIP_Longint SCIPconcsolverGetNSolsRecvd(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:583
    SCIP_Real SCIPconcsolverGetSyncTime(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:553
    void SCIPconcsolverSetData(SCIP_CONCSOLVER *concsolver, SCIP_CONCSOLVERDATA *data)
    Definition: concsolver.c:289
    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:623
    SCIP_Longint SCIPconcsolverGetNTighterIntBnds(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:613
    SCIP_RETCODE SCIPconcsolverGetSolvingData(SCIP_CONCSOLVER *concsolver, SCIP *scip)
    Definition: concsolver.c:343
    SCIP_Real SCIPconcsolverGetSolvingTime(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:543
    SCIP_Longint SCIPconcsolverGetNTighterBnds(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:603
    char * SCIPconcsolverTypeGetName(SCIP_CONCSOLVERTYPE *concsolvertype)
    Definition: concsolver.c:190
    SCIP_RETCODE SCIPconcsolverSync(SCIP_CONCSOLVER *concsolver, SCIP_SET *set)
    Definition: concsolver.c:375
    SCIP_Longint SCIPconcsolverGetNLPIterations(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:563
    void SCIPconcsolverTypeFree(SCIP_CONCSOLVERTYPE **concsolvertype)
    Definition: concsolver.c:153
    SCIP_RETCODE SCIPconcsolverStop(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:356
    char * SCIPconcsolverGetName(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:300
    SCIP_Real SCIPconcsolverTypeGetPrefPrio(SCIP_CONCSOLVERTYPE *concsolvertype)
    Definition: concsolver.c:200
    SCIP_Longint SCIPconcsolverGetNSolsShared(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:593
    SCIP_Longint SCIPconcsolverGetMemTotal(SCIP_CONCSOLVER *concsolver)
    Definition: concsolver.c:520
    void SCIPconcsolverTypeSetData(SCIP_CONCSOLVERTYPE *concsolvertype, SCIP_CONCSOLVERTYPEDATA *data)
    Definition: concsolver.c:179
    SCIP_CONCSOLVERTYPEDATA * SCIPconcsolverTypeGetData(SCIP_CONCSOLVERTYPE *concsolvertype)
    Definition: concsolver.c:169
    common defines and data types used in all packages of SCIP
    #define SCIP_Longint
    Definition: def.h:141
    #define SCIP_Real
    Definition: def.h:156
    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