Scippy

    SCIP

    Solving Constraint Integer Programs

    scip_sol.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 scip_sol.h
    26 * @ingroup PUBLICCOREAPI
    27 * @brief public methods for solutions
    28 * @author Tobias Achterberg
    29 * @author Timo Berthold
    30 * @author Thorsten Koch
    31 * @author Alexander Martin
    32 * @author Marc Pfetsch
    33 * @author Kati Wolter
    34 * @author Gregor Hendel
    35 * @author Leona Gottwald
    36 */
    37
    38/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    39
    40#ifndef __SCIP_SCIP_SOL_H__
    41#define __SCIP_SCIP_SOL_H__
    42
    43
    44#include "scip/def.h"
    45#include "scip/type_cons.h"
    46#include "scip/type_heur.h"
    47#include "scip/type_rational.h"
    48#include "scip/type_retcode.h"
    49#include "scip/type_scip.h"
    50#include "scip/type_sol.h"
    51#include "scip/type_var.h"
    52
    53#ifdef __cplusplus
    54extern "C" {
    55#endif
    56
    57/**@addtogroup PublicSolutionMethods
    58 *
    59 * @{
    60 */
    61
    62/** creates a primal solution, initialized to zero
    63 *
    64 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    65 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    66 *
    67 * @pre This method can be called if SCIP is in one of the following stages:
    68 * - \ref SCIP_STAGE_PROBLEM
    69 * - \ref SCIP_STAGE_TRANSFORMING
    70 * - \ref SCIP_STAGE_TRANSFORMED
    71 * - \ref SCIP_STAGE_INITPRESOLVE
    72 * - \ref SCIP_STAGE_PRESOLVING
    73 * - \ref SCIP_STAGE_EXITPRESOLVE
    74 * - \ref SCIP_STAGE_PRESOLVED
    75 * - \ref SCIP_STAGE_INITSOLVE
    76 * - \ref SCIP_STAGE_SOLVING
    77 */
    78SCIP_EXPORT
    80 SCIP* scip, /**< SCIP data structure */
    81 SCIP_SOL** sol, /**< pointer to store the solution */
    82 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    83 );
    84
    85/** creates an exact primal solution, initialized to zero
    86 *
    87 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    88 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    89 *
    90 * @pre This method can be called if SCIP is in one of the following stages:
    91 * - \ref SCIP_STAGE_PROBLEM
    92 * - \ref SCIP_STAGE_TRANSFORMING
    93 * - \ref SCIP_STAGE_TRANSFORMED
    94 * - \ref SCIP_STAGE_INITPRESOLVE
    95 * - \ref SCIP_STAGE_PRESOLVING
    96 * - \ref SCIP_STAGE_EXITPRESOLVE
    97 * - \ref SCIP_STAGE_PRESOLVED
    98 * - \ref SCIP_STAGE_INITSOLVE
    99 * - \ref SCIP_STAGE_SOLVING
    100 */
    101SCIP_EXPORT
    103 SCIP* scip, /**< SCIP data structure */
    104 SCIP_SOL** sol, /**< pointer to store the solution */
    105 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    106 );
    107
    108/** creates a primal solution, initialized to the current LP solution
    109 *
    110 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    111 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    112 *
    113 * @pre This method can be called if SCIP is in one of the following stages:
    114 * - \ref SCIP_STAGE_SOLVING
    115 */
    116SCIP_EXPORT
    118 SCIP* scip, /**< SCIP data structure */
    119 SCIP_SOL** sol, /**< pointer to store the solution */
    120 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    121 );
    122
    123/** creates an exact primal solution, initialized to the current exact LP solution
    124 *
    125 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    126 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    127 *
    128 * @pre This method can be called if SCIP is in one of the following stages:
    129 * - \ref SCIP_STAGE_SOLVING
    130 */
    131SCIP_EXPORT
    133 SCIP* scip, /**< SCIP data structure */
    134 SCIP_SOL** sol, /**< pointer to store the solution */
    135 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    136 );
    137
    138/** creates a primal solution, initialized to the current NLP solution
    139 *
    140 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    141 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    142 *
    143 * @pre This method can be called if SCIP is in one of the following stages:
    144 * - \ref SCIP_STAGE_SOLVING
    145 */
    146SCIP_EXPORT
    148 SCIP* scip, /**< SCIP data structure */
    149 SCIP_SOL** sol, /**< pointer to store the solution */
    150 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    151 );
    152
    153/** creates a primal solution, initialized to the current relaxation solution
    154 *
    155 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    156 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    157 *
    158 * @pre This method can be called if SCIP is in one of the following stages:
    159 * - \ref SCIP_STAGE_SOLVING
    160 */
    161SCIP_EXPORT
    163 SCIP* scip, /**< SCIP data structure */
    164 SCIP_SOL** sol, /**< pointer to store the solution */
    165 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    166 );
    167
    168/** creates a primal solution, initialized to the current pseudo solution
    169 *
    170 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    171 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    172 *
    173 * @pre This method can be called if SCIP is in one of the following stages:
    174 * - \ref SCIP_STAGE_SOLVING
    175 */
    176SCIP_EXPORT
    178 SCIP* scip, /**< SCIP data structure */
    179 SCIP_SOL** sol, /**< pointer to store the solution */
    180 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    181 );
    182
    183/** creates a primal solution, initialized to the current LP or pseudo solution, depending on whether the LP was solved
    184 * at the current node
    185 *
    186 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    187 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    188 *
    189 * @pre This method can be called if SCIP is in one of the following stages:
    190 * - \ref SCIP_STAGE_SOLVING
    191 */
    192SCIP_EXPORT
    194 SCIP* scip, /**< SCIP data structure */
    195 SCIP_SOL** sol, /**< pointer to store the solution */
    196 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    197 );
    198
    199/** creates a partial primal solution, initialized to unknown values
    200 *
    201 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    202 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    203 *
    204 * @pre This method can be called if SCIP is in one of the following stages:
    205 * - \ref SCIP_STAGE_PROBLEM
    206 */
    207SCIP_EXPORT
    209 SCIP* scip, /**< SCIP data structure */
    210 SCIP_SOL** sol, /**< pointer to store the solution */
    211 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    212 );
    213
    214/** creates a primal solution, initialized to unknown values
    215 *
    216 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    217 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    218 *
    219 * @pre This method can be called if SCIP is in one of the following stages:
    220 * - \ref SCIP_STAGE_TRANSFORMING
    221 * - \ref SCIP_STAGE_TRANSFORMED
    222 * - \ref SCIP_STAGE_INITPRESOLVE
    223 * - \ref SCIP_STAGE_PRESOLVING
    224 * - \ref SCIP_STAGE_EXITPRESOLVE
    225 * - \ref SCIP_STAGE_PRESOLVED
    226 * - \ref SCIP_STAGE_INITSOLVE
    227 * - \ref SCIP_STAGE_SOLVING
    228 */
    229SCIP_EXPORT
    231 SCIP* scip, /**< SCIP data structure */
    232 SCIP_SOL** sol, /**< pointer to store the solution */
    233 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    234 );
    235
    236/** creates a primal solution living in the original problem space, initialized to zero;
    237 * a solution in original space allows to set original variables to values that would be invalid in the
    238 * transformed problem due to preprocessing fixings or aggregations
    239 *
    240 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    241 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    242 *
    243 * @pre This method can be called if SCIP is in one of the following stages:
    244 * - \ref SCIP_STAGE_PROBLEM
    245 * - \ref SCIP_STAGE_TRANSFORMING
    246 * - \ref SCIP_STAGE_TRANSFORMED
    247 * - \ref SCIP_STAGE_INITPRESOLVE
    248 * - \ref SCIP_STAGE_PRESOLVING
    249 * - \ref SCIP_STAGE_EXITPRESOLVE
    250 * - \ref SCIP_STAGE_PRESOLVED
    251 * - \ref SCIP_STAGE_INITSOLVE
    252 * - \ref SCIP_STAGE_SOLVING
    253 */
    254SCIP_EXPORT
    256 SCIP* scip, /**< SCIP data structure */
    257 SCIP_SOL** sol, /**< pointer to store the solution */
    258 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
    259 );
    260
    261/** creates a copy of a primal solution; note that a copy of a linked solution is also linked and needs to be unlinked
    262 * if it should stay unaffected from changes in the LP or pseudo solution
    263 *
    264 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    265 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    266 *
    267 * @pre This method can be called if SCIP is in one of the following stages:
    268 * - \ref SCIP_STAGE_PROBLEM
    269 * - \ref SCIP_STAGE_TRANSFORMING
    270 * - \ref SCIP_STAGE_TRANSFORMED
    271 * - \ref SCIP_STAGE_INITPRESOLVE
    272 * - \ref SCIP_STAGE_PRESOLVING
    273 * - \ref SCIP_STAGE_EXITPRESOLVE
    274 * - \ref SCIP_STAGE_PRESOLVED
    275 * - \ref SCIP_STAGE_INITSOLVE
    276 * - \ref SCIP_STAGE_SOLVING
    277 */
    278SCIP_EXPORT
    280 SCIP* scip, /**< SCIP data structure */
    281 SCIP_SOL** sol, /**< pointer to store the solution */
    282 SCIP_SOL* sourcesol /**< primal CIP solution to copy */
    283 );
    284
    285/** creates a copy of a solution in the original primal solution space
    286 *
    287 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    288 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    289 *
    290 * @pre This method can be called if SCIP is in one of the following stages:
    291 * - \ref SCIP_STAGE_PROBLEM
    292 * - \ref SCIP_STAGE_TRANSFORMING
    293 * - \ref SCIP_STAGE_TRANSFORMED
    294 * - \ref SCIP_STAGE_INITPRESOLVE
    295 * - \ref SCIP_STAGE_PRESOLVING
    296 * - \ref SCIP_STAGE_EXITPRESOLVE
    297 * - \ref SCIP_STAGE_PRESOLVED
    298 * - \ref SCIP_STAGE_INITSOLVE
    299 * - \ref SCIP_STAGE_SOLVING
    300 * - \ref SCIP_STAGE_SOLVED
    301 * - \ref SCIP_STAGE_EXITSOLVE
    302 * - \ref SCIP_STAGE_FREETRANS
    303 */
    304SCIP_EXPORT
    306 SCIP* scip, /**< SCIP data structure */
    307 SCIP_SOL** sol, /**< pointer to store the solution */
    308 SCIP_SOL* sourcesol /**< primal CIP solution to copy */
    309 );
    310
    311/** creates a copy of a primal solution, thereby replacing infinite fixings of variables by finite values;
    312 * the copy is always defined in the original variable space;
    313 * success indicates whether the objective value of the solution was changed by removing infinite values
    314 *
    315 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    316 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    317 *
    318 * @pre This method can be called if SCIP is in one of the following stages:
    319 * - \ref SCIP_STAGE_PROBLEM
    320 * - \ref SCIP_STAGE_TRANSFORMING
    321 * - \ref SCIP_STAGE_TRANSFORMED
    322 * - \ref SCIP_STAGE_INITPRESOLVE
    323 * - \ref SCIP_STAGE_PRESOLVING
    324 * - \ref SCIP_STAGE_EXITPRESOLVE
    325 * - \ref SCIP_STAGE_PRESOLVED
    326 * - \ref SCIP_STAGE_INITSOLVE
    327 * - \ref SCIP_STAGE_SOLVING
    328 * - \ref SCIP_STAGE_SOLVED
    329 * - \ref SCIP_STAGE_EXITSOLVE
    330 */
    331SCIP_EXPORT
    333 SCIP* scip, /**< SCIP data structure */
    334 SCIP_SOL** sol, /**< pointer to store the solution */
    335 SCIP_SOL* sourcesol, /**< primal CIP solution to copy */
    336 SCIP_Bool* success /**< does the finite solution have the same objective value? */
    337 );
    338
    339/** frees primal CIP solution
    340 *
    341 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    342 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    343 *
    344 * @pre This method can be called if SCIP is in one of the following stages:
    345 * - \ref SCIP_STAGE_PROBLEM
    346 * - \ref SCIP_STAGE_TRANSFORMING
    347 * - \ref SCIP_STAGE_TRANSFORMED
    348 * - \ref SCIP_STAGE_INITPRESOLVE
    349 * - \ref SCIP_STAGE_PRESOLVING
    350 * - \ref SCIP_STAGE_EXITPRESOLVE
    351 * - \ref SCIP_STAGE_PRESOLVED
    352 * - \ref SCIP_STAGE_INITSOLVE
    353 * - \ref SCIP_STAGE_SOLVING
    354 * - \ref SCIP_STAGE_SOLVED
    355 * - \ref SCIP_STAGE_EXITSOLVE
    356 * - \ref SCIP_STAGE_FREETRANS
    357 */
    358SCIP_EXPORT
    360 SCIP* scip, /**< SCIP data structure */
    361 SCIP_SOL** sol /**< pointer to the solution */
    362 );
    363
    364/** links a primal solution to the current LP solution
    365 *
    366 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    367 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    368 *
    369 * @pre This method can be called if SCIP is in one of the following stages:
    370 * - \ref SCIP_STAGE_SOLVING
    371 */
    372SCIP_EXPORT
    374 SCIP* scip, /**< SCIP data structure */
    375 SCIP_SOL* sol /**< primal solution */
    376 );
    377
    378/** links a primal solution to the current exact LP solution
    379 *
    380 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    381 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    382 *
    383 * @pre This method can be called if SCIP is in one of the following stages:
    384 * - \ref SCIP_STAGE_SOLVING
    385 */
    387 SCIP* scip, /**< SCIP data structure */
    388 SCIP_SOL* sol /**< primal solution */
    389 );
    390
    391/** links a primal solution to the current NLP solution
    392 *
    393 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    394 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    395 *
    396 * @pre This method can be called if SCIP is in one of the following stages:
    397 * - \ref SCIP_STAGE_SOLVING
    398 */
    399SCIP_EXPORT
    401 SCIP* scip, /**< SCIP data structure */
    402 SCIP_SOL* sol /**< primal solution */
    403 );
    404
    405/** links a primal solution to the current relaxation solution
    406 *
    407 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    408 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    409 *
    410 * @pre This method can be called if SCIP is in one of the following stages:
    411 * - \ref SCIP_STAGE_SOLVING
    412 */
    413SCIP_EXPORT
    415 SCIP* scip, /**< SCIP data structure */
    416 SCIP_SOL* sol /**< primal solution */
    417 );
    418
    419/** links a primal solution to the current pseudo solution
    420 *
    421 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    422 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    423 *
    424 * @pre This method can be called if SCIP is in one of the following stages:
    425 * - \ref SCIP_STAGE_PRESOLVING
    426 * - \ref SCIP_STAGE_SOLVING
    427 */
    428SCIP_EXPORT
    430 SCIP* scip, /**< SCIP data structure */
    431 SCIP_SOL* sol /**< primal solution */
    432 );
    433
    434/** links a primal solution to the current LP or pseudo solution
    435 *
    436 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    437 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    438 *
    439 * @pre This method can be called if SCIP is in one of the following stages:
    440 * - \ref SCIP_STAGE_SOLVING
    441 */
    442SCIP_EXPORT
    444 SCIP* scip, /**< SCIP data structure */
    445 SCIP_SOL* sol /**< primal solution */
    446 );
    447
    448/** clears a primal solution
    449 *
    450 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    451 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    452 *
    453 * @pre This method can be called if SCIP is in one of the following stages:
    454 * - \ref SCIP_STAGE_PROBLEM
    455 * - \ref SCIP_STAGE_TRANSFORMING
    456 * - \ref SCIP_STAGE_TRANSFORMED
    457 * - \ref SCIP_STAGE_INITPRESOLVE
    458 * - \ref SCIP_STAGE_PRESOLVING
    459 * - \ref SCIP_STAGE_EXITPRESOLVE
    460 * - \ref SCIP_STAGE_PRESOLVED
    461 * - \ref SCIP_STAGE_INITSOLVE
    462 * - \ref SCIP_STAGE_SOLVING
    463 * - \ref SCIP_STAGE_SOLVED
    464 * - \ref SCIP_STAGE_EXITSOLVE
    465 * - \ref SCIP_STAGE_FREETRANS
    466 */
    467SCIP_EXPORT
    469 SCIP* scip, /**< SCIP data structure */
    470 SCIP_SOL* sol /**< primal solution */
    471 );
    472
    473/** stores solution values of variables in solution's own array
    474 *
    475 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    476 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    477 *
    478 * @pre This method can be called if SCIP is in one of the following stages:
    479 * - \ref SCIP_STAGE_TRANSFORMING
    480 * - \ref SCIP_STAGE_TRANSFORMED
    481 * - \ref SCIP_STAGE_PRESOLVING
    482 * - \ref SCIP_STAGE_PRESOLVED
    483 * - \ref SCIP_STAGE_INITSOLVE
    484 * - \ref SCIP_STAGE_SOLVING
    485 * - \ref SCIP_STAGE_SOLVED
    486 * - \ref SCIP_STAGE_EXITSOLVE
    487 * - \ref SCIP_STAGE_FREETRANS
    488 */
    489SCIP_EXPORT
    491 SCIP* scip, /**< SCIP data structure */
    492 SCIP_SOL* sol /**< primal solution */
    493 );
    494
    495/** stores exact solution values of variables in solution's own array
    496 *
    497 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    498 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    499 *
    500 * @pre This method can be called if SCIP is in one of the following stages:
    501 * - \ref SCIP_STAGE_TRANSFORMING
    502 * - \ref SCIP_STAGE_TRANSFORMED
    503 * - \ref SCIP_STAGE_PRESOLVING
    504 * - \ref SCIP_STAGE_PRESOLVED
    505 * - \ref SCIP_STAGE_INITSOLVE
    506 * - \ref SCIP_STAGE_SOLVING
    507 * - \ref SCIP_STAGE_SOLVED
    508 * - \ref SCIP_STAGE_EXITSOLVE
    509 * - \ref SCIP_STAGE_FREETRANS
    510 */
    511SCIP_EXPORT
    513 SCIP* scip, /**< SCIP data structure */
    514 SCIP_SOL* sol /**< primal solution */
    515 );
    516
    517/** sets value of variable in primal CIP solution
    518 *
    519 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    520 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    521 *
    522 * @pre This method can be called if SCIP is in one of the following stages:
    523 * - \ref SCIP_STAGE_PROBLEM
    524 * - \ref SCIP_STAGE_TRANSFORMING
    525 * - \ref SCIP_STAGE_TRANSFORMED
    526 * - \ref SCIP_STAGE_INITPRESOLVE
    527 * - \ref SCIP_STAGE_PRESOLVING
    528 * - \ref SCIP_STAGE_EXITPRESOLVE
    529 * - \ref SCIP_STAGE_PRESOLVED
    530 * - \ref SCIP_STAGE_INITSOLVE
    531 * - \ref SCIP_STAGE_SOLVING
    532 * - \ref SCIP_STAGE_SOLVED
    533 * - \ref SCIP_STAGE_EXITSOLVE
    534 * - \ref SCIP_STAGE_FREETRANS
    535 */
    536SCIP_EXPORT
    538 SCIP* scip, /**< SCIP data structure */
    539 SCIP_SOL* sol, /**< primal solution */
    540 SCIP_VAR* var, /**< variable to add to solution */
    541 SCIP_Real val /**< solution value of variable */
    542 );
    543
    544/** sets exact value of variable in primal CIP solution
    545 *
    546 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    547 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    548 *
    549 * @pre This method can be called if SCIP is in one of the following stages:
    550 * - \ref SCIP_STAGE_PROBLEM
    551 * - \ref SCIP_STAGE_TRANSFORMING
    552 * - \ref SCIP_STAGE_TRANSFORMED
    553 * - \ref SCIP_STAGE_INITPRESOLVE
    554 * - \ref SCIP_STAGE_PRESOLVING
    555 * - \ref SCIP_STAGE_EXITPRESOLVE
    556 * - \ref SCIP_STAGE_PRESOLVED
    557 * - \ref SCIP_STAGE_INITSOLVE
    558 * - \ref SCIP_STAGE_SOLVING
    559 * - \ref SCIP_STAGE_SOLVED
    560 * - \ref SCIP_STAGE_EXITSOLVE
    561 * - \ref SCIP_STAGE_FREETRANS
    562 */
    563SCIP_EXPORT
    565 SCIP* scip, /**< SCIP data structure */
    566 SCIP_SOL* sol, /**< primal solution */
    567 SCIP_VAR* var, /**< variable to add to solution */
    568 SCIP_RATIONAL* val /**< solution value of variable */
    569 );
    570
    571/** sets values of multiple variables in primal CIP solution
    572 *
    573 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    574 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    575 *
    576 * @pre This method can be called if SCIP is in one of the following stages:
    577 * - \ref SCIP_STAGE_PROBLEM
    578 * - \ref SCIP_STAGE_TRANSFORMING
    579 * - \ref SCIP_STAGE_TRANSFORMED
    580 * - \ref SCIP_STAGE_INITPRESOLVE
    581 * - \ref SCIP_STAGE_PRESOLVING
    582 * - \ref SCIP_STAGE_EXITPRESOLVE
    583 * - \ref SCIP_STAGE_PRESOLVED
    584 * - \ref SCIP_STAGE_INITSOLVE
    585 * - \ref SCIP_STAGE_SOLVING
    586 * - \ref SCIP_STAGE_SOLVED
    587 * - \ref SCIP_STAGE_EXITSOLVE
    588 * - \ref SCIP_STAGE_FREETRANS
    589 */
    590SCIP_EXPORT
    592 SCIP* scip, /**< SCIP data structure */
    593 SCIP_SOL* sol, /**< primal solution */
    594 int nvars, /**< number of variables to set solution value for */
    595 SCIP_VAR** vars, /**< array with variables to add to solution */
    596 SCIP_Real* vals /**< array with solution values of variables */
    597 );
    598
    599/** increases value of variable in primal CIP solution
    600 *
    601 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    602 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    603 *
    604 * @pre This method can be called if SCIP is in one of the following stages:
    605 * - \ref SCIP_STAGE_PROBLEM
    606 * - \ref SCIP_STAGE_TRANSFORMING
    607 * - \ref SCIP_STAGE_TRANSFORMED
    608 * - \ref SCIP_STAGE_INITPRESOLVE
    609 * - \ref SCIP_STAGE_PRESOLVING
    610 * - \ref SCIP_STAGE_EXITPRESOLVE
    611 * - \ref SCIP_STAGE_PRESOLVED
    612 * - \ref SCIP_STAGE_INITSOLVE
    613 * - \ref SCIP_STAGE_SOLVING
    614 * - \ref SCIP_STAGE_SOLVED
    615 * - \ref SCIP_STAGE_EXITSOLVE
    616 * - \ref SCIP_STAGE_FREETRANS
    617 */
    618SCIP_EXPORT
    620 SCIP* scip, /**< SCIP data structure */
    621 SCIP_SOL* sol, /**< primal solution */
    622 SCIP_VAR* var, /**< variable to increase solution value for */
    623 SCIP_Real incval /**< increment for solution value of variable */
    624 );
    625
    626/** returns value of variable in primal CIP solution, or in current LP/pseudo solution
    627 *
    628 * @return value of variable in primal CIP solution, or in current LP/pseudo solution
    629 *
    630 * @pre In case the solution pointer @p sol is @b NULL, that means it is asked for the LP or pseudo solution, this method
    631 * can only be called if @p scip is in the solving stage \ref SCIP_STAGE_SOLVING. In any other case, this method
    632 * can be called if @p scip is in one of the following stages:
    633 * - \ref SCIP_STAGE_PROBLEM
    634 * - \ref SCIP_STAGE_TRANSFORMING
    635 * - \ref SCIP_STAGE_TRANSFORMED
    636 * - \ref SCIP_STAGE_INITPRESOLVE
    637 * - \ref SCIP_STAGE_PRESOLVING
    638 * - \ref SCIP_STAGE_EXITPRESOLVE
    639 * - \ref SCIP_STAGE_PRESOLVED
    640 * - \ref SCIP_STAGE_INITSOLVE
    641 * - \ref SCIP_STAGE_SOLVING
    642 * - \ref SCIP_STAGE_SOLVED
    643 * - \ref SCIP_STAGE_EXITSOLVE
    644 * - \ref SCIP_STAGE_FREETRANS
    645 */
    646SCIP_EXPORT
    648 SCIP* scip, /**< SCIP data structure */
    649 SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
    650 SCIP_VAR* var /**< variable to get value for */
    651 );
    652
    653/** gets value of variable in primal CIP solution, or in current LP/pseudo solution
    654 *
    655 * @pre In case the solution pointer @p sol is @b NULL, that means it is asked for the LP or pseudo solution, this method
    656 * can only be called if @p scip is in the solving stage \ref SCIP_STAGE_SOLVING. In any other case, this method
    657 * can be called if @p scip is in one of the following stages:
    658 * - \ref SCIP_STAGE_PROBLEM
    659 * - \ref SCIP_STAGE_TRANSFORMING
    660 * - \ref SCIP_STAGE_TRANSFORMED
    661 * - \ref SCIP_STAGE_INITPRESOLVE
    662 * - \ref SCIP_STAGE_PRESOLVING
    663 * - \ref SCIP_STAGE_EXITPRESOLVE
    664 * - \ref SCIP_STAGE_PRESOLVED
    665 * - \ref SCIP_STAGE_INITSOLVE
    666 * - \ref SCIP_STAGE_SOLVING
    667 * - \ref SCIP_STAGE_SOLVED
    668 * - \ref SCIP_STAGE_EXITSOLVE
    669 * - \ref SCIP_STAGE_FREETRANS
    670 */
    671SCIP_EXPORT
    673 SCIP* scip, /**< SCIP data structure */
    674 SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
    675 SCIP_VAR* var, /**< variable to get value for */
    676 SCIP_RATIONAL* res /**< resulting rational */
    677 );
    678
    679/** gets values of multiple variables in primal CIP solution
    680 *
    681 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    682 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    683 *
    684 * @pre This method can be called if SCIP is in one of the following stages:
    685 * - \ref SCIP_STAGE_PROBLEM
    686 * - \ref SCIP_STAGE_TRANSFORMING
    687 * - \ref SCIP_STAGE_TRANSFORMED
    688 * - \ref SCIP_STAGE_INITPRESOLVE
    689 * - \ref SCIP_STAGE_PRESOLVING
    690 * - \ref SCIP_STAGE_EXITPRESOLVE
    691 * - \ref SCIP_STAGE_PRESOLVED
    692 * - \ref SCIP_STAGE_INITSOLVE
    693 * - \ref SCIP_STAGE_SOLVING
    694 * - \ref SCIP_STAGE_SOLVED
    695 * - \ref SCIP_STAGE_EXITSOLVE
    696 * - \ref SCIP_STAGE_FREETRANS
    697 */
    698SCIP_EXPORT
    700 SCIP* scip, /**< SCIP data structure */
    701 SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
    702 int nvars, /**< number of variables to get solution value for */
    703 SCIP_VAR** vars, /**< array with variables to get value for */
    704 SCIP_Real* vals /**< array to store solution values of variables */
    705 );
    706
    707/** returns objective value of primal CIP solution w.r.t. original problem, or current LP/pseudo objective value
    708 *
    709 * @return objective value of primal CIP solution w.r.t. original problem, or current LP/pseudo objective value
    710 *
    711 * @pre This method can be called if SCIP is in one of the following stages:
    712 * - \ref SCIP_STAGE_PROBLEM
    713 * - \ref SCIP_STAGE_TRANSFORMING
    714 * - \ref SCIP_STAGE_TRANSFORMED
    715 * - \ref SCIP_STAGE_INITPRESOLVE
    716 * - \ref SCIP_STAGE_PRESOLVING
    717 * - \ref SCIP_STAGE_EXITPRESOLVE
    718 * - \ref SCIP_STAGE_PRESOLVED
    719 * - \ref SCIP_STAGE_INITSOLVE
    720 * - \ref SCIP_STAGE_SOLVING
    721 * - \ref SCIP_STAGE_SOLVED
    722 * - \ref SCIP_STAGE_EXITSOLVE
    723 * - \ref SCIP_STAGE_FREETRANS
    724 */
    725SCIP_EXPORT
    727 SCIP* scip, /**< SCIP data structure */
    728 SCIP_SOL* sol /**< primal solution, or NULL for current LP/pseudo objective value */
    729 );
    730
    731/** gets exact objective value of primal CIP solution w.r.t. original problem, or current LP/pseudo objective value
    732 *
    733 * @pre This method can be called if SCIP is in one of the following stages:
    734 * - \ref SCIP_STAGE_PROBLEM
    735 * - \ref SCIP_STAGE_TRANSFORMING
    736 * - \ref SCIP_STAGE_TRANSFORMED
    737 * - \ref SCIP_STAGE_INITPRESOLVE
    738 * - \ref SCIP_STAGE_PRESOLVING
    739 * - \ref SCIP_STAGE_EXITPRESOLVE
    740 * - \ref SCIP_STAGE_PRESOLVED
    741 * - \ref SCIP_STAGE_INITSOLVE
    742 * - \ref SCIP_STAGE_SOLVING
    743 * - \ref SCIP_STAGE_SOLVED
    744 * - \ref SCIP_STAGE_EXITSOLVE
    745 * - \ref SCIP_STAGE_FREETRANS
    746 */
    747SCIP_EXPORT
    749 SCIP* scip, /**< SCIP data structure */
    750 SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo objective value */
    751 SCIP_RATIONAL* res /**< result pointer to store rational */
    752 );
    753
    754/** returns transformed objective value of primal CIP solution, or transformed current LP/pseudo objective value
    755 *
    756 * @return transformed objective value of primal CIP solution, or transformed current LP/pseudo objective value
    757 *
    758 * @pre This method can be called if SCIP is in one of the following stages:
    759 * - \ref SCIP_STAGE_TRANSFORMING
    760 * - \ref SCIP_STAGE_TRANSFORMED
    761 * - \ref SCIP_STAGE_INITPRESOLVE
    762 * - \ref SCIP_STAGE_PRESOLVING
    763 * - \ref SCIP_STAGE_EXITPRESOLVE
    764 * - \ref SCIP_STAGE_PRESOLVED
    765 * - \ref SCIP_STAGE_INITSOLVE
    766 * - \ref SCIP_STAGE_SOLVING
    767 * - \ref SCIP_STAGE_SOLVED
    768 * - \ref SCIP_STAGE_EXITSOLVE
    769 * - \ref SCIP_STAGE_FREETRANS
    770 */
    771SCIP_EXPORT
    773 SCIP* scip, /**< SCIP data structure */
    774 SCIP_SOL* sol /**< primal solution, or NULL for current LP/pseudo objective value */
    775 );
    776
    777/** gets transformed objective value of primal CIP solution, or transformed current LP/pseudo objective value
    778 *
    779 * @pre This method can be called if SCIP is in one of the following stages:
    780 * - \ref SCIP_STAGE_TRANSFORMING
    781 * - \ref SCIP_STAGE_TRANSFORMED
    782 * - \ref SCIP_STAGE_INITPRESOLVE
    783 * - \ref SCIP_STAGE_PRESOLVING
    784 * - \ref SCIP_STAGE_EXITPRESOLVE
    785 * - \ref SCIP_STAGE_PRESOLVED
    786 * - \ref SCIP_STAGE_INITSOLVE
    787 * - \ref SCIP_STAGE_SOLVING
    788 * - \ref SCIP_STAGE_SOLVED
    789 * - \ref SCIP_STAGE_EXITSOLVE
    790 * - \ref SCIP_STAGE_FREETRANS
    791 */
    793 SCIP* scip, /**< SCIP data structure */
    794 SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo objective value */
    795 SCIP_RATIONAL* res /**< result pointer to store rational */
    796 );
    797
    798/** recomputes the objective value of an original solution, e.g., when transferring solutions
    799 * from the solution pool (objective coefficients might have changed in the meantime)
    800 *
    801 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    802 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    803 *
    804 * @pre This method can be called if SCIP is in one of the following stages:
    805 * - \ref SCIP_STAGE_PRESOLVING
    806 * - \ref SCIP_STAGE_SOLVING
    807 *
    808 */
    809SCIP_EXPORT
    811 SCIP* scip,
    812 SCIP_SOL* sol
    813 );
    814
    815/** maps original space objective value into transformed objective value
    816 *
    817 * @return transformed objective value
    818 *
    819 * @pre This method can be called if SCIP is in one of the following stages:
    820 * - \ref SCIP_STAGE_TRANSFORMING
    821 * - \ref SCIP_STAGE_TRANSFORMED
    822 * - \ref SCIP_STAGE_INITPRESOLVE
    823 * - \ref SCIP_STAGE_PRESOLVING
    824 * - \ref SCIP_STAGE_EXITPRESOLVE
    825 * - \ref SCIP_STAGE_PRESOLVED
    826 * - \ref SCIP_STAGE_INITSOLVE
    827 * - \ref SCIP_STAGE_SOLVING
    828 * - \ref SCIP_STAGE_SOLVED
    829 */
    830SCIP_EXPORT
    832 SCIP* scip, /**< SCIP data structure */
    833 SCIP_Real obj /**< original space objective value to transform */
    834 );
    835
    836/** maps transformed objective value into original space
    837 *
    838 * @return objective value into original space
    839 *
    840 * @pre This method can be called if SCIP is in one of the following stages:
    841 * - \ref SCIP_STAGE_TRANSFORMING
    842 * - \ref SCIP_STAGE_TRANSFORMED
    843 * - \ref SCIP_STAGE_INITPRESOLVE
    844 * - \ref SCIP_STAGE_PRESOLVING
    845 * - \ref SCIP_STAGE_EXITPRESOLVE
    846 * - \ref SCIP_STAGE_PRESOLVED
    847 * - \ref SCIP_STAGE_INITSOLVE
    848 * - \ref SCIP_STAGE_SOLVING
    849 * - \ref SCIP_STAGE_SOLVED
    850 */
    851SCIP_EXPORT
    853 SCIP* scip, /**< SCIP data structure */
    854 SCIP_Real obj /**< transformed objective value to retransform in original space */
    855 );
    856
    857/** gets clock time, when this solution was found
    858 *
    859 * @return clock time, when this solution was found
    860 *
    861 * @pre This method can be called if SCIP is in one of the following stages:
    862 * - \ref SCIP_STAGE_TRANSFORMING
    863 * - \ref SCIP_STAGE_TRANSFORMED
    864 * - \ref SCIP_STAGE_INITPRESOLVE
    865 * - \ref SCIP_STAGE_PRESOLVING
    866 * - \ref SCIP_STAGE_EXITPRESOLVE
    867 * - \ref SCIP_STAGE_PRESOLVED
    868 * - \ref SCIP_STAGE_INITSOLVE
    869 * - \ref SCIP_STAGE_SOLVING
    870 * - \ref SCIP_STAGE_SOLVED
    871 * - \ref SCIP_STAGE_EXITSOLVE
    872 * - \ref SCIP_STAGE_FREETRANS
    873 */
    874SCIP_EXPORT
    876 SCIP* scip, /**< SCIP data structure */
    877 SCIP_SOL* sol /**< primal solution */
    878 );
    879
    880/** gets branch and bound run number, where this solution was found
    881 *
    882 * @return branch and bound run number, where this solution was found
    883 *
    884 * @pre This method can be called if SCIP is in one of the following stages:
    885 * - \ref SCIP_STAGE_TRANSFORMING
    886 * - \ref SCIP_STAGE_TRANSFORMED
    887 * - \ref SCIP_STAGE_INITPRESOLVE
    888 * - \ref SCIP_STAGE_PRESOLVING
    889 * - \ref SCIP_STAGE_EXITPRESOLVE
    890 * - \ref SCIP_STAGE_PRESOLVED
    891 * - \ref SCIP_STAGE_INITSOLVE
    892 * - \ref SCIP_STAGE_SOLVING
    893 * - \ref SCIP_STAGE_SOLVED
    894 * - \ref SCIP_STAGE_EXITSOLVE
    895 * - \ref SCIP_STAGE_FREETRANS
    896 */
    897SCIP_EXPORT
    899 SCIP* scip, /**< SCIP data structure */
    900 SCIP_SOL* sol /**< primal solution */
    901 );
    902
    903/** gets node number of the specific branch and bound run, where this solution was found
    904 *
    905 * @return node number of the specific branch and bound run, where this solution was found
    906 *
    907 * @pre This method can be called if SCIP is in one of the following stages:
    908 * - \ref SCIP_STAGE_TRANSFORMING
    909 * - \ref SCIP_STAGE_TRANSFORMED
    910 * - \ref SCIP_STAGE_INITPRESOLVE
    911 * - \ref SCIP_STAGE_PRESOLVING
    912 * - \ref SCIP_STAGE_EXITPRESOLVE
    913 * - \ref SCIP_STAGE_PRESOLVED
    914 * - \ref SCIP_STAGE_INITSOLVE
    915 * - \ref SCIP_STAGE_SOLVING
    916 * - \ref SCIP_STAGE_SOLVED
    917 * - \ref SCIP_STAGE_EXITSOLVE
    918 * - \ref SCIP_STAGE_FREETRANS
    919 */
    920SCIP_EXPORT
    922 SCIP* scip, /**< SCIP data structure */
    923 SCIP_SOL* sol /**< primal solution */
    924 );
    925
    926/** gets heuristic, that found this solution (or NULL if it's from the tree)
    927 *
    928 * @return heuristic, that found this solution (or NULL if it's from the tree)
    929 *
    930 * @pre This method can be called if SCIP is in one of the following stages:
    931 * - \ref SCIP_STAGE_TRANSFORMING
    932 * - \ref SCIP_STAGE_TRANSFORMED
    933 * - \ref SCIP_STAGE_INITPRESOLVE
    934 * - \ref SCIP_STAGE_PRESOLVING
    935 * - \ref SCIP_STAGE_EXITPRESOLVE
    936 * - \ref SCIP_STAGE_PRESOLVED
    937 * - \ref SCIP_STAGE_INITSOLVE
    938 * - \ref SCIP_STAGE_SOLVING
    939 * - \ref SCIP_STAGE_SOLVED
    940 * - \ref SCIP_STAGE_EXITSOLVE
    941 * - \ref SCIP_STAGE_FREETRANS
    942 */
    943SCIP_EXPORT
    945 SCIP* scip, /**< SCIP data structure */
    946 SCIP_SOL* sol /**< primal solution */
    947 );
    948
    949/** returns whether two given solutions are exactly equal
    950 *
    951 * @return returns whether two given solutions are exactly equal
    952 *
    953 * @pre This method can be called if SCIP is in one of the following stages:
    954 * - \ref SCIP_STAGE_PROBLEM
    955 * - \ref SCIP_STAGE_TRANSFORMING
    956 * - \ref SCIP_STAGE_TRANSFORMED
    957 * - \ref SCIP_STAGE_INITPRESOLVE
    958 * - \ref SCIP_STAGE_PRESOLVING
    959 * - \ref SCIP_STAGE_EXITPRESOLVE
    960 * - \ref SCIP_STAGE_PRESOLVED
    961 * - \ref SCIP_STAGE_INITSOLVE
    962 * - \ref SCIP_STAGE_SOLVING
    963 * - \ref SCIP_STAGE_SOLVED
    964 * - \ref SCIP_STAGE_EXITSOLVE
    965 * - \ref SCIP_STAGE_FREETRANS
    966 */
    967SCIP_EXPORT
    969 SCIP* scip, /**< SCIP data structure */
    970 SCIP_SOL* sol1, /**< first primal CIP solution */
    971 SCIP_SOL* sol2 /**< second primal CIP solution */
    972 );
    973
    974/** adjusts solution values of implied integral variables in handed solution, solution objective value is not
    975 * deteriorated by this method
    976 *
    977 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    978 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    979 *
    980 * @pre This method can be called if SCIP is in one of the following stages:
    981 * - \ref SCIP_STAGE_SOLVING
    982 */
    983SCIP_EXPORT
    985 SCIP* scip, /**< SCIP data structure */
    986 SCIP_SOL* sol, /**< primal CIP solution */
    987 SCIP_Bool uselprows /**< should LP row information be considered for none-objective variables */
    988 );
    989
    990/** outputs non-zero variables of solution in original problem space to the given file stream
    991 *
    992 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    993 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    994 *
    995 * @pre In case the solution pointer @p sol is NULL (askinking for the current LP/pseudo solution), this method can be
    996 * called if @p scip is in one of the following stages:
    997 * - \ref SCIP_STAGE_PRESOLVING
    998 * - \ref SCIP_STAGE_EXITPRESOLVE
    999 * - \ref SCIP_STAGE_PRESOLVED
    1000 * - \ref SCIP_STAGE_INITSOLVE
    1001 * - \ref SCIP_STAGE_SOLVING
    1002 * - \ref SCIP_STAGE_SOLVED
    1003 * - \ref SCIP_STAGE_EXITSOLVE
    1004 *
    1005 * @pre In case the solution pointer @p sol is @b not NULL, this method can be called if @p scip is in one of the
    1006 * following stages:
    1007 * - \ref SCIP_STAGE_PROBLEM
    1008 * - \ref SCIP_STAGE_TRANSFORMED
    1009 * - \ref SCIP_STAGE_INITPRESOLVE
    1010 * - \ref SCIP_STAGE_PRESOLVING
    1011 * - \ref SCIP_STAGE_EXITPRESOLVE
    1012 * - \ref SCIP_STAGE_PRESOLVED
    1013 * - \ref SCIP_STAGE_INITSOLVE
    1014 * - \ref SCIP_STAGE_SOLVING
    1015 * - \ref SCIP_STAGE_SOLVED
    1016 * - \ref SCIP_STAGE_EXITSOLVE
    1017 */
    1018SCIP_EXPORT
    1020 SCIP* scip, /**< SCIP data structure */
    1021 SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
    1022 FILE* file, /**< output file (or NULL for standard output) */
    1023 SCIP_Bool printzeros /**< should variables set to zero be printed? */
    1024 );
    1025
    1026/** print a rational solution */
    1027SCIP_EXPORT
    1029 SCIP* scip, /**< SCIP data structure */
    1030 SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
    1031 FILE* file, /**< output file (or NULL for standard output) */
    1032 SCIP_Bool printzeros /**< should variables set to zero be printed? */
    1033 );
    1034
    1035/** outputs non-zero variables of solution in transformed problem space to file stream
    1036 *
    1037 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1038 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1039 *
    1040 * @pre This method can be called if SCIP is in one of the following stages:
    1041 * - \ref SCIP_STAGE_TRANSFORMED
    1042 * - \ref SCIP_STAGE_INITPRESOLVE
    1043 * - \ref SCIP_STAGE_PRESOLVING
    1044 * - \ref SCIP_STAGE_EXITPRESOLVE
    1045 * - \ref SCIP_STAGE_PRESOLVED
    1046 * - \ref SCIP_STAGE_INITSOLVE
    1047 * - \ref SCIP_STAGE_SOLVING
    1048 * - \ref SCIP_STAGE_SOLVED
    1049 * - \ref SCIP_STAGE_EXITSOLVE
    1050 */
    1051SCIP_EXPORT
    1053 SCIP* scip, /**< SCIP data structure */
    1054 SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
    1055 FILE* file, /**< output file (or NULL for standard output) */
    1056 SCIP_Bool printzeros /**< should variables set to zero be printed? */
    1057 );
    1058
    1059/** outputs discrete variables of solution in original problem space to the given file stream
    1060 *
    1061 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1062 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1063 *
    1064 * @pre This method can be called if @p scip is in one of the following stages:
    1065 * - \ref SCIP_STAGE_PROBLEM
    1066 * - \ref SCIP_STAGE_TRANSFORMED
    1067 * - \ref SCIP_STAGE_INITPRESOLVE
    1068 * - \ref SCIP_STAGE_PRESOLVING
    1069 * - \ref SCIP_STAGE_EXITPRESOLVE
    1070 * - \ref SCIP_STAGE_PRESOLVED
    1071 * - \ref SCIP_STAGE_INITSOLVE
    1072 * - \ref SCIP_STAGE_SOLVING
    1073 * - \ref SCIP_STAGE_SOLVED
    1074 * - \ref SCIP_STAGE_EXITSOLVE
    1075 */
    1076SCIP_EXPORT
    1078 SCIP* scip, /**< SCIP data structure */
    1079 SCIP_SOL* sol, /**< primal solution */
    1080 FILE* file /**< output file (or NULL for standard output) */
    1081 );
    1082
    1083/** returns dual solution value of a constraint */
    1084SCIP_EXPORT
    1086 SCIP* scip, /**< SCIP data structure */
    1087 SCIP_CONS* cons, /**< constraint for which the dual solution should be returned */
    1088 SCIP_Real* dualsolval, /**< pointer to store the dual solution value */
    1089 SCIP_Bool* boundconstraint /**< pointer to store whether the constraint is a bound constraint (or NULL) */
    1090 );
    1091
    1092/** check whether the dual solution is available
    1093 *
    1094 * @note This is used when calling \ref SCIPprintDualSol()
    1095 *
    1096 * @return is dual solution available?
    1097 *
    1098 * @pre This method can be called if SCIP is in one of the following stages:
    1099 * - \ref SCIP_STAGE_SOLVED
    1100 */
    1101SCIP_EXPORT
    1103 SCIP* scip, /**< SCIP data structure */
    1104 SCIP_Bool printreason /**< print warning message if dualsol is not available? */
    1105 );
    1106
    1107/** outputs dual solution from LP solver to file stream
    1108 *
    1109 * @note This only works if no presolving has been performed, which can be checked by calling method \ref
    1110 * SCIPhasPerformedPresolve().
    1111 *
    1112 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1113 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1114 *
    1115 * @pre This method can be called if SCIP is in one of the following stages:
    1116 * - \ref SCIP_STAGE_SOLVED
    1117 */
    1118SCIP_EXPORT
    1120 SCIP* scip, /**< SCIP data structure */
    1121 FILE* file, /**< output file (or NULL for standard output) */
    1122 SCIP_Bool printzeros /**< should variables set to zero be printed? */
    1123 );
    1124
    1125
    1126/** outputs non-zero variables of solution representing a ray in original problem space to file stream
    1127 *
    1128 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1129 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1130 *
    1131 * @pre This method can be called if SCIP is in one of the following stages:
    1132 * - \ref SCIP_STAGE_PROBLEM
    1133 * - \ref SCIP_STAGE_TRANSFORMED
    1134 * - \ref SCIP_STAGE_INITPRESOLVE
    1135 * - \ref SCIP_STAGE_PRESOLVING
    1136 * - \ref SCIP_STAGE_EXITPRESOLVE
    1137 * - \ref SCIP_STAGE_PRESOLVED
    1138 * - \ref SCIP_STAGE_INITSOLVE
    1139 * - \ref SCIP_STAGE_SOLVING
    1140 * - \ref SCIP_STAGE_SOLVED
    1141 * - \ref SCIP_STAGE_EXITSOLVE
    1142 */
    1143SCIP_EXPORT
    1145 SCIP* scip, /**< SCIP data structure */
    1146 SCIP_SOL* sol, /**< primal solution representing ray */
    1147 FILE* file, /**< output file (or NULL for standard output) */
    1148 SCIP_Bool printzeros /**< should variables set to zero be printed? */
    1149 );
    1150
    1151/** gets number of feasible primal solutions stored in the solution storage in case the problem is transformed;
    1152 * in case the problem stage is SCIP_STAGE_PROBLEM, the number of solution in the original solution candidate
    1153 * storage is returned
    1154 *
    1155 * @return number of feasible primal solutions stored in the solution storage in case the problem is transformed; or
    1156 * number of solution in the original solution candidate storage if the problem stage is SCIP_STAGE_PROBLEM
    1157 *
    1158 * @pre This method can be called if SCIP is in one of the following stages:
    1159 * - \ref SCIP_STAGE_PROBLEM
    1160 * - \ref SCIP_STAGE_TRANSFORMED
    1161 * - \ref SCIP_STAGE_INITPRESOLVE
    1162 * - \ref SCIP_STAGE_PRESOLVING
    1163 * - \ref SCIP_STAGE_EXITPRESOLVE
    1164 * - \ref SCIP_STAGE_PRESOLVED
    1165 * - \ref SCIP_STAGE_INITSOLVE
    1166 * - \ref SCIP_STAGE_SOLVING
    1167 * - \ref SCIP_STAGE_SOLVED
    1168 * - \ref SCIP_STAGE_EXITSOLVE
    1169 */
    1170SCIP_EXPORT
    1171int SCIPgetNSols(
    1172 SCIP* scip /**< SCIP data structure */
    1173 );
    1174
    1175/** gets array of feasible primal solutions stored in the solution storage in case the problem is transformed; in case
    1176 * if the problem stage is in SCIP_STAGE_PROBLEM, it returns the number array of solution candidate stored
    1177 *
    1178 * @return array of feasible primal solutions
    1179 *
    1180 * @pre This method can be called if SCIP is in one of the following stages:
    1181 * - \ref SCIP_STAGE_PROBLEM
    1182 * - \ref SCIP_STAGE_TRANSFORMED
    1183 * - \ref SCIP_STAGE_INITPRESOLVE
    1184 * - \ref SCIP_STAGE_PRESOLVING
    1185 * - \ref SCIP_STAGE_EXITPRESOLVE
    1186 * - \ref SCIP_STAGE_PRESOLVED
    1187 * - \ref SCIP_STAGE_INITSOLVE
    1188 * - \ref SCIP_STAGE_SOLVING
    1189 * - \ref SCIP_STAGE_SOLVED
    1190 * - \ref SCIP_STAGE_EXITSOLVE
    1191 */
    1192SCIP_EXPORT
    1194 SCIP* scip /**< SCIP data structure */
    1195 );
    1196
    1197/** gets best feasible primal solution found so far if the problem is transformed; in case the problem is in
    1198 * SCIP_STAGE_PROBLEM it returns the best solution candidate, or NULL if no solution has been found or the candidate
    1199 * store is empty;
    1200 *
    1201 * @return best feasible primal solution so far
    1202 *
    1203 * @pre This method can be called if SCIP is in one of the following stages:
    1204 * - \ref SCIP_STAGE_PROBLEM
    1205 * - \ref SCIP_STAGE_TRANSFORMED
    1206 * - \ref SCIP_STAGE_INITPRESOLVE
    1207 * - \ref SCIP_STAGE_PRESOLVING
    1208 * - \ref SCIP_STAGE_EXITPRESOLVE
    1209 * - \ref SCIP_STAGE_PRESOLVED
    1210 * - \ref SCIP_STAGE_INITSOLVE
    1211 * - \ref SCIP_STAGE_SOLVING
    1212 * - \ref SCIP_STAGE_SOLVED
    1213 * - \ref SCIP_STAGE_EXITSOLVE
    1214 */
    1215SCIP_EXPORT
    1217 SCIP* scip /**< SCIP data structure */
    1218 );
    1219
    1220/** outputs best feasible primal solution found so far to file stream
    1221 *
    1222 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1223 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1224 *
    1225 * @pre This method can be called if SCIP is in one of the following stages:
    1226 * - \ref SCIP_STAGE_INIT
    1227 * - \ref SCIP_STAGE_PROBLEM
    1228 * - \ref SCIP_STAGE_TRANSFORMING
    1229 * - \ref SCIP_STAGE_TRANSFORMED
    1230 * - \ref SCIP_STAGE_INITPRESOLVE
    1231 * - \ref SCIP_STAGE_PRESOLVING
    1232 * - \ref SCIP_STAGE_EXITPRESOLVE
    1233 * - \ref SCIP_STAGE_PRESOLVED
    1234 * - \ref SCIP_STAGE_INITSOLVE
    1235 * - \ref SCIP_STAGE_SOLVING
    1236 * - \ref SCIP_STAGE_SOLVED
    1237 * - \ref SCIP_STAGE_EXITSOLVE
    1238 * - \ref SCIP_STAGE_FREE
    1239 */
    1240SCIP_EXPORT
    1242 SCIP* scip, /**< SCIP data structure */
    1243 FILE* file, /**< output file (or NULL for standard output) */
    1244 SCIP_Bool printzeros /**< should variables set to zero be printed? */
    1245 );
    1246
    1247/** outputs best feasible primal solution found so far in transformed variables to file stream
    1248 *
    1249 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1250 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1251 *
    1252 * @pre This method can be called if SCIP is in one of the following stages:
    1253 * - \ref SCIP_STAGE_INIT
    1254 * - \ref SCIP_STAGE_PROBLEM
    1255 * - \ref SCIP_STAGE_TRANSFORMED
    1256 * - \ref SCIP_STAGE_INITPRESOLVE
    1257 * - \ref SCIP_STAGE_PRESOLVING
    1258 * - \ref SCIP_STAGE_EXITPRESOLVE
    1259 * - \ref SCIP_STAGE_PRESOLVED
    1260 * - \ref SCIP_STAGE_INITSOLVE
    1261 * - \ref SCIP_STAGE_SOLVING
    1262 * - \ref SCIP_STAGE_SOLVED
    1263 * - \ref SCIP_STAGE_EXITSOLVE
    1264 */
    1265SCIP_EXPORT
    1267 SCIP* scip, /**< SCIP data structure */
    1268 FILE* file, /**< output file (or NULL for standard output) */
    1269 SCIP_Bool printzeros /**< should variables set to zero be printed? */
    1270 );
    1271
    1272/** try to round given solution
    1273 *
    1274 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1275 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1276 *
    1277 * @pre This method can be called if SCIP is in one of the following stages:
    1278 * - \ref SCIP_STAGE_SOLVING
    1279 */
    1280SCIP_EXPORT
    1282 SCIP* scip, /**< SCIP data structure */
    1283 SCIP_SOL* sol, /**< primal solution */
    1284 SCIP_Bool* success /**< pointer to store whether rounding was successful */
    1285 );
    1286
    1287/** copy the fp values to the exact arrays of the solution */
    1288SCIP_EXPORT
    1290 SCIP* scip, /**< SCIP data structure */
    1291 SCIP_SOL* sol /**< primal solution */
    1292 );
    1293
    1294/** retransforms solution to original problem space
    1295 *
    1296 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1297 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1298 *
    1299 * @pre This method can be called if SCIP is in one of the following stages:
    1300 * - \ref SCIP_STAGE_PROBLEM
    1301 * - \ref SCIP_STAGE_TRANSFORMING
    1302 * - \ref SCIP_STAGE_TRANSFORMED
    1303 * - \ref SCIP_STAGE_INITPRESOLVE
    1304 * - \ref SCIP_STAGE_PRESOLVING
    1305 * - \ref SCIP_STAGE_EXITPRESOLVE
    1306 * - \ref SCIP_STAGE_PRESOLVED
    1307 * - \ref SCIP_STAGE_INITSOLVE
    1308 * - \ref SCIP_STAGE_SOLVING
    1309 * - \ref SCIP_STAGE_SOLVED
    1310 * - \ref SCIP_STAGE_EXITSOLVE
    1311 * - \ref SCIP_STAGE_FREETRANS
    1312 */
    1313SCIP_EXPORT
    1315 SCIP* scip, /**< SCIP data structure */
    1316 SCIP_SOL* sol /**< primal CIP solution */
    1317 );
    1318
    1319/** retransforms exact solution to original problem space
    1320 *
    1321 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1322 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1323 *
    1324 * @pre This method can be called if SCIP is in one of the following stages:
    1325 * - \ref SCIP_STAGE_PROBLEM
    1326 * - \ref SCIP_STAGE_TRANSFORMING
    1327 * - \ref SCIP_STAGE_TRANSFORMED
    1328 * - \ref SCIP_STAGE_INITPRESOLVE
    1329 * - \ref SCIP_STAGE_PRESOLVING
    1330 * - \ref SCIP_STAGE_EXITPRESOLVE
    1331 * - \ref SCIP_STAGE_PRESOLVED
    1332 * - \ref SCIP_STAGE_INITSOLVE
    1333 * - \ref SCIP_STAGE_SOLVING
    1334 * - \ref SCIP_STAGE_SOLVED
    1335 * - \ref SCIP_STAGE_EXITSOLVE
    1336 * - \ref SCIP_STAGE_FREETRANS
    1337 */
    1338SCIP_EXPORT
    1340 SCIP* scip, /**< SCIP data structure */
    1341 SCIP_SOL* sol /**< primal CIP solution */
    1342 );
    1343
    1344/** reads a given solution file
    1345 *
    1346 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1347 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1348 *
    1349 * @pre This method can be called if SCIP is in one of the following stages:
    1350 * - \ref SCIP_STAGE_PROBLEM
    1351 * - \ref SCIP_STAGE_TRANSFORMED
    1352 * - \ref SCIP_STAGE_INITPRESOLVE
    1353 * - \ref SCIP_STAGE_PRESOLVING
    1354 * - \ref SCIP_STAGE_EXITPRESOLVE
    1355 * - \ref SCIP_STAGE_PRESOLVED
    1356 * - \ref SCIP_STAGE_INITSOLVE
    1357 * - \ref SCIP_STAGE_SOLVING
    1358 */
    1359SCIP_EXPORT
    1361 SCIP* scip, /**< SCIP data structure */
    1362 const char* filename /**< name of the input file */
    1363 );
    1364
    1365/** reads a given solution file and store the solution values in the given solution pointer
    1366 *
    1367 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1368 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1369 *
    1370 * @pre This method can be called if SCIP is in one of the following stages:
    1371 * - \ref SCIP_STAGE_PROBLEM
    1372 * - \ref SCIP_STAGE_TRANSFORMED
    1373 * - \ref SCIP_STAGE_INITPRESOLVE
    1374 * - \ref SCIP_STAGE_PRESOLVING
    1375 * - \ref SCIP_STAGE_EXITPRESOLVE
    1376 * - \ref SCIP_STAGE_PRESOLVED
    1377 * - \ref SCIP_STAGE_INITSOLVE
    1378 * - \ref SCIP_STAGE_SOLVING
    1379 */
    1380SCIP_EXPORT
    1382 SCIP* scip, /**< SCIP data structure */
    1383 const char* filename, /**< name of the input file */
    1384 SCIP_SOL* sol, /**< solution pointer */
    1385 SCIP_Bool xml, /**< true, iff the given solution in written in XML */
    1386 SCIP_Bool* partial, /**< pointer to store if the solution is partial */
    1387 SCIP_Bool* error /**< pointer store if an error occured */
    1388 );
    1389
    1390/** adds feasible primal solution to solution storage by copying it
    1391 *
    1392 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1393 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1394 *
    1395 * @pre This method can be called if SCIP is in one of the following stages:
    1396 * - \ref SCIP_STAGE_PROBLEM
    1397 * - \ref SCIP_STAGE_TRANSFORMED
    1398 * - \ref SCIP_STAGE_INITPRESOLVE
    1399 * - \ref SCIP_STAGE_PRESOLVING
    1400 * - \ref SCIP_STAGE_EXITPRESOLVE
    1401 * - \ref SCIP_STAGE_PRESOLVED
    1402 * - \ref SCIP_STAGE_SOLVING
    1403 * - \ref SCIP_STAGE_FREETRANS
    1404 *
    1405 * @note Do not call during propagation, use heur_trysol instead.
    1406 */
    1407SCIP_EXPORT
    1409 SCIP* scip, /**< SCIP data structure */
    1410 SCIP_SOL* sol, /**< primal CIP solution */
    1411 SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
    1412 );
    1413
    1414/** adds primal solution to solution storage, frees the solution afterwards
    1415 *
    1416 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1417 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1418 *
    1419 * @pre This method can be called if SCIP is in one of the following stages:
    1420 * - \ref SCIP_STAGE_PROBLEM
    1421 * - \ref SCIP_STAGE_TRANSFORMED
    1422 * - \ref SCIP_STAGE_INITPRESOLVE
    1423 * - \ref SCIP_STAGE_PRESOLVING
    1424 * - \ref SCIP_STAGE_EXITPRESOLVE
    1425 * - \ref SCIP_STAGE_PRESOLVED
    1426 * - \ref SCIP_STAGE_SOLVING
    1427 * - \ref SCIP_STAGE_FREETRANS
    1428 *
    1429 * @note Do not call during propagation, use heur_trysol instead.
    1430 */
    1431SCIP_EXPORT
    1433 SCIP* scip, /**< SCIP data structure */
    1434 SCIP_SOL** sol, /**< pointer to primal CIP solution; is cleared in function call */
    1435 SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
    1436 );
    1437
    1438/** adds current LP/pseudo solution to solution storage
    1439 *
    1440 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1441 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1442 *
    1443 * @pre This method can be called if SCIP is in one of the following stages:
    1444 * - \ref SCIP_STAGE_PRESOLVED
    1445 * - \ref SCIP_STAGE_SOLVING
    1446 */
    1447SCIP_EXPORT
    1449 SCIP* scip, /**< SCIP data structure */
    1450 SCIP_HEUR* heur, /**< heuristic that found the solution */
    1451 SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
    1452 );
    1453
    1454/** checks solution for feasibility; if possible, adds it to storage by copying
    1455 *
    1456 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1457 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1458 *
    1459 * @pre This method can be called if SCIP is in one of the following stages:
    1460 * - \ref SCIP_STAGE_TRANSFORMED
    1461 * - \ref SCIP_STAGE_INITPRESOLVE
    1462 * - \ref SCIP_STAGE_PRESOLVING
    1463 * - \ref SCIP_STAGE_EXITPRESOLVE
    1464 * - \ref SCIP_STAGE_PRESOLVED
    1465 * - \ref SCIP_STAGE_SOLVING
    1466 *
    1467 * @note Do not call during propagation, use heur_trysol instead.
    1468 */
    1469SCIP_EXPORT
    1471 SCIP* scip, /**< SCIP data structure */
    1472 SCIP_SOL* sol, /**< primal CIP solution */
    1473 SCIP_Bool printreason, /**< Should all reasons of violations be printed? */
    1474 SCIP_Bool completely, /**< Should all violations be checked if printreason is true? */
    1475 SCIP_Bool checkbounds, /**< Should the bounds of the variables be checked? */
    1476 SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
    1477 SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
    1478 SCIP_Bool* stored /**< stores whether given solution was feasible and good enough to keep */
    1479 );
    1480
    1481/** checks primal solution; if feasible, adds it to storage; solution is freed afterwards
    1482 *
    1483 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1484 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1485 *
    1486 * @pre This method can be called if SCIP is in one of the following stages:
    1487 * - \ref SCIP_STAGE_TRANSFORMED
    1488 * - \ref SCIP_STAGE_INITPRESOLVE
    1489 * - \ref SCIP_STAGE_PRESOLVING
    1490 * - \ref SCIP_STAGE_EXITPRESOLVE
    1491 * - \ref SCIP_STAGE_PRESOLVED
    1492 * - \ref SCIP_STAGE_SOLVING
    1493 *
    1494 * @note Do not call during propagation, use heur_trysol instead.
    1495 */
    1496SCIP_EXPORT
    1498 SCIP* scip, /**< SCIP data structure */
    1499 SCIP_SOL** sol, /**< pointer to primal CIP solution; is cleared in function call */
    1500 SCIP_Bool printreason, /**< Should all reasons of violations be printed? */
    1501 SCIP_Bool completely, /**< Should all violations be checked if printreason is true? */
    1502 SCIP_Bool checkbounds, /**< Should the bounds of the variables be checked? */
    1503 SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
    1504 SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
    1505 SCIP_Bool* stored /**< stores whether solution was feasible and good enough to keep */
    1506 );
    1507
    1508/** checks current LP/pseudo solution for feasibility; if possible, adds it to storage
    1509 *
    1510 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1511 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1512 *
    1513 * @pre This method can be called if SCIP is in one of the following stages:
    1514 * - \ref SCIP_STAGE_PRESOLVED
    1515 * - \ref SCIP_STAGE_SOLVING
    1516 */
    1517SCIP_EXPORT
    1519 SCIP* scip, /**< SCIP data structure */
    1520 SCIP_HEUR* heur, /**< heuristic that found the solution */
    1521 SCIP_Bool printreason, /**< Should all reasons of violations be printed? */
    1522 SCIP_Bool completely, /**< Should all violations be checked if printreason is true? */
    1523 SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
    1524 SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
    1525 SCIP_Bool* stored /**< stores whether given solution was feasible and good enough to keep */
    1526 );
    1527
    1528/** returns all partial solutions
    1529 *
    1530 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1531 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1532 *
    1533 * @pre This method can be called if SCIP is in one of the following stages:
    1534 * - \ref SCIP_STAGE_PROBLEM
    1535 * - \ref SCIP_STAGE_PRESOLVING
    1536 * - \ref SCIP_STAGE_SOLVING
    1537 * - \ref SCIP_STAGE_SOLVED
    1538 */
    1539SCIP_EXPORT
    1541 SCIP* scip /**< SCIP data structure */
    1542 );
    1543
    1544/** returns number of partial solutions
    1545 *
    1546 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1547 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1548 *
    1549 * @pre This method can be called if SCIP is in one of the following stages:
    1550 * - \ref SCIP_STAGE_PROBLEM
    1551 * - \ref SCIP_STAGE_PRESOLVING
    1552 * - \ref SCIP_STAGE_SOLVING
    1553 * - \ref SCIP_STAGE_SOLVED
    1554 */
    1556 SCIP* scip /**< SCIP data structure */
    1557 );
    1558
    1559/** checks solution for feasibility without adding it to the solution store
    1560 *
    1561 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1562 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1563 *
    1564 * @pre This method can be called if SCIP is in one of the following stages:
    1565 * - \ref SCIP_STAGE_PROBLEM
    1566 * - \ref SCIP_STAGE_TRANSFORMED
    1567 * - \ref SCIP_STAGE_INITPRESOLVE
    1568 * - \ref SCIP_STAGE_PRESOLVING
    1569 * - \ref SCIP_STAGE_EXITPRESOLVE
    1570 * - \ref SCIP_STAGE_PRESOLVED
    1571 * - \ref SCIP_STAGE_INITSOLVE
    1572 * - \ref SCIP_STAGE_SOLVING
    1573 * - \ref SCIP_STAGE_SOLVED
    1574 */
    1575SCIP_EXPORT
    1577 SCIP* scip, /**< SCIP data structure */
    1578 SCIP_SOL* sol, /**< primal CIP solution */
    1579 SCIP_Bool printreason, /**< Should all reasons of violations be printed? */
    1580 SCIP_Bool completely, /**< Should all violations be checked if printreason is true? */
    1581 SCIP_Bool checkbounds, /**< Should the bounds of the variables be checked? */
    1582 SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
    1583 SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
    1584 SCIP_Bool* feasible /**< stores whether given solution is feasible */
    1585 );
    1586
    1587/** checks solution for feasibility in original problem without adding it to the solution store;
    1588 * this method is used to double check a solution in order to validate the presolving process
    1589 *
    1590 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1591 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1592 *
    1593 * @pre This method can be called if SCIP is in one of the following stages:
    1594 * - \ref SCIP_STAGE_PROBLEM
    1595 * - \ref SCIP_STAGE_TRANSFORMED
    1596 * - \ref SCIP_STAGE_INITPRESOLVE
    1597 * - \ref SCIP_STAGE_PRESOLVING
    1598 * - \ref SCIP_STAGE_EXITPRESOLVE
    1599 * - \ref SCIP_STAGE_PRESOLVED
    1600 * - \ref SCIP_STAGE_INITSOLVE
    1601 * - \ref SCIP_STAGE_SOLVING
    1602 * - \ref SCIP_STAGE_SOLVED
    1603 */
    1604SCIP_EXPORT
    1606 SCIP* scip, /**< SCIP data structure */
    1607 SCIP_SOL* sol, /**< primal CIP solution */
    1608 SCIP_Bool* feasible, /**< stores whether given solution is feasible */
    1609 SCIP_Bool printreason, /**< should the reason for the violation be printed? */
    1610 SCIP_Bool completely /**< Should all violations be checked if printreason is true? */
    1611 );
    1612
    1613/** update integrality violation of a solution */
    1614SCIP_EXPORT
    1616 SCIP* scip, /**< SCIP data structure */
    1617 SCIP_SOL* sol, /**< primal CIP solution */
    1618 SCIP_Real absviol /**< absolute violation */
    1619 );
    1620
    1621/** update bound violation of a solution */
    1622SCIP_EXPORT
    1624 SCIP* scip, /**< SCIP data structure */
    1625 SCIP_SOL* sol, /**< primal CIP solution */
    1626 SCIP_Real absviol, /**< absolute violation */
    1627 SCIP_Real relviol /**< relative violation */
    1628 );
    1629
    1630/** update LP row violation of a solution */
    1631SCIP_EXPORT
    1633 SCIP* scip, /**< SCIP data structure */
    1634 SCIP_SOL* sol, /**< primal CIP solution */
    1635 SCIP_Real absviol, /**< absolute violation */
    1636 SCIP_Real relviol /**< relative violation */
    1637 );
    1638
    1639/** update constraint violation of a solution */
    1640SCIP_EXPORT
    1642 SCIP* scip, /**< SCIP data structure */
    1643 SCIP_SOL* sol, /**< primal CIP solution */
    1644 SCIP_Real absviol, /**< absolute violation */
    1645 SCIP_Real relviol /**< relative violation */
    1646 );
    1647
    1648/** update LP row and constraint violations of a solution */
    1649SCIP_EXPORT
    1651 SCIP* scip, /**< SCIP data structure */
    1652 SCIP_SOL* sol, /**< primal CIP solution */
    1653 SCIP_Real absviol, /**< absolute violation */
    1654 SCIP_Real relviol /**< relative violation */
    1655 );
    1656
    1657/** allow violation updates */
    1658SCIP_EXPORT
    1660 SCIP* scip /**< SCIP data structure */
    1661 );
    1662
    1663/** disallow violation updates */
    1664SCIP_EXPORT
    1666 SCIP* scip /**< SCIP data structure */
    1667 );
    1668
    1669/** return whether a primal ray is stored that proves unboundedness of the LP relaxation
    1670 *
    1671 * @return return whether a primal ray is stored that proves unboundedness of the LP relaxation
    1672 *
    1673 * @pre This method can be called if SCIP is in one of the following stages:
    1674 * - \ref SCIP_STAGE_SOLVING
    1675 * - \ref SCIP_STAGE_SOLVED
    1676 */
    1677SCIP_EXPORT
    1679 SCIP* scip /**< SCIP data structure */
    1680 );
    1681
    1682/** gets value of given variable in primal ray causing unboundedness of the LP relaxation;
    1683 * should only be called if such a ray is stored (check with SCIPhasPrimalRay())
    1684 *
    1685 * @return value of given variable in primal ray causing unboundedness of the LP relaxation
    1686 *
    1687 * @pre This method can be called if SCIP is in one of the following stages:
    1688 * - \ref SCIP_STAGE_SOLVING
    1689 * - \ref SCIP_STAGE_SOLVED
    1690 */
    1691SCIP_EXPORT
    1693 SCIP* scip, /**< SCIP data structure */
    1694 SCIP_VAR* var /**< variable to get value for */
    1695 );
    1696
    1697/** updates the primal ray thats proves unboundedness
    1698 *
    1699 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1700 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1701 *
    1702 * @pre This method can be called if @p scip is in one of the following stages:
    1703 * - \ref SCIP_STAGE_PRESOLVING
    1704 * - \ref SCIP_STAGE_PRESOLVED
    1705 * - \ref SCIP_STAGE_SOLVING
    1706 * - \ref SCIP_STAGE_SOLVED
    1707 *
    1708 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1709 */
    1710SCIP_EXPORT
    1712 SCIP* scip, /**< SCIP data structure */
    1713 SCIP_SOL* primalray /**< the new primal ray */
    1714 );
    1715
    1716/** overwrite the fp-values in a solution with the rounded exact ones */
    1717SCIP_EXPORT
    1719 SCIP* scip, /**< SCIP data structure */
    1720 SCIP_SOL* sol /**< primal CIP solution */
    1721 );
    1722
    1723/** checks exact primal solution; if feasible, adds it to storage; solution is freed afterwards
    1724 *
    1725 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1726 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1727 *
    1728 * @pre This method can be called if SCIP is in one of the following stages:
    1729 * - \ref SCIP_STAGE_TRANSFORMED
    1730 * - \ref SCIP_STAGE_INITPRESOLVE
    1731 * - \ref SCIP_STAGE_PRESOLVING
    1732 * - \ref SCIP_STAGE_EXITPRESOLVE
    1733 * - \ref SCIP_STAGE_PRESOLVED
    1734 * - \ref SCIP_STAGE_SOLVING
    1735 *
    1736 * @note Do not call during propagation, use heur_trysol instead.
    1737 */
    1739 SCIP* scip, /**< SCIP data structure */
    1740 SCIP_SOL** sol, /**< pointer to primal CIP solution; is cleared in function call */
    1741 SCIP_Bool printreason, /**< Should all reasons of violations be printed */
    1742 SCIP_Bool completely, /**< Should all violations be checked if printreason is true? */
    1743 SCIP_Bool checkbounds, /**< Should the bounds of the variables be checked? */
    1744 SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
    1745 SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
    1746 SCIP_Bool* stored /**< stores whether solution was feasible and good enough to keep */
    1747 );
    1748
    1749/**@} */
    1750
    1751#ifdef __cplusplus
    1752}
    1753#endif
    1754
    1755#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_RETCODE SCIPcheckSolOrig(SCIP *scip, SCIP_SOL *sol, SCIP_Bool *feasible, SCIP_Bool printreason, SCIP_Bool completely)
    Definition: scip_sol.c:4380
    SCIP_SOL * SCIPgetBestSol(SCIP *scip)
    Definition: scip_sol.c:2981
    SCIP_RETCODE SCIPcreateSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:516
    SCIP_RETCODE SCIPlinkPseudoSol(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:1418
    int SCIPgetSolRunnum(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:2189
    SCIP_RETCODE SCIPreadSolFile(SCIP *scip, const char *filename, SCIP_SOL *sol, SCIP_Bool xml, SCIP_Bool *partial, SCIP_Bool *error)
    Definition: scip_sol.c:3802
    SCIP_RETCODE SCIPcreateUnknownSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:799
    SCIP_RETCODE SCIPprintTransSol(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)
    Definition: scip_sol.c:2521
    SCIP_RETCODE SCIPcreateSolCopy(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol)
    Definition: scip_sol.c:884
    void SCIPupdateSolIntegralityViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol)
    Definition: scip_sol.c:406
    SCIP_RETCODE SCIPprintBestSol(SCIP *scip, FILE *file, SCIP_Bool printzeros)
    Definition: scip_sol.c:3047
    SCIP_SOL ** SCIPgetPartialSols(SCIP *scip)
    Definition: scip_sol.c:4263
    void SCIPupdateSolLPRowViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
    Definition: scip_sol.c:437
    SCIP_RETCODE SCIPfreeSol(SCIP *scip, SCIP_SOL **sol)
    Definition: scip_sol.c:1252
    SCIP_HEUR * SCIPgetSolHeur(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:2249
    void SCIPupdateSolBoundViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
    Definition: scip_sol.c:421
    SCIP_RETCODE SCIPaddSolFree(SCIP *scip, SCIP_SOL **sol, SCIP_Bool *stored)
    Definition: scip_sol.c:3909
    SCIP_RETCODE SCIPprintRay(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)
    Definition: scip_sol.c:2845
    SCIP_RETCODE SCIPprintSol(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)
    Definition: scip_sol.c:2349
    SCIP_RETCODE SCIPtrySolFreeExact(SCIP *scip, SCIP_SOL **sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
    Definition: scip_sol.c:4520
    SCIP_RETCODE SCIPsetSolValExact(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_RATIONAL *val)
    Definition: scip_sol.c:1616
    SCIP_RETCODE SCIPcreateCurrentSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:749
    SCIP_RETCODE SCIPgetDualSolVal(SCIP *scip, SCIP_CONS *cons, SCIP_Real *dualsolval, SCIP_Bool *boundconstraint)
    Definition: scip_sol.c:2623
    void SCIPgetSolValExact(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_RATIONAL *res)
    Definition: scip_sol.c:1803
    SCIP_Bool SCIPareSolsEqual(SCIP *scip, SCIP_SOL *sol1, SCIP_SOL *sol2)
    Definition: scip_sol.c:2280
    SCIP_RETCODE SCIPclearSol(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:1475
    SCIP_RETCODE SCIPcreateNLPSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:664
    SCIP_Real SCIPtransformObj(SCIP *scip, SCIP_Real obj)
    Definition: scip_sol.c:2107
    SCIP_RETCODE SCIPoverwriteFPsol(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:4489
    int SCIPgetNPartialSols(SCIP *scip)
    Definition: scip_sol.c:4285
    int SCIPgetNSols(SCIP *scip)
    Definition: scip_sol.c:2882
    SCIP_RETCODE SCIPcreateLPSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:608
    SCIP_RETCODE SCIPlinkCurrentSol(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:1441
    SCIP_RETCODE SCIPcreateFiniteSolCopy(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol, SCIP_Bool *success)
    Definition: scip_sol.c:1116
    SCIP_RETCODE SCIPprintBestTransSol(SCIP *scip, FILE *file, SCIP_Bool printzeros)
    Definition: scip_sol.c:3087
    SCIP_RETCODE SCIPadjustImplicitSolVals(SCIP *scip, SCIP_SOL *sol, SCIP_Bool uselprows)
    Definition: scip_sol.c:2305
    SCIP_RETCODE SCIPaddCurrentSol(SCIP *scip, SCIP_HEUR *heur, SCIP_Bool *stored)
    Definition: scip_sol.c:3972
    SCIP_RETCODE SCIPcreateOrigSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:831
    SCIP_RETCODE SCIPlinkLPSolExact(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:1324
    SCIP_RETCODE SCIPunlinkSol(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:1506
    SCIP_RETCODE SCIPcreateRelaxSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:699
    SCIP_RETCODE SCIPprintMIPStart(SCIP *scip, SCIP_SOL *sol, FILE *file)
    Definition: scip_sol.c:2580
    SCIP_RETCODE SCIPreadSol(SCIP *scip, const char *filename)
    Definition: scip_sol.c:3306
    SCIP_RETCODE SCIPgetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
    Definition: scip_sol.c:1846
    SCIP_RETCODE SCIPrecomputeSolObj(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:2076
    SCIP_RETCODE SCIPaddSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool *stored)
    Definition: scip_sol.c:3842
    SCIP_RETCODE SCIPincSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real incval)
    Definition: scip_sol.c:1719
    SCIP_RETCODE SCIPcreateSolCopyOrig(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol)
    Definition: scip_sol.c:924
    SCIP_RETCODE SCIPlinkNLPSol(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:1353
    SCIP_RETCODE SCIProundSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool *success)
    Definition: scip_sol.c:3123
    SCIP_RETCODE SCIPcreatePartialSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:771
    SCIP_Longint SCIPgetSolNodenum(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:2219
    SCIP_Real SCIPgetPrimalRayVal(SCIP *scip, SCIP_VAR *var)
    Definition: scip_sol.c:4445
    void SCIPgetSolTransObjExact(SCIP *scip, SCIP_SOL *sol, SCIP_RATIONAL *res)
    Definition: scip_sol.c:2042
    SCIP_RETCODE SCIPsetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
    Definition: scip_sol.c:1662
    void SCIPupdateSolConsViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
    Definition: scip_sol.c:453
    SCIP_SOL ** SCIPgetSols(SCIP *scip)
    Definition: scip_sol.c:2931
    SCIP_Bool SCIPhasPrimalRay(SCIP *scip)
    Definition: scip_sol.c:4427
    SCIP_RETCODE SCIPlinkRelaxSol(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:1388
    SCIP_RETCODE SCIPtrySol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
    Definition: scip_sol.c:4012
    SCIP_RETCODE SCIPcheckSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *feasible)
    Definition: scip_sol.c:4312
    SCIP_Bool SCIPisDualSolAvailable(SCIP *scip, SCIP_Bool printreason)
    Definition: scip_sol.c:2749
    SCIP_RETCODE SCIPtrySolFree(SCIP *scip, SCIP_SOL **sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
    Definition: scip_sol.c:4109
    SCIP_RETCODE SCIPlinkLPSol(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:1295
    SCIP_Real SCIPgetSolOrigObj(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:1892
    SCIP_RETCODE SCIPretransformSol(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:3182
    SCIP_Real SCIPgetSolTime(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:2159
    SCIP_RETCODE SCIPcreateLPSolExact(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:636
    void SCIPdeactivateSolViolationUpdates(SCIP *scip)
    Definition: scip_sol.c:493
    SCIP_RETCODE SCIPsetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real val)
    Definition: scip_sol.c:1571
    SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
    Definition: scip_sol.c:1765
    void SCIPactivateSolViolationUpdates(SCIP *scip)
    Definition: scip_sol.c:485
    SCIP_Real SCIPgetSolTransObj(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:2005
    void SCIPupdateSolLPConsViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
    Definition: scip_sol.c:469
    SCIP_RETCODE SCIPupdatePrimalRay(SCIP *scip, SCIP_SOL *primalray)
    Definition: scip_sol.c:4473
    SCIP_Real SCIPretransformObj(SCIP *scip, SCIP_Real obj)
    Definition: scip_sol.c:2132
    SCIP_RETCODE SCIPprintSolExact(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)
    Definition: scip_sol.c:2424
    SCIP_RETCODE SCIPcreateSolExact(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:566
    SCIP_RETCODE SCIPcreatePseudoSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
    Definition: scip_sol.c:726
    SCIP_RETCODE SCIPmakeSolExact(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:3146
    void SCIPgetSolOrigObjExact(SCIP *scip, SCIP_SOL *sol, SCIP_RATIONAL *res)
    Definition: scip_sol.c:1940
    SCIP_RETCODE SCIPretransformSolExact(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:3245
    SCIP_RETCODE SCIPprintDualSol(SCIP *scip, FILE *file, SCIP_Bool printzeros)
    Definition: scip_sol.c:2812
    SCIP_RETCODE SCIPtryCurrentSol(SCIP *scip, SCIP_HEUR *heur, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
    Definition: scip_sol.c:4207
    SCIP_RETCODE SCIPunlinkSolExact(SCIP *scip, SCIP_SOL *sol)
    Definition: scip_sol.c:1537
    type definitions for constraints and constraint handlers
    type definitions for primal heuristics
    type definitions for rational numbers
    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
    type definitions for problem variables