Scippy

SCIP

Solving Constraint Integer Programs

scip_lpexact.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_lpexact.h
26 * @ingroup PUBLICCOREAPI
27 * @brief public methods for the LP relaxation, rows and columns
28 * @author Leon Eifler
29 */
30
31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32
33#ifndef __SCIP_SCIP_LPEXACT_H__
34#define __SCIP_SCIP_LPEXACT_H__
35
36
37#include "lpi/type_lpi.h"
38#include "scip/def.h"
39#include "scip/rational.h"
40#include "scip/type_cons.h"
41#include "scip/type_lp.h"
42#include "scip/type_lpexact.h"
43#include "scip/type_misc.h"
44#include "scip/type_retcode.h"
45#include "scip/type_scip.h"
46#include "scip/type_sepa.h"
47#include "scip/type_sol.h"
48#include "scip/type_var.h"
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54/**@addtogroup PublicLPExactMethods
55 *
56 * @{
57 */
58
59/** creates and captures an LP row without any coefficients from a constraint handler
60 *
61 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
62 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
63 *
64 * @pre this method can be called in one of the following stages of the SCIP solving process:
65 * - \ref SCIP_STAGE_INITSOLVE
66 * - \ref SCIP_STAGE_SOLVING
67 */
68SCIP_EXPORT
70 SCIP* scip, /**< SCIP data structure */
71 SCIP_ROWEXACT** rowexact, /**< pointer to row */
72 SCIP_ROW* fprow, /**< pointer to fp-row that corresponds to this row */
73 SCIP_ROW* fprowrhs, /**< rhs-part of fp-relaxation of this row if necessary, NULL otherwise */
74 SCIP_RATIONAL* lhs, /**< left hand side of row */
75 SCIP_RATIONAL* rhs, /**< right hand side of row */
76 SCIP_Bool isfprelaxable /**< is it possible to create an fp relaxation of this row? */
77 );
78
79/** creates and captures an exact LP row
80 *
81 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
82 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
83 *
84 * @pre this method can be called in one of the following stages of the SCIP solving process:
85 * - \ref SCIP_STAGE_SOLVING
86 */
87SCIP_EXPORT
89 SCIP* scip, /**< SCIP data structure */
90 SCIP_ROWEXACT** row, /**< pointer to row */
91 SCIP_ROW* fprow, /**< corresponding fp approximation/relaxation */
92 int len, /**< number of nonzeros in the row */
93 SCIP_COLEXACT** cols, /**< array with columns of row entries */
94 SCIP_RATIONAL** vals, /**< array with coefficients of row entries */
95 SCIP_RATIONAL* lhs, /**< left hand side of row */
96 SCIP_RATIONAL* rhs, /**< right hand side of row */
97 SCIP_Bool isfprelaxable /**< is it possible to make fp-relaxation of this row */
98 );
99
100/** creates and captures an exact LP row from an existing fp row
101 *
102 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
103 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
104 *
105 * @pre this method can be called in one of the following stages of the SCIP solving process:
106 * - \ref SCIP_STAGE_INITSOLVE
107 * - \ref SCIP_STAGE_SOLVING
108 */
109SCIP_EXPORT
111 SCIP* scip, /**< SCIP data structure */
112 SCIP_ROW* fprow /**< corresponding fp approximation/relaxation */
113 );
114
115/** generates two fprows that are a relaxation of the exact row wrt the lhs/rhs, respectively
116 *
117 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
118 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
119 *
120 * @pre this method can be called in one of the following stages of the SCIP solving process:
121 * - \ref SCIP_STAGE_INITSOLVE
122 * - \ref SCIP_STAGE_SOLVING
123 */
124SCIP_EXPORT
126 SCIP* scip, /**< SCIP data structure */
127 SCIP_ROWEXACT* row, /**< SCIP exact row */
128 SCIP_ROW* rowlhs, /**< fp row-relaxation wrt lhs */
129 SCIP_ROW* rowrhs, /**< fp row-relaxation wrt rhs */
130 SCIP_Bool* onerowrelax, /**< is one row enough to represent the exact row */
131 SCIP_Bool* hasfprelax /**< is it possible to generate relaxations at all for this row? */
132 );
133
134/** increases usage counter of exact LP row
135 *
136 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
137 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
138 *
139 * @pre this method can be called in one of the following stages of the SCIP solving process:
140 * - \ref SCIP_STAGE_INITSOLVE
141 * - \ref SCIP_STAGE_SOLVING
142 */
143SCIP_EXPORT
145 SCIP* scip, /**< SCIP data structure */
146 SCIP_ROWEXACT* row /**< row to capture */
147 );
148
149/** decreases usage counter of LP row, and frees memory if necessary
150 *
151 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
152 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
153 *
154 * @pre this method can be called in one of the following stages of the SCIP solving process:
155 * - \ref SCIP_STAGE_INITSOLVE
156 * - \ref SCIP_STAGE_SOLVING
157 * - \ref SCIP_STAGE_EXITSOLVE
158 */
159SCIP_EXPORT
161 SCIP* scip, /**< SCIP data structure */
162 SCIP_ROWEXACT** row /**< pointer to LP row */
163 );
164
165/** changes left hand side of exact LP row
166 *
167 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
168 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
169 *
170 * @pre this method can be called in one of the following stages of the SCIP solving process:
171 * - \ref SCIP_STAGE_INITSOLVE
172 * - \ref SCIP_STAGE_SOLVING
173 */
174SCIP_EXPORT
176 SCIP* scip, /**< SCIP data structure */
177 SCIP_ROWEXACT* row, /**< LP row */
178 SCIP_RATIONAL* lhs /**< new left hand side */
179 );
180
181/** changes right hand side of exact LP row
182 *
183 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
184 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
185 *
186 * @pre this method can be called in one of the following stages of the SCIP solving process:
187 * - \ref SCIP_STAGE_INITSOLVE
188 * - \ref SCIP_STAGE_SOLVING
189 */
190SCIP_EXPORT
192 SCIP* scip, /**< SCIP data structure */
193 SCIP_ROWEXACT* row, /**< LP row */
194 SCIP_RATIONAL* rhs /**< new right hand side */
195 );
196
197/** resolves variables to columns and adds them with the coefficients to the row;
198 * this method caches the row extensions and flushes them afterwards to gain better performance
199 *
200 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
201 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
202 *
203 * @attention If a coefficients absolute value is below the SCIP epsilon tolerance, the variable with its value is not added.
204 *
205 * @pre this method can be called in one of the following stages of the SCIP solving process:
206 * - \ref SCIP_STAGE_INITSOLVE
207 * - \ref SCIP_STAGE_SOLVING
208 */
209SCIP_EXPORT
211 SCIP* scip, /**< SCIP data structure */
212 SCIP_ROWEXACT* row, /**< LP row */
213 int nvars, /**< number of variables to add to the row */
214 SCIP_VAR** vars, /**< problem variables to add */
215 SCIP_RATIONAL** vals /**< values of coefficients */
216 );
217
218/** returns the activity of a row for the given primal solution with running error analysis
219 *
220 * @return the activitiy of a row for the given primal solution and the error bound of the activity; returns true on success
221 *
222 * @pre this method can be called in one of the following stages of the SCIP solving process:
223 * - \ref SCIP_STAGE_SOLVING
224 */
225SCIP_EXPORT
227 SCIP* scip, /**< SCIP data structure */
228 SCIP_ROWEXACT* row, /**< LP row */
229 SCIP_SOL* sol, /**< primal CIP solution */
230 SCIP_Real* activity, /**< the approximate activity */
231 SCIP_Real* errorbound /**< the error bound */
232 );
233
234/** returns the activity of a row for the given primal solution
235 *
236 * @return the activitiy of a row for the given primal solution
237 *
238 * @pre this method can be called in one of the following stages of the SCIP solving process:
239 * - \ref SCIP_STAGE_SOLVING
240 */
241SCIP_EXPORT
243 SCIP* scip, /**< SCIP data structure */
244 SCIP_ROWEXACT* row, /**< LP row */
245 SCIP_SOL* sol, /**< primal CIP solution */
246 SCIP_Bool useexact, /**< true if sol should be considered instead of sol */
247 SCIP_RATIONAL* result /**< result pointer */
248 );
249
250/** returns the feasibility of a row for the given primal solution
251 *
252 * @return the feasibility of a row for the given primal solution
253 *
254 * @pre this method can be called in one of the following stages of the SCIP solving process:
255 * - \ref SCIP_STAGE_SOLVING
256 */
257SCIP_EXPORT
259 SCIP* scip, /**< SCIP data structure */
260 SCIP_ROWEXACT* row, /**< LP row */
261 SCIP_SOL* sol, /**< primal CIP solution */
262 SCIP_RATIONAL* result /**< result pointer */
263 );
264
265/** output exact row to file stream via the message handler system
266 *
267 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
268 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
269 *
270 * @pre this method can be called in one of the following stages of the SCIP solving process:
271 * - \ref SCIP_STAGE_SOLVING
272 * - \ref SCIP_STAGE_SOLVED
273 * - \ref SCIP_STAGE_EXITSOLVE
274 */
275SCIP_EXPORT
277 SCIP* scip, /**< SCIP data structure */
278 SCIP_ROWEXACT* row, /**< LP row */
279 FILE* file /**< output file (or NULL for standard output) */
280 );
281
282/** returns whether the exact lp was solved */
283SCIP_EXPORT
285 SCIP* scip /**< SCIP data structure */
286 );
287
288/** gets solution status of current exact LP
289 *
290 * @return the solution status of current exact LP.
291 *
292 * @pre This method can be called if @p scip is in one of the following stages:
293 * - \ref SCIP_STAGE_SOLVING
294 *
295 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
296 */
297SCIP_EXPORT
299 SCIP* scip /**< SCIP data structure */
300 );
301
302/** gets objective value of current exact LP (which is the sum of column and loose objective value)
303 *
304 * @pre This method can be called if @p scip is in one of the following stages:
305 * - \ref SCIP_STAGE_SOLVING
306 *
307 * @note This method returns the objective value of the current LP solution, which might be primal or dual infeasible
308 * if a limit was hit during solving. It must not be used as a dual bound if the exact LP solution status
309 * returned by SCIPgetLPExactSolstat() is SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.
310 *
311 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
312 */
313SCIP_EXPORT
315 SCIP* scip, /**< SCIP data structure */
316 SCIP_RATIONAL* result /**< result pointer */
317 );
318
319/** changes variable's lower bound in current exact dive
320 *
321 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
322 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
323 *
324 * @pre This method can be called if @p scip is in one of the following stages:
325 * - \ref SCIP_STAGE_SOLVING
326 *
327 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
328 */
329SCIP_EXPORT
331 SCIP* scip, /**< SCIP data structure */
332 SCIP_VAR* var, /**< variable to change the bound for */
333 SCIP_RATIONAL* newbound /**< new value for bound */
334 );
335
336/** changes variable's upper bound in current exact dive
337 *
338 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
339 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
340 *
341 * @pre This method can be called if @p scip is in one of the following stages:
342 * - \ref SCIP_STAGE_SOLVING
343 *
344 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
345 */
346SCIP_EXPORT
348 SCIP* scip, /**< SCIP data structure */
349 SCIP_VAR* var, /**< variable to change the bound for */
350 SCIP_RATIONAL* newbound /**< new value for bound */
351 );
352
353/** solves the exact LP of the current dive; no separation or pricing is applied
354 *
355 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
356 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
357 *
358 * @pre This method can be called if @p scip is in one of the following stages:
359 * - \ref SCIP_STAGE_SOLVING
360 *
361 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
362 */
363SCIP_EXPORT
365 SCIP* scip, /**< SCIP data structure */
366 int itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
367 SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
368 SCIP_Bool* cutoff /**< pointer to store whether the diving LP was infeasible or the objective
369 * limit was reached (or NULL, if not needed) */
370 );
371
372/** initiates exact LP diving, making methods SCIPchgVarObjExactDive(), SCIPchgVarLbExactDive(), and SCIPchgVarUbExactDive() available
373 *
374 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
375 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
376 *
377 * @pre This method can be called if @p scip is in one of the following stages:
378 * - \ref SCIP_STAGE_SOLVING
379 *
380 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
381 *
382 * @note In parallel to exact LP diving, this method also starts the regular LP diving mode by calling SCIPstartDive().
383 */
384SCIP_EXPORT
386 SCIP* scip /**< SCIP data structure */
387 );
388
389/** checks if exact diving mode is possible at this point in time
390 *
391 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
392 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
393 *
394 * @pre This method can be called if @p scip is in one of the following stages:
395 * - \ref SCIP_STAGE_SOLVING
396 *
397 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
398 *
399 * @note In parallel to exact LP diving, this method also starts the regular LP diving mode by calling SCIPstartDive().
400 */
401SCIP_EXPORT
403 SCIP* scip /**< SCIP data structure */
404 );
405
406/** returns whether we are in exact diving mode
407 *
408 * @return whether we are in exact diving mode.
409 *
410 * @pre This method can be called if @p scip is in one of the following stages:
411 * - \ref SCIP_STAGE_TRANSFORMING
412 * - \ref SCIP_STAGE_TRANSFORMED
413 * - \ref SCIP_STAGE_INITPRESOLVE
414 * - \ref SCIP_STAGE_PRESOLVING
415 * - \ref SCIP_STAGE_EXITPRESOLVE
416 * - \ref SCIP_STAGE_PRESOLVED
417 * - \ref SCIP_STAGE_INITSOLVE
418 * - \ref SCIP_STAGE_SOLVING
419 * - \ref SCIP_STAGE_SOLVED
420 * - \ref SCIP_STAGE_EXITSOLVE
421 * - \ref SCIP_STAGE_FREETRANS
422 *
423 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
424 */
425SCIP_EXPORT
427 SCIP* scip /**< SCIP data structure */
428 );
429
430/** quits exact LP diving and resets bounds and objective values of columns to the current node's values
431 *
432 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
433 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
434 *
435 * @pre This method can be called if @p scip is in one of the following stages:
436 * - \ref SCIP_STAGE_SOLVING
437 *
438 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
439 */
440SCIP_EXPORT
442 SCIP* scip /**< SCIP data structure */
443 );
444
445/** writes current exact LP to a file
446 *
447 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
448 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
449 *
450 * @pre This method can be called if @p scip is in one of the following stages:
451 * - \ref SCIP_STAGE_SOLVING
452 *
453 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
454 */
455SCIP_EXPORT
457 SCIP* scip, /**< SCIP data structure */
458 const char* filename /**< file name */
459 );
460
461/**@} */
462
463#ifdef __cplusplus
464}
465#endif
466
467#endif
common defines and data types used in all packages of SCIP
#define SCIP_Bool
Definition: def.h:91
#define SCIP_Real
Definition: def.h:156
SCIP_RETCODE SCIPreleaseRowExact(SCIP *scip, SCIP_ROWEXACT **row)
Definition: scip_lpexact.c:110
SCIP_RETCODE SCIPsolveExactDiveLP(SCIP *scip, int itlim, SCIP_Bool *lperror, SCIP_Bool *cutoff)
Definition: scip_lpexact.c:653
SCIP_Bool SCIPisExactDivePossible(SCIP *scip)
Definition: scip_lpexact.c:551
SCIP_Bool SCIPgetRowSolActivityWithErrorboundExact(SCIP *scip, SCIP_ROWEXACT *row, SCIP_SOL *sol, SCIP_Real *activity, SCIP_Real *errorbound)
Definition: scip_lpexact.c:396
SCIP_RETCODE SCIPprintRowExact(SCIP *scip, SCIP_ROWEXACT *row, FILE *file)
Definition: scip_lpexact.c:419
SCIP_RETCODE SCIPgenerateFpRowsFromRowExact(SCIP *scip, SCIP_ROWEXACT *row, SCIP_ROW *rowlhs, SCIP_ROW *rowrhs, SCIP_Bool *onerowrelax, SCIP_Bool *hasfprelax)
Definition: scip_lpexact.c:309
SCIP_RETCODE SCIPgetRowSolActivityExact(SCIP *scip, SCIP_ROWEXACT *row, SCIP_SOL *sol, SCIP_Bool useexact, SCIP_RATIONAL *result)
Definition: scip_lpexact.c:367
SCIP_RETCODE SCIPchgVarLbExactDive(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
Definition: scip_lpexact.c:710
SCIP_RETCODE SCIPgetRowSolFeasibilityExact(SCIP *scip, SCIP_ROWEXACT *row, SCIP_SOL *sol, SCIP_RATIONAL *result)
Definition: scip_lpexact.c:335
SCIP_LPSOLSTAT SCIPgetLPExactSolstat(SCIP *scip)
Definition: scip_lpexact.c:475
SCIP_RETCODE SCIPcreateRowExact(SCIP *scip, SCIP_ROWEXACT **row, SCIP_ROW *fprow, int len, SCIP_COLEXACT **cols, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool isfprelaxable)
Definition: scip_lpexact.c:256
SCIP_RETCODE SCIPchgRowExactLhs(SCIP *scip, SCIP_ROWEXACT *row, SCIP_RATIONAL *lhs)
Definition: scip_lpexact.c:131
SCIP_RETCODE SCIPcreateEmptyRowConsExact(SCIP *scip, SCIP_ROWEXACT **rowexact, SCIP_ROW *fprow, SCIP_ROW *fprowrhs, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool isfprelaxable)
Definition: scip_lpexact.c:228
SCIP_RETCODE SCIPstartExactDive(SCIP *scip)
Definition: scip_lpexact.c:502
SCIP_RETCODE SCIPendExactDive(SCIP *scip)
Definition: scip_lpexact.c:615
SCIP_RETCODE SCIPwriteLPexact(SCIP *scip, const char *filename)
Definition: scip_lpexact.c:774
SCIP_RETCODE SCIPchgVarUbExactDive(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
Definition: scip_lpexact.c:742
SCIP_RETCODE SCIPchgRowExactRhs(SCIP *scip, SCIP_ROWEXACT *row, SCIP_RATIONAL *rhs)
Definition: scip_lpexact.c:155
SCIP_RETCODE SCIPaddVarsToRowExact(SCIP *scip, SCIP_ROWEXACT *row, int nvars, SCIP_VAR **vars, SCIP_RATIONAL **vals)
Definition: scip_lpexact.c:182
SCIP_Bool SCIPlpExactIsSolved(SCIP *scip)
Definition: scip_lpexact.c:456
SCIP_RETCODE SCIPcaptureRowExact(SCIP *scip, SCIP_ROWEXACT *row)
Definition: scip_lpexact.c:88
SCIP_RETCODE SCIPcreateRowExactFromRow(SCIP *scip, SCIP_ROW *fprow)
Definition: scip_lpexact.c:285
SCIP_Bool SCIPinExactDive(SCIP *scip)
Definition: scip_lpexact.c:594
void SCIPgetLPExactObjval(SCIP *scip, SCIP_RATIONAL *result)
Definition: scip_lpexact.c:445
wrapper for rational number arithmetic
type definitions for constraints and constraint handlers
type definitions for LP management
enum SCIP_LPSolStat SCIP_LPSOLSTAT
Definition: type_lp.h:52
type definitions for exact LP management
type definitions for specific LP solvers interface
type definitions for miscellaneous datastructures
type definitions for return codes for SCIP methods
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
type definitions for SCIP's main datastructure
type definitions for separators
type definitions for storing primal CIP solutions
type definitions for problem variables