Scippy

    SCIP

    Solving Constraint Integer Programs

    pub_implics.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_implics.h
    26 * @ingroup PUBLICCOREAPI
    27 * @brief public methods for implications, variable bounds, and cliques
    28 * @author Tobias Achterberg
    29 */
    30
    31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    32
    33#ifndef __SCIP_PUB_IMPLICS_H__
    34#define __SCIP_PUB_IMPLICS_H__
    35
    36
    37#include "scip/def.h"
    38#include "scip/type_var.h"
    39#include "scip/type_implics.h"
    40
    41#ifdef NDEBUG
    42#include "scip/struct_implics.h"
    43#endif
    44
    45#ifdef __cplusplus
    46extern "C" {
    47#endif
    48
    49/*
    50 * methods for cliques
    51 */
    52
    53/** returns the position of the given variable/value pair in the clique; returns -1 if variable/value pair is not member
    54 * of the clique
    55 */
    56SCIP_EXPORT
    58 SCIP_CLIQUE* clique, /**< clique data structure */
    59 SCIP_VAR* var, /**< variable to search for */
    60 SCIP_Bool value /**< value of the variable in the clique */
    61 );
    62
    63/** returns whether the given variable/value pair is member of the given clique */
    64SCIP_EXPORT
    66 SCIP_CLIQUE* clique, /**< clique data structure */
    67 SCIP_VAR* var, /**< variable to remove from the clique */
    68 SCIP_Bool value /**< value of the variable in the clique */
    69 );
    70
    71/** gets number of variables in the cliques */
    72SCIP_EXPORT
    74 SCIP_CLIQUE* clique /**< clique data structure */
    75 );
    76
    77/** gets array of active problem variables in the cliques */
    78SCIP_EXPORT
    80 SCIP_CLIQUE* clique /**< clique data structure */
    81 );
    82
    83/** gets array of values of active problem variables in the cliques, i.e. whether the variable is fixed to FALSE or
    84 * to TRUE in the clique
    85 */
    86SCIP_EXPORT
    88 SCIP_CLIQUE* clique /**< clique data structure */
    89 );
    90
    91/** gets unique identifier of the clique */
    92SCIP_EXPORT
    93unsigned int SCIPcliqueGetId(
    94 SCIP_CLIQUE* clique /**< clique data structure */
    95 );
    96
    97/** gets index of the clique in the clique table */
    98SCIP_EXPORT
    100 SCIP_CLIQUE* clique /**< clique data structure */
    101 );
    102
    103/** returns whether the given clique is cleaned up */
    104SCIP_EXPORT
    106 SCIP_CLIQUE* clique /**< clique data structure */
    107 );
    108
    109/** return whether the given clique is an equation */
    110SCIP_EXPORT
    112 SCIP_CLIQUE* clique /**< clique data structure */
    113 );
    114
    115
    116#ifdef NDEBUG
    117
    118/* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
    119 * speed up the algorithms.
    120 */
    121
    122#define SCIPcliqueGetNVars(clique) ((clique)->nvars)
    123#define SCIPcliqueGetVars(clique) ((clique)->vars)
    124#define SCIPcliqueGetValues(clique) ((clique)->values)
    125#define SCIPcliqueGetId(clique) ((clique)->id)
    126#define SCIPcliqueGetIndex(clique) ((clique)->index)
    127#define SCIPcliqueIsCleanedUp(clique) ((clique)->startcleanup == -1)
    128#define SCIPcliqueIsEquation(clique) ((SCIP_Bool)(clique)->equation)
    129
    130#endif
    131
    132#ifdef __cplusplus
    133}
    134#endif
    135
    136#endif
    common defines and data types used in all packages of SCIP
    #define SCIP_Bool
    Definition: def.h:91
    SCIP_VAR ** SCIPcliqueGetVars(SCIP_CLIQUE *clique)
    Definition: implics.c:3384
    int SCIPcliqueGetNVars(SCIP_CLIQUE *clique)
    Definition: implics.c:3374
    SCIP_Bool * SCIPcliqueGetValues(SCIP_CLIQUE *clique)
    Definition: implics.c:3396
    SCIP_Bool SCIPcliqueHasVar(SCIP_CLIQUE *clique, SCIP_VAR *var, SCIP_Bool value)
    Definition: implics.c:1141
    SCIP_Bool SCIPcliqueIsCleanedUp(SCIP_CLIQUE *clique)
    Definition: implics.c:3430
    int SCIPcliqueGetIndex(SCIP_CLIQUE *clique)
    Definition: implics.c:3420
    int SCIPcliqueSearchVar(SCIP_CLIQUE *clique, SCIP_VAR *var, SCIP_Bool value)
    Definition: implics.c:1081
    SCIP_Bool SCIPcliqueIsEquation(SCIP_CLIQUE *clique)
    Definition: implics.c:3440
    unsigned int SCIPcliqueGetId(SCIP_CLIQUE *clique)
    Definition: implics.c:3406
    datastructures for implications, variable bounds, and cliques
    type definitions for implications, variable bounds, and cliques
    type definitions for problem variables