Scippy

SCIP

Solving Constraint Integer Programs

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 lpexact.h
26 * @ingroup INTERNALAPI
27 * @brief internal methods for exact LP management
28 * @author Leon Eifler
29 */
30
31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32
33#ifndef __SCIP_LPEXACT_H__
34#define __SCIP_LPEXACT_H__
35
36
37#include <stdio.h>
38
39#include "scip/def.h"
41#include "scip/rational.h"
42#include "scip/type_event.h"
43#include "scip/type_lpexact.h"
44#include "scip/type_misc.h"
45#include "scip/type_prob.h"
46#include "scip/type_rational.h"
47#include "scip/type_set.h"
48#include "scip/type_stat.h"
49#include "scip/type_sol.h"
50#include "scip/type_var.h"
51#include "scip/pub_lpexact.h"
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
57/*
58 * Column methods
59 */
60
61/** creates an LP column */
63 SCIP_COLEXACT** col, /**< pointer to column data */
64 SCIP_COL* fpcol, /**< the corresponding fp col */
65 BMS_BLKMEM* blkmem, /**< block memory */
66 SCIP_SET* set, /**< global SCIP settings */
67 SCIP_STAT* stat, /**< problem statistics */
68 SCIP_VAR* var, /**< variable, this column represents */
69 int len, /**< number of nonzeros in the column */
70 SCIP_ROWEXACT** rows, /**< array with rows of column entries */
71 SCIP_RATIONAL** vals, /**< array with coefficients of column entries */
72 SCIP_Bool removable /**< should the column be removed from the LP due to aging or cleanup? */
73 );
74
75/** frees an LP column */
77 SCIP_COLEXACT** col, /**< pointer to LP column */
78 BMS_BLKMEM* blkmem /**< block memory */
79 );
80
81/** output column to file stream */
83 SCIP_COLEXACT* col, /**< LP column */
84 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
85 FILE* file /**< output file (or NULL for standard output) */
86 );
87
88/** adds a previously non existing coefficient to an LP column */
90 SCIP_COLEXACT* col, /**< LP column */
91 BMS_BLKMEM* blkmem, /**< block memory */
92 SCIP_SET* set, /**< global SCIP settings */
93 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
94 SCIP_LPEXACT* lpexact, /**< current LP data */
95 SCIP_ROWEXACT* row, /**< LP row */
96 SCIP_RATIONAL* val /**< value of coefficient */
97 );
98
99/** deletes coefficient from column */
101 SCIP_COLEXACT* col, /**< column to be changed */
102 SCIP_SET* set, /**< global SCIP settings */
103 SCIP_LPEXACT* lpexact, /**< current LP data */
104 SCIP_ROWEXACT* row /**< coefficient to be deleted */
105 );
106
107/** changes or adds a coefficient to an LP column */
109 SCIP_COLEXACT* col, /**< LP column */
110 BMS_BLKMEM* blkmem, /**< block memory */
111 SCIP_SET* set, /**< global SCIP settings */
112 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
113 SCIP_LPEXACT* lpexact, /**< current LP data */
114 SCIP_ROWEXACT* row, /**< LP row */
115 SCIP_RATIONAL* val /**< value of coefficient */
116 );
117
118/** increases value of an existing or nonexisting coefficient in an LP column */
120 SCIP_COLEXACT* col, /**< LP column */
121 BMS_BLKMEM* blkmem, /**< block memory */
122 SCIP_SET* set, /**< global SCIP settings */
123 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
124 SCIP_LPEXACT* lpexact, /**< current LP data */
125 SCIP_ROWEXACT* row, /**< LP row */
126 SCIP_RATIONAL* incval /**< value to add to the coefficient */
127 );
128
129/** changes objective value of column */
131 SCIP_COLEXACT* col, /**< LP column to change */
132 SCIP_SET* set, /**< global SCIP settings */
133 SCIP_LPEXACT* lpexact, /**< current LP data */
134 SCIP_RATIONAL* newobj /**< new objective value */
135 );
136
137/** changes lower bound of column */
139 SCIP_COLEXACT* col, /**< LP column to change */
140 SCIP_SET* set, /**< global SCIP settings */
141 SCIP_LPEXACT* lpexact, /**< current LP data */
142 SCIP_RATIONAL* newlb /**< new lower bound value */
143 );
144
145/** changes upper bound of column */
147 SCIP_COLEXACT* col, /**< LP column to change */
148 SCIP_SET* set, /**< global SCIP settings */
149 SCIP_LPEXACT* lpexact, /**< current LP data */
150 SCIP_RATIONAL* newub /**< new upper bound value */
151 );
152
153/*
154 * Row methods
155 */
156
157/** increases usage counter of LP row */
159 SCIP_ROWEXACT* row /**< LP row */
160 );
161
162/** output column to file stream */
164 SCIP_ROWEXACT* row, /**< LP row */
165 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
166 FILE* file /**< output file (or NULL for standard output) */
167 );
168
169/** get the index of an exact row */
171 SCIP_ROWEXACT* row /**< LP row */
172 );
173
174/** return TRUE iff row is modifiable */
176 SCIP_ROWEXACT* row /**< LP row */
177 );
178
179/** returns true, if an exact row for this fprow was already created */
181 SCIP_LPEXACT* lpexact, /**< exact lp data structure */
182 SCIP_ROW* row /**< SCIP row */
183 );
184
185/** changes left hand side of exact LP row */
187 SCIP_ROWEXACT* rowexact, /**< exact LP row */
188 SCIP_SET* set, /**< global SCIP settings */
189 SCIP_LPEXACT* lpexact, /**< current exact LP data */
190 SCIP_RATIONAL* lhs /**< new left hand side */
191 );
192
193/** changes right hand side of exact LP row */
195 SCIP_ROWEXACT* rowexact, /**< exact LP row */
196 SCIP_SET* set, /**< global SCIP settings */
197 SCIP_LPEXACT* lpexact, /**< current exact LP data */
198 SCIP_RATIONAL* rhs /**< new right hand side */
199 );
200
201/** returns exact col corresponding to fpcol, if it exists. Otherwise returns NULL */
203 SCIP_COL* col /**< SCIP col */
204 );
205
206/** calculates the Farkas coefficient or reduced cost of a column i using the given dual Farkas vector y */
208 SCIP_COLEXACT* col, /**< LP column */
209 SCIP_SET* set, /**< SCIP settings pointer */
210 SCIP_RATIONAL* result, /**< rational to store the result */
211 SCIP_RATIONAL** dual, /**< dense dual Farkas vector, NULL to use internal row-values */
212 SCIP_Bool usefarkas /**< should the farkas coefficient be computed ? */
213 );
214
215/** creates and captures an LP row */
217 SCIP_ROWEXACT** row, /**< pointer to LP row data */
218 SCIP_ROW* fprow, /**< corresponding fp row */
219 SCIP_ROW* fprowrhs, /**< rhs-part of fp-relaxation of this row if necessary, NULL otherwise */
220 BMS_BLKMEM* blkmem, /**< block memory */
221 SCIP_SET* set, /**< global SCIP settings */
222 SCIP_STAT* stat, /**< problem statistics */
223 SCIP_LPEXACT* lpexact, /**< current LP data */
224 int len, /**< number of nonzeros in the row */
225 SCIP_COLEXACT** cols, /**< array with columns of row entries */
226 SCIP_RATIONAL** vals, /**< array with coefficients of row entries */
227 SCIP_RATIONAL* lhs, /**< left hand side of row */
228 SCIP_RATIONAL* rhs, /**< right hand side of row */
229 SCIP_Bool isfprelaxable /**< is it possible to make fp-relaxation of this row */
230 );
231
232/** creates and captures an exact LP row from a fp row
233 *
234 * @note This may change the floating-point coefficients slightly if the rational representation is rounded to smaller
235 * denominators according to parameter exact/cutmaxdenom.
236 */
238 SCIP_ROW* fprow, /**< corresponding fp row to create from */
239 BMS_BLKMEM* blkmem, /**< block memory */
240 SCIP_SET* set, /**< global SCIP settings */
241 SCIP_STAT* stat, /**< problem statistics */
242 SCIP_EVENTQUEUE* eventqueue, /**< the eventqueue */
243 SCIP_PROB* prob, /**< scip prob structure */
244 SCIP_LPEXACT* lpexact /**< current LP data */
245 );
246
247/** populate data of two empty fp rows with data from exact row */
249 BMS_BLKMEM* blkmem, /**< block memory */
250 SCIP_SET* set, /**< global SCIP settings */
251 SCIP_STAT* stat, /**< SCIP statistics */
252 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
253 SCIP_LPEXACT* lpexact, /**< current exact LP data */
254 SCIP_PROB* prob, /**< SCIP problem data */
255 SCIP_ROWEXACT* row, /**< SCIP row */
256 SCIP_ROW* rowlhs, /**< fp row-relaxation wrt lhs */
257 SCIP_ROW* rowrhs, /**< fp row-relaxation wrt rhs */
258 SCIP_Bool* onerowrelax, /**< is one row enough to represent the exact row */
259 SCIP_Bool* hasfprelax /**< is it possible to generate relaxations at all for this row? */
260 );
261
262/** applies all cached changes to the LP solver */
264 SCIP_LPEXACT* lpexact, /**< current exact LP data */
265 BMS_BLKMEM* blkmem, /**< block memory */
266 SCIP_SET* set, /**< global SCIP settings */
267 SCIP_EVENTQUEUE* eventqueue /**< event queue */
268 );
269
270/** ensures all rows/columns are correctly updated, but changes are not yet communicated to the exact LP solver */
272 SCIP_LPEXACT* lpexact, /**< current exact LP data */
273 BMS_BLKMEM* blkmem, /**< block memory */
274 SCIP_SET* set, /**< global SCIP settings */
275 SCIP_EVENTQUEUE* eventqueue /**< event queue */
276 );
277
278/*
279 * lp methods
280 */
281
282/** returns whether the success rate of the Neumaier-Shcherbina safe bounding method is sufficiently high */
284 SCIP_LPEXACT* lpexact /**< pointer to LP data object */
285 );
286
287/** returns whether it is possible to use project and shift bounding method */
289 SCIP_LPEXACT* lpexact /**< pointer to LP data object */
290 );
291
292/** checks that lp and fplp are properly synced */
294 SCIP_LPEXACT* lpexact, /**< pointer to LP data object */
295 SCIP_SET* set, /**< global SCIP settings */
296 SCIP_MESSAGEHDLR* msg /**< message handler */
297 );
298
299/** creates empty LP data object */
301 SCIP_LPEXACT** lpexact, /**< pointer to LP data object */
302 BMS_BLKMEM* blkmem, /**< block memory */
303 SCIP_LP* fplp, /**< the normal floating point lp */
304 SCIP_SET* set, /**< global SCIP settings */
305 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
306 SCIP_STAT* stat, /**< problem statistics */
307 const char* name /**< problem name */
308 );
309
310/** frees LP data object */
312 SCIP_LPEXACT** lpexact, /**< pointer to LP data object */
313 BMS_BLKMEM* blkmem, /**< block memory */
314 SCIP_SET* set /**< global SCIP settings */
315 );
316
317/** adds a column to the LP and captures the variable */
319 SCIP_LPEXACT* lpexact, /**< LP data */
320 SCIP_SET* set, /**< global SCIP settings */
321 SCIP_COLEXACT* col /**< LP column */
322 );
323
324/** adds a row to the LP and captures it */
326 SCIP_LPEXACT* lpexact, /**< LP data */
327 SCIP_SET* set, /**< global SCIP settings */
328 SCIP_ROWEXACT* rowexact /**< LP row */
329 );
330
331/** returns the feasibility of a row for the given solution */
333 SCIP_ROWEXACT* row, /**< LP row */
334 SCIP_SET* set, /**< global SCIP settings */
335 SCIP_STAT* stat, /**< problem statistics data */
336 SCIP_SOL* sol, /**< primal CIP solution */
337 SCIP_RATIONAL* result /**< result pointer */
338 );
339
340/** does activity computation with running error analysis for a row, return TRUE on success */
342 SCIP_ROWEXACT* rowexact, /**< LP row */
343 SCIP_SET* set, /**< global SCIP settings */
344 SCIP_STAT* stat, /**< problem statistics data */
345 SCIP_SOL* sol, /**< primal CIP solution */
346 SCIP_Real* activity, /**< the approximate activity */
347 SCIP_Real* errorbound /**< the error bound */
348 );
349
350/** returns the activity of a row for a given solution */
352 SCIP_ROWEXACT* rowexact, /**< LP row */
353 SCIP_SET* set, /**< global SCIP settings */
354 SCIP_STAT* stat, /**< problem statistics data */
355 SCIP_SOL* sol, /**< primal CIP solution */
356 SCIP_Bool useexact, /**< should an exact solution be used */
357 SCIP_RATIONAL* result /**< resulting activity */
358 );
359
360/** decreases usage counter of LP row, and frees memory if necessary */
362 SCIP_ROWEXACT** row, /**< pointer to LP row */
363 BMS_BLKMEM* blkmem, /**< block memory */
364 SCIP_SET* set, /**< global SCIP settings */
365 SCIP_LPEXACT* lpexact /**< current LP data */
366 );
367
368/** frees an LP row */
370 SCIP_ROWEXACT** row, /**< pointer to LP row */
371 BMS_BLKMEM* blkmem, /**< block memory */
372 SCIP_SET* set, /**< global SCIP settings */
373 SCIP_LPEXACT* lpexact /**< current LP data */
374 );
375
376/** ensuresr, that column array of row can store at least num entries */
378 SCIP_ROWEXACT* row, /**< LP row */
379 BMS_BLKMEM* blkmem, /**< block memory */
380 SCIP_SET* set, /**< global SCIP settings */
381 int num /**< minimum number of entries to store */
382 );
383
384/** add constant value to a row */
386 SCIP_ROWEXACT* row, /**< LP row */
387 SCIP_SET* set, /**< global SCIP settings */
388 SCIP_STAT* stat, /**< problem statistics */
389 SCIP_LPEXACT* lpexact, /**< current LP data */
390 SCIP_RATIONAL* addval /**< constant value to add to the row */
391 );
392
393/** adds a previously non existing coefficient to an LP row */
395 SCIP_ROWEXACT* rowexact, /**< LP row */
396 BMS_BLKMEM* blkmem, /**< block memory */
397 SCIP_SET* set, /**< global SCIP settings */
398 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
399 SCIP_LPEXACT* lpexact, /**< current LP data */
400 SCIP_COLEXACT* colexact, /**< LP column */
401 SCIP_RATIONAL* val /**< value of coefficient */
402 );
403
404/** deletes coefficient from row */
406 SCIP_ROWEXACT* row, /**< row to be changed */
407 SCIP_SET* set, /**< global SCIP settings */
408 SCIP_LPEXACT* lpexact, /**< current LP data */
409 SCIP_COLEXACT* col /**< coefficient to be deleted */
410 );
411
412/** changes or adds a coefficient to an LP row */
414 SCIP_ROWEXACT* row, /**< LP row */
415 BMS_BLKMEM* blkmem, /**< block memory */
416 SCIP_SET* set, /**< global SCIP settings */
417 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
418 SCIP_LPEXACT* lpexact, /**< current LP data */
419 SCIP_COLEXACT* col, /**< LP column */
420 SCIP_RATIONAL* val /**< value of coefficient */
421 );
422
423/** increases value of an existing or nonexisting coefficient in an LP column */
425 SCIP_ROWEXACT* row, /**< LP row */
426 BMS_BLKMEM* blkmem, /**< block memory */
427 SCIP_SET* set, /**< global SCIP settings */
428 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
429 SCIP_LPEXACT* lpexact, /**< current LP data */
430 SCIP_COLEXACT* col, /**< LP column */
431 SCIP_RATIONAL* incval /**< valpelue to add to the coefficient */
432 );
433
434/** changes constant value of a row */
436 SCIP_ROWEXACT* row, /**< LP row */
437 SCIP_STAT* stat, /**< problem statistics */
438 SCIP_LPEXACT* lpexact, /**< current LP data */
439 SCIP_RATIONAL* constant /**< new constant value */
440 );
441
442/** returns the feasibility of a row in the current LP solution: negative value means infeasibility */
444 SCIP_ROWEXACT* row, /**< LP row */
445 SCIP_SET* set, /**< global SCIP settings */
446 SCIP_STAT* stat, /**< problem statistics */
447 SCIP_LPEXACT* lpexact, /**< current LP data */
448 SCIP_RATIONAL* result /**< rational pointer to store the result */
449 );
450
451/** returns the pseudo feasibility of a row in the current pseudo solution: negative value means infeasibility */
453 SCIP_ROWEXACT* row, /**< LP row */
454 SCIP_SET* set, /**< global SCIP settings */
455 SCIP_STAT* stat, /**< problem statistics */
456 SCIP_RATIONAL* result /**< rational pointer to store the result */
457 );
458
459/** returns the activity of a row in the current LP solution */
461 SCIP_ROWEXACT* row, /**< LP row */
462 SCIP_STAT* stat, /**< problem statistics */
463 SCIP_LPEXACT* lpexact /**< current LP data */
464 );
465
466/** returns the pseudo activity of a row in the current pseudo solution */
468 SCIP_ROWEXACT* row, /**< LP row */
469 SCIP_STAT* stat /**< problem statistics */
470 );
471
472/** enables delaying of row sorting */
474 SCIP_ROWEXACT* rowexact /**< LP rowexact */
475 );
476
477/** disables delaying of row sorting, sorts row and merges coefficients with equal columns */
479 SCIP_ROWEXACT* rowexact, /**< LP rowexact */
480 SCIP_SET* set /**< global SCIP settings */
481 );
482
483/** recalculates the current activity of a row */
485 SCIP_ROWEXACT* rowexact, /**< LP row */
486 SCIP_STAT* stat /**< problem statistics */
487 );
488
489 /** calculates the current pseudo activity of a row */
491 SCIP_ROWEXACT* rowexact, /**< row data */
492 SCIP_STAT* stat /**< problem statistics */
493 );
494
495/** gets objective value of column */
497 SCIP_COLEXACT* col /**< LP column */
498 );
499
500/** gets lower bound of column */
502 SCIP_COLEXACT* col /**< LP column */
503 );
504
505/** gets upper bound of column */
507 SCIP_COLEXACT* col /**< LP column */
508 );
509
510/** gets best bound of column with respect to the objective function */
512 SCIP_COLEXACT* col /**< LP column */
513 );
514
515/** gets the primal LP solution of a column */
517 SCIP_COLEXACT* col /**< LP column */
518 );
519
520/*
521 * lp update methods
522 */
523
524/** updates current pseudo and loose objective value for a change in a variable's objective value */
526 SCIP_SET* set, /**< global SCIP settings */
527 SCIP_LPEXACT* lpexact, /**< current LP data */
528 SCIP_VAR* var, /**< problem variable that changed */
529 SCIP_RATIONAL* oldobj, /**< old objective value of variable */
530 SCIP_RATIONAL* newobj /**< new objective value of variable */
531 );
532
533/** updates current root pseudo objective value for a global change in a variable's lower bound */
535 SCIP_LPEXACT* lpexact, /**< current LP data */
536 SCIP_SET* set, /**< global SCIP settings */
537 SCIP_VAR* var, /**< problem variable that changed */
538 SCIP_RATIONAL* oldlb, /**< old lower bound of variable */
539 SCIP_RATIONAL* newlb /**< new lower bound of variable */
540 );
541
542/** updates current pseudo and loose objective value for a change in a variable's lower bound */
544 SCIP_LPEXACT* lpexact, /**< current LP data */
545 SCIP_SET* set, /**< global SCIP settings */
546 SCIP_VAR* var, /**< problem variable that changed */
547 SCIP_RATIONAL* oldlb, /**< old lower bound of variable */
548 SCIP_RATIONAL* newlb /**< new lower bound of variable */
549 );
550
551/** updates current root pseudo objective value for a global change in a variable's upper bound */
553 SCIP_LPEXACT* lpexact, /**< current LP data */
554 SCIP_SET* set, /**< global SCIP settings */
555 SCIP_VAR* var, /**< problem variable that changed */
556 SCIP_RATIONAL* oldub, /**< old upper bound of variable */
557 SCIP_RATIONAL* newub /**< new upper bound of variable */
558 );
559
560/** updates current pseudo objective value for a change in a variable's upper bound */
562 SCIP_LPEXACT* lpexact, /**< current LP data */
563 SCIP_SET* set, /**< global SCIP settings */
564 SCIP_VAR* var, /**< problem variable that changed */
565 SCIP_RATIONAL* oldub, /**< old upper bound of variable */
566 SCIP_RATIONAL* newub /**< new upper bound of variable */
567 );
568
569/** informs LP, that given variable was added to the problem */
571 SCIP_LPEXACT* lpexact, /**< current LP data */
572 SCIP_SET* set, /**< global SCIP settings */
573 SCIP_VAR* var /**< variable that is now a LOOSE problem variable */
574 );
575
576/** informs LP, that given variable is to be deleted from the problem */
578 SCIP_LPEXACT* lpexact, /**< current LP data */
579 SCIP_SET* set, /**< global SCIP settings */
580 SCIP_VAR* var /**< variable that will be deleted from the problem */
581 );
582
583/** informs LP, that given formerly loose problem variable is now a column variable */
585 SCIP_LPEXACT* lpexact, /**< current LP data */
586 SCIP_SET* set, /**< global SCIP settings */
587 SCIP_VAR* var /**< problem variable that changed from LOOSE to COLUMN */
588 );
589
590/** informs LP, that given formerly column problem variable is now again a loose variable */
592 SCIP_LPEXACT* lpexact, /**< current LP data */
593 SCIP_SET* set, /**< global SCIP settings */
594 SCIP_VAR* var /**< problem variable that changed from COLUMN to LOOSE */
595 );
596
597/** decrease the number of loose variables by one */
599 SCIP_LPEXACT* lpexact /**< current LP data */
600 );
601
603 SCIP_LPEXACT* lpexact /**< current LP data */
604 );
605
606/** stores the LP solution in the columns and rows */
608 SCIP_LPEXACT* lpexact, /**< current LP data */
609 SCIP_SET* set, /**< global SCIP settings */
610 SCIP_STAT* stat, /**< problem statistics */
611 SCIP_Bool* primalfeasible, /**< pointer to store whether the solution is primal feasible, or NULL */
612 SCIP_Bool* dualfeasible, /**< pointer to store whether the solution is dual feasible, or NULL */
613 SCIP_Bool overwritefplp /**< should the floating point values be overwritten, e.g. if fp lp was infeasible */
614 );
615
616/** stores LP solution with infinite objective value in the columns and rows */
618 SCIP_LPEXACT* lpexact, /**< current LP data */
619 SCIP_SET* set, /**< global SCIP settings */
620 SCIP_STAT* stat, /**< problem statistics */
621 SCIP_Bool* primalfeasible, /**< pointer to store whether the solution is primal feasible, or NULL */
622 SCIP_Bool* rayfeasible /**< pointer to store whether the primal ray is a feasible unboundedness proof, or NULL */
623 );
624
625/** returns primal ray proving the unboundedness of the current LP */
627 SCIP_LPEXACT* lpexact, /**< current LP data */
628 SCIP_SET* set, /**< global SCIP settings */
629 SCIP_RATIONAL** ray /**< array for storing primal ray values, they are stored w.r.t. the problem index of the variables,
630 * so the size of this array should be at least number of active variables
631 * (all entries have to be initialized to 0 before) */
632 );
633
634/** stores the dual Farkas multipliers for infeasibility proof in rows. besides
635 *
636 * @note The Farkas proof is checked for validity if lp/checkfarkas = TRUE and @p valid is not NULL.
637 */
639 SCIP_LPEXACT* lpexact, /**< current LP data */
640 SCIP_SET* set, /**< global SCIP settings */
641 SCIP_STAT* stat, /**< problem statistics */
642 SCIP_Bool* valid, /**< pointer to store whether the Farkas proof is valid or NULL */
643 SCIP_Bool overwritefplp /**< should the floating point values be overwritten, e.g. if fp lp was infeasible */
644 );
645
646/** get number of iterations used in last LP solve */
648 SCIP_LPEXACT* lpexact, /**< current exact LP data */
649 int* iterations /**< pointer to store the iteration count */
650 );
651
652/** gets objective value of current LP
653 *
654 * @note This method returns the objective value of the current LP solution, which might be primal or dual infeasible
655 * if a limit was hit during solving. It must not be used as a dual bound if the LP solution status is
656 * SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.
657 */
659 SCIP_LPEXACT* lpexact, /**< current LP data */
660 SCIP_SET* set, /**< global SCIP settings */
661 SCIP_RATIONAL* res /**< result pointer to store rational */
662 );
663
664/** gets the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
665 * objective function) local bound
666 */
668 SCIP_LPEXACT* lpexact, /**< current LP data */
669 SCIP_SET* set, /**< global SCIP settings */
670 SCIP_RATIONAL* res /**< result pointer to store rational */
671 );
672
673/** removes all columns after the given number of cols from the LP */
675 SCIP_LPEXACT* lpexact, /**< LP data */
676 SCIP_SET* set, /**< global SCIP settings */
677 int newncols /**< new number of columns in the LP */
678 );
679
680/** removes and releases all rows after the given number of rows from the LP */
682 SCIP_LPEXACT* lpexact, /**< LP data */
683 BMS_BLKMEM* blkmem, /**< block memory */
684 SCIP_SET* set, /**< global SCIP settings */
685 int newnrows /**< new number of rows in the LP */
686 );
687
688/* deletes the marked rows from the LP and the LP interface */
690 SCIP_LPEXACT* lpexact, /**< current LP data */
691 BMS_BLKMEM* blkmem, /**< block memory buffers */
692 SCIP_SET* set, /**< global SCIP settings */
693 int* rowdstat /**< deletion status of rows: 1 if row should be deleted, 0 if not */
694 );
695
696/** resets the LP to the empty LP by removing all columns and rows from LP, releasing all rows, and flushing the
697 * changes to the LP solver
698 */
700 SCIP_LPEXACT* lpexact, /**< LP data */
701 BMS_BLKMEM* blkmem, /**< block memory */
702 SCIP_SET* set, /**< global SCIP settings */
703 SCIP_STAT* stat, /**< problem statistics */
704 SCIP_EVENTQUEUE* eventqueue /**< event queue */
705 );
706
707/** removes all columns and rows from LP, releases all rows */
709 SCIP_LPEXACT* lpexact, /**< LP data */
710 BMS_BLKMEM* blkmem, /**< block memory */
711 SCIP_SET* set /**< global SCIP settings */
712 );
713
714/** forces an exact lp to be solved in the next exact bound computation */
716 SCIP_LPEXACT* lpexact, /**< exact LP data */
717 SCIP_SET* set /**< global SCIP settings */
718 );
719
720/** forces the next exact bound computation to be executed even in probing mode */
722 SCIP_LPEXACT* lpexact, /**< exact LP data */
723 SCIP_SET* set /**< global SCIP settings */
724 );
725
726/** allows an exact lp to be solved in the next exact bound computation */
728 SCIP_LPEXACT* lpexact, /**< exact LP data */
729 SCIP_SET* set, /**< global SCIP settings */
730 SCIP_Bool allowexact /**< TRUE if next safe bounding call should be allowed to be exact, FALSE otherwise */
731 );
732
733/** gets solution status of current exact LP */
735 SCIP_LPEXACT* lpexact /**< current LP data */
736 );
737
738/** sets the upper objective limit of the exact LP solver */
740 SCIP_LPEXACT* lpexact, /**< current exact LP data */
741 SCIP_SET* set, /**< global SCIP settings */
742 SCIP_Real cutoffbound /**< new upper objective limit */
743 );
744
745/** solves the LP with simplex algorithm, and copy the solution into the column's data */
747 SCIP_LPEXACT* lpexact, /**< LP data */
748 SCIP_LP* lp, /**< LP data */
749 SCIP_SET* set, /**< global SCIP settings */
750 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
751 BMS_BLKMEM* blkmem, /**< block memory buffers */
752 SCIP_STAT* stat, /**< problem statistics */
753 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
754 SCIP_PROB* prob, /**< problem data */
755 SCIP_Longint itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
756 SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
757 SCIP_Bool usefarkas /**< are we aiming to prove infeasibility? */
758 );
759
760/** stores exact LP state (like basis information) into LP state object */
762 SCIP_LPEXACT* lpexact, /**< exact LP data */
763 BMS_BLKMEM* blkmem, /**< block memory */
764 SCIP_LPISTATE** lpistate /**< pointer to LP state information (like basis information) */
765 );
766
767/** loads exact LP state (like basis information) into solver */
769 SCIP_LPEXACT* lpexact, /**< exact LP data */
770 BMS_BLKMEM* blkmem, /**< block memory */
771 SCIP_SET* set, /**< global SCIP settings */
772 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
773 SCIP_LPISTATE* lpistate, /**< LP state information (like basis information) */
774 SCIP_Bool wasprimfeas, /**< primal feasibility when LP state information was stored */
775 SCIP_Bool wasprimchecked, /**< true if the LP solution has passed the primal feasibility check */
776 SCIP_Bool wasdualfeas, /**< dual feasibility when LP state information was stored */
777 SCIP_Bool wasdualchecked /**< true if the LP solution has passed the dual feasibility check */
778 );
779
780/** frees exact LP state information */
782 SCIP_LPEXACT* lpexact, /**< exact LP data */
783 BMS_BLKMEM* blkmem, /**< block memory */
784 SCIP_LPISTATE** lpistate /**< pointer to LP state information (like basis information) */
785 );
786
787/** starts exact LP diving and saves bounds and objective values of columns to the current nodes's values */
789 SCIP_LPEXACT* lpexact, /**< current exact LP data */
790 BMS_BLKMEM* blkmem, /**< block memory */
791 SCIP_SET* set, /**< global SCIP settings */
792 SCIP_STAT* stat /**< problem statistics */
793 );
794
795/** quits exact LP diving and resets bounds and objective values of columns to the current node's values */
797 SCIP_LPEXACT* lpexact, /**< current LP data */
798 BMS_BLKMEM* blkmem, /**< block memory */
799 SCIP_SET* set, /**< global SCIP settings */
800 SCIP_STAT* stat, /**< problem statistics */
801 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
802 SCIP_VAR** vars, /**< array with all active variables */
803 int nvars /**< number of active variables */
804 );
805
806/** writes exact LP to a file */
808 SCIP_LPEXACT* lpexact, /**< current LP data */
809 const char* fname /**< file name */
810 );
811
812/** overwrites the dual values stored in the fp lp with exact values */
814 SCIP_LPEXACT* lpexact, /**< current LP data */
815 SCIP_Bool dualfarkas /**< TRUE if farkas proof, FALSE if dual sol? */
816 );
817
818/** synchronizes the exact LP with cuts from the floating-point LP */
820 SCIP_LPEXACT* lpexact, /**< LP data */
821 BMS_BLKMEM* blkmem, /**< block memory */
822 SCIP_SET* set /**< global SCIP settings */
823 );
824
825#ifdef __cplusplus
826}
827#endif
828
829#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_Bool SCIPlpExactProjectShiftPossible(SCIP_LPEXACT *lpexact)
Definition: lpexact.c:3909
void SCIProwExactRecalcLPActivity(SCIP_ROWEXACT *rowexact, SCIP_STAT *stat)
Definition: lpexact.c:5891
SCIP_RETCODE SCIProwExactGetSolFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_RATIONAL *result)
Definition: lpexact.c:5446
SCIP_RETCODE SCIPlpExactShrinkRows(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int newnrows)
Definition: lpexact.c:7503
void SCIPlpExactOverwriteFpDualSol(SCIP_LPEXACT *lpexact, SCIP_Bool dualfarkas)
Definition: lpexact.c:8449
SCIP_Bool SCIProwExactIsModifiable(SCIP_ROWEXACT *row)
Definition: lpexact.c:5046
SCIP_RETCODE SCIPlpExactFreeState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
Definition: lpexact.c:8160
SCIP_RETCODE SCIPlpExactReset(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue)
Definition: lpexact.c:7550
void SCIPlpExactForceExactSolve(SCIP_LPEXACT *lpexact, SCIP_SET *set)
Definition: lpexact.c:7598
SCIP_RETCODE SCIPlpExactGetSol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible, SCIP_Bool overwritefplp)
Definition: lpexact.c:6853
SCIP_RETCODE SCIPlpExactLink(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
Definition: lpexact.c:3711
SCIP_RETCODE SCIPlpExactSetState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPISTATE *lpistate, SCIP_Bool wasprimfeas, SCIP_Bool wasprimchecked, SCIP_Bool wasdualfeas, SCIP_Bool wasdualchecked)
Definition: lpexact.c:8118
SCIP_RETCODE SCIProwExactFree(SCIP_ROWEXACT **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lpexact)
Definition: lpexact.c:5610
SCIP_RETCODE SCIPlpExactSolveAndEval(SCIP_LPEXACT *lpexact, SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_Longint itlim, SCIP_Bool *lperror, SCIP_Bool usefarkas)
Definition: lpexact.c:4477
SCIP_RETCODE SCIPlpExactUpdateDelVar(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
Definition: lpexact.c:6634
SCIP_RETCODE SCIPcolExactDelCoef(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row)
Definition: lpexact.c:2852
SCIP_RETCODE SCIPlpExactDelRowset(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int *rowdstat)
Definition: lpexact.c:2643
SCIP_RATIONAL * SCIProwExactGetLPActivity(SCIP_ROWEXACT *row, SCIP_STAT *stat, SCIP_LPEXACT *lpexact)
Definition: lpexact.c:5713
SCIP_RETCODE SCIProwExactGetLPFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *result)
Definition: lpexact.c:5655
SCIP_Bool SCIPlpExactIsSynced(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_MESSAGEHDLR *msg)
Definition: lpexact.c:3920
SCIP_RETCODE SCIPlpExactGetState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
Definition: lpexact.c:8094
SCIP_RETCODE SCIPlpExactGetPrimalRay(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL **ray)
Definition: lpexact.c:7137
void SCIProwExactPrint(SCIP_ROWEXACT *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: lpexact.c:4953
SCIP_RETCODE SCIPcolExactAddCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *val)
Definition: lpexact.c:2834
SCIP_RETCODE SCIPlpExactUpdateVarColumn(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
Definition: lpexact.c:6663
SCIP_RETCODE SCIPlpExactStartDive(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: lpexact.c:8177
SCIP_RETCODE SCIProwExactIncCoef(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *incval)
Definition: lpexact.c:5321
SCIP_RETCODE SCIPlpExactSyncLPs(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: lpexact.c:8474
SCIP_RETCODE SCIProwExactEnsureSize(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
Definition: lpexact.c:6062
SCIP_RETCODE SCIPlpExactUpdateVarLoose(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
Definition: lpexact.c:6718
SCIP_RETCODE SCIProwExactAddCoef(SCIP_ROWEXACT *rowexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *colexact, SCIP_RATIONAL *val)
Definition: lpexact.c:5200
void SCIProwExactCapture(SCIP_ROWEXACT *row)
Definition: lpexact.c:4940
SCIP_Bool SCIProwHasExRow(SCIP_LPEXACT *lpexact, SCIP_ROW *row)
Definition: lpexact.c:5057
SCIP_RETCODE SCIPcolExactIncCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *incval)
Definition: lpexact.c:2945
SCIP_RETCODE SCIPlpExactUpdateAddVar(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
Definition: lpexact.c:6603
SCIP_RETCODE SCIPcolExactChgCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *val)
Definition: lpexact.c:2894
SCIP_RETCODE SCIProwExactCreate(SCIP_ROWEXACT **row, SCIP_ROW *fprow, SCIP_ROW *fprowrhs, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, int len, SCIP_COLEXACT **cols, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool isfprelaxable)
Definition: lpexact.c:3138
void SCIProwExactDelaySort(SCIP_ROWEXACT *rowexact)
Definition: lpexact.c:5867
SCIP_RETCODE SCIProwExactRelease(SCIP_ROWEXACT **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lpexact)
Definition: lpexact.c:5583
SCIP_RETCODE SCIProwExactGetPseudoFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_RATIONAL *result)
Definition: lpexact.c:5684
void SCIPlpExactDecNLoosevars(SCIP_LPEXACT *lpexact)
Definition: lpexact.c:6770
SCIP_RETCODE SCIPlpExactAddRow(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_ROWEXACT *rowexact)
Definition: lpexact.c:4133
SCIP_RATIONAL * SCIPcolExactGetPrimsol(SCIP_COLEXACT *col)
Definition: lpexact.c:6039
SCIP_RETCODE SCIPlpExactGetIterations(SCIP_LPEXACT *lpexact, int *iterations)
Definition: lpexact.c:7398
SCIP_COLEXACT * SCIPcolGetColExact(SCIP_COL *col)
Definition: lpexact.c:5099
void SCIProwExactForceSort(SCIP_ROWEXACT *rowexact, SCIP_SET *set)
Definition: lpexact.c:5878
int SCIProwExactGetIndex(SCIP_ROWEXACT *row)
Definition: lpexact.c:4996
void SCIPlpExactGetPseudoObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
Definition: lpexact.c:7438
SCIP_RETCODE SCIPlpExactUpdateVarObj(SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_VAR *var, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj)
Definition: lpexact.c:6422
SCIP_RETCODE SCIProwExactDelCoef(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col)
Definition: lpexact.c:5225
int SCIPlpExactGetNRows(SCIP_LPEXACT *lpexact)
Definition: lpexact.c:6788
SCIP_RETCODE SCIPlpExactClear(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: lpexact.c:7581
SCIP_Bool SCIProwExactGetSolActivityWithErrorbound(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Real *activity, SCIP_Real *errorbound)
Definition: lpexact.c:5475
SCIP_RATIONAL * SCIPcolExactGetUb(SCIP_COLEXACT *col)
Definition: lpexact.c:6016
SCIP_RETCODE SCIProwExactCreateFromRow(SCIP_ROW *fprow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LPEXACT *lpexact)
Definition: lpexact.c:3373
SCIP_RETCODE SCIPlpExactGetDualfarkas(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *valid, SCIP_Bool overwritefplp)
Definition: lpexact.c:7198
SCIP_RETCODE SCIPlpExactEndDive(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR **vars, int nvars)
Definition: lpexact.c:8280
SCIP_RETCODE SCIPlpExactShrinkCols(SCIP_LPEXACT *lpexact, SCIP_SET *set, int newncols)
Definition: lpexact.c:7455
SCIP_RETCODE SCIPlpExactAddCol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_COLEXACT *col)
Definition: lpexact.c:4089
SCIP_RETCODE SCIProwExactGetSolActivity(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool useexact, SCIP_RATIONAL *result)
Definition: lpexact.c:5529
SCIP_RETCODE SCIPlpExactGetUnboundedSol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *rayfeasible)
Definition: lpexact.c:7124
SCIP_RETCODE SCIPlpExactSetCutoffbound(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Real cutoffbound)
Definition: lpexact.c:4178
SCIP_LPSOLSTAT SCIPlpExactGetSolstat(SCIP_LPEXACT *lpexact)
Definition: lpexact.c:8084
SCIP_RETCODE SCIPlpExactUpdateVarUb(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
Definition: lpexact.c:6568
SCIP_RETCODE SCIPcolExactCalcFarkasRedcostCoef(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_RATIONAL *result, SCIP_RATIONAL **dual, SCIP_Bool usefarkas)
Definition: lpexact.c:5111
SCIP_Bool SCIPlpExactBoundShiftUseful(SCIP_LPEXACT *lpexact)
Definition: lpexact.c:3899
void SCIPlpExactAllowExactSolve(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Bool allowexact)
Definition: lpexact.c:7630
SCIP_RATIONAL * SCIProwExactGetPseudoActivity(SCIP_ROWEXACT *row, SCIP_STAT *stat)
Definition: lpexact.c:5734
SCIP_RETCODE SCIPcolExactFree(SCIP_COLEXACT **col, BMS_BLKMEM *blkmem)
Definition: lpexact.c:2754
void SCIPcolExactPrint(SCIP_COLEXACT *col, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: lpexact.c:2796
SCIP_RETCODE SCIPlpExactUpdateVarLbGlobal(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
Definition: lpexact.c:6469
SCIP_RETCODE SCIPcolExactChgObj(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newobj)
Definition: lpexact.c:3001
SCIP_RETCODE SCIPlpExactUpdateVarLb(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
Definition: lpexact.c:6501
SCIP_RETCODE SCIProwExactGenerateFpRows(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_PROB *prob, SCIP_ROWEXACT *row, SCIP_ROW *rowlhs, SCIP_ROW *rowrhs, SCIP_Bool *onerowrelax, SCIP_Bool *hasfprelax)
Definition: lpexact.c:3454
SCIP_RETCODE SCIPcolExactChgUb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newub)
Definition: lpexact.c:3093
SCIP_RETCODE SCIPlpExactCreate(SCIP_LPEXACT **lpexact, BMS_BLKMEM *blkmem, SCIP_LP *fplp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *name)
Definition: lpexact.c:3933
SCIP_RETCODE SCIProwExactAddConstant(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *addval)
Definition: lpexact.c:5416
SCIP_RATIONAL * SCIPcolExactGetBestBound(SCIP_COLEXACT *col)
Definition: lpexact.c:6026
void SCIPlpExactGetObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
Definition: lpexact.c:7416
SCIP_RETCODE SCIPcolExactCreate(SCIP_COLEXACT **col, SCIP_COL *fpcol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROWEXACT **rows, SCIP_RATIONAL **vals, SCIP_Bool removable)
Definition: lpexact.c:2410
SCIP_RETCODE SCIProwExactChgRhs(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *rhs)
Definition: lpexact.c:8063
SCIP_RATIONAL * SCIPcolExactGetLb(SCIP_COLEXACT *col)
Definition: lpexact.c:6006
SCIP_RETCODE SCIProwExactChgCoef(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *val)
Definition: lpexact.c:5269
SCIP_RETCODE SCIPlpExactWrite(SCIP_LPEXACT *lpexact, const char *fname)
Definition: lpexact.c:8434
SCIP_RETCODE SCIPlpExactFree(SCIP_LPEXACT **lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: lpexact.c:4039
SCIP_RATIONAL * SCIPcolExactGetObj(SCIP_COLEXACT *col)
Definition: lpexact.c:5996
SCIP_RETCODE SCIPlpExactFlush(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
Definition: lpexact.c:3651
void SCIProwExactRecalcPseudoActivity(SCIP_ROWEXACT *rowexact, SCIP_STAT *stat)
Definition: lpexact.c:5960
SCIP_RETCODE SCIProwExactChgLhs(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *lhs)
Definition: lpexact.c:8042
SCIP_RETCODE SCIProwExactChgConstant(SCIP_ROWEXACT *row, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *constant)
Definition: lpexact.c:5385
void SCIPlpExactForceSafeBound(SCIP_LPEXACT *lpexact, SCIP_SET *set)
Definition: lpexact.c:7614
SCIP_RETCODE SCIPcolExactChgLb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newlb)
Definition: lpexact.c:3048
SCIP_RETCODE SCIPlpExactUpdateVarUbGlobal(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
Definition: lpexact.c:6536
memory allocation routines
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:437
public methods for LP management
wrapper for rational number arithmetic
Definition: heur_padm.c:135
type definitions for managing events
enum SCIP_LPSolStat SCIP_LPSOLSTAT
Definition: type_lp.h:52
type definitions for exact LP management
type definitions for miscellaneous datastructures
type definitions for storing and manipulating the main problem
type definitions for rational numbers
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
type definitions for global SCIP settings
type definitions for storing primal CIP solutions
type definitions for problem statistics
type definitions for problem variables