Scippy

SCIP

Solving Constraint Integer Programs

lp.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-2016 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not email to scip@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file lp.h
17  * @brief internal methods for LP management
18  * @author Tobias Achterberg
19  * @author Marc Pfetsch
20  * @author Kati Wolter
21  * @author Gerald Gamrath
22  */
23 
24 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
25 
26 #ifndef __SCIP_LP_H__
27 #define __SCIP_LP_H__
28 
29 
30 #include <stdio.h>
31 
32 #include "scip/def.h"
33 #include "blockmemshell/memory.h"
34 #include "scip/type_set.h"
35 #include "scip/type_stat.h"
36 #include "scip/type_misc.h"
37 #include "scip/type_lp.h"
38 #include "scip/type_var.h"
39 #include "scip/type_prob.h"
40 #include "scip/type_sol.h"
41 #include "scip/pub_lp.h"
42 
43 #include "scip/struct_lp.h"
44 
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48 
49 /*
50  * Column methods
51  */
52 
53 /** creates an LP column */
54 extern
56  SCIP_COL** col, /**< pointer to column data */
57  BMS_BLKMEM* blkmem, /**< block memory */
58  SCIP_SET* set, /**< global SCIP settings */
59  SCIP_STAT* stat, /**< problem statistics */
60  SCIP_VAR* var, /**< variable, this column represents */
61  int len, /**< number of nonzeros in the column */
62  SCIP_ROW** rows, /**< array with rows of column entries */
63  SCIP_Real* vals, /**< array with coefficients of column entries */
64  SCIP_Bool removable /**< should the column be removed from the LP due to aging or cleanup? */
65  );
66 
67 /** frees an LP column */
68 extern
70  SCIP_COL** col, /**< pointer to LP column */
71  BMS_BLKMEM* blkmem, /**< block memory */
72  SCIP_SET* set, /**< global SCIP settings */
73  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
74  SCIP_LP* lp /**< current LP data */
75  );
76 
77 /** output column to file stream */
78 extern
79 void SCIPcolPrint(
80  SCIP_COL* col, /**< LP column */
81  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
82  FILE* file /**< output file (or NULL for standard output) */
83  );
84 
85 /** adds a previously non existing coefficient to an LP column */
86 extern
88  SCIP_COL* col, /**< LP column */
89  BMS_BLKMEM* blkmem, /**< block memory */
90  SCIP_SET* set, /**< global SCIP settings */
91  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
92  SCIP_LP* lp, /**< current LP data */
93  SCIP_ROW* row, /**< LP row */
94  SCIP_Real val /**< value of coefficient */
95  );
96 
97 /** deletes coefficient from column */
98 extern
100  SCIP_COL* col, /**< column to be changed */
101  BMS_BLKMEM* blkmem, /**< block memory */
102  SCIP_SET* set, /**< global SCIP settings */
103  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
104  SCIP_LP* lp, /**< current LP data */
105  SCIP_ROW* row /**< coefficient to be deleted */
106  );
107 
108 /** changes or adds a coefficient to an LP column */
109 extern
111  SCIP_COL* col, /**< LP column */
112  BMS_BLKMEM* blkmem, /**< block memory */
113  SCIP_SET* set, /**< global SCIP settings */
114  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
115  SCIP_LP* lp, /**< current LP data */
116  SCIP_ROW* row, /**< LP row */
117  SCIP_Real val /**< value of coefficient */
118  );
119 
120 /** increases value of an existing or nonexisting coefficient in an LP column */
121 extern
123  SCIP_COL* col, /**< LP column */
124  BMS_BLKMEM* blkmem, /**< block memory */
125  SCIP_SET* set, /**< global SCIP settings */
126  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
127  SCIP_LP* lp, /**< current LP data */
128  SCIP_ROW* row, /**< LP row */
129  SCIP_Real incval /**< value to add to the coefficient */
130  );
131 
132 /** changes objective value of column */
133 extern
135  SCIP_COL* col, /**< LP column to change */
136  SCIP_SET* set, /**< global SCIP settings */
137  SCIP_LP* lp, /**< current LP data */
138  SCIP_Real newobj /**< new objective value */
139  );
140 
141 /** changes lower bound of column */
142 extern
144  SCIP_COL* col, /**< LP column to change */
145  SCIP_SET* set, /**< global SCIP settings */
146  SCIP_LP* lp, /**< current LP data */
147  SCIP_Real newlb /**< new lower bound value */
148  );
149 
150 /** changes upper bound of column */
151 extern
153  SCIP_COL* col, /**< LP column to change */
154  SCIP_SET* set, /**< global SCIP settings */
155  SCIP_LP* lp, /**< current LP data */
156  SCIP_Real newub /**< new upper bound value */
157  );
158 
159 /** calculates the reduced costs of a column using the given dual solution vector */
160 extern
162  SCIP_COL* col, /**< LP column */
163  SCIP_Real* dualsol /**< dual solution vector for current LP rows */
164  );
165 
166 /** gets the reduced costs of a column in last LP or after recalculation */
167 extern
169  SCIP_COL* col, /**< LP column */
170  SCIP_STAT* stat, /**< problem statistics */
171  SCIP_LP* lp /**< current LP data */
172  );
173 
174 /** gets the feasibility of (the dual row of) a column in last LP or after recalculation */
175 extern
177  SCIP_COL* col, /**< LP column */
178  SCIP_SET* set, /**< global SCIP settings */
179  SCIP_STAT* stat, /**< problem statistics */
180  SCIP_LP* lp /**< current LP data */
181  );
182 
183 /** calculates the Farkas coefficient y^T A_i of a column i using the given dual Farkas vector y */
184 extern
186  SCIP_COL* col, /**< LP column */
187  SCIP_Real* dualfarkas /**< dense dual Farkas vector for current LP rows */
188  );
189 
190 /** gets the Farkas coefficient y^T A_i of a column i in last LP (which must be infeasible) */
191 extern
193  SCIP_COL* col, /**< LP column */
194  SCIP_STAT* stat, /**< problem statistics */
195  SCIP_LP* lp /**< current LP data */
196  );
197 
198 /** gets the Farkas value of a column in last LP (which must be infeasible), i.e. the Farkas coefficient y^T A_i times
199  * the best bound for this coefficient, i.e. max{y^T A_i x_i | lb <= x_i <= ub}
200  */
201 extern
203  SCIP_COL* col, /**< LP column */
204  SCIP_STAT* stat, /**< problem statistics */
205  SCIP_LP* lp /**< current LP data */
206  );
207 
208 /** start strong branching - call before any strong branching */
209 extern
211  SCIP_LP* lp /**< LP data */
212  );
213 
214 /** end strong branching - call after any strong branching */
215 extern
217  SCIP_LP* lp /**< LP data */
218  );
219 
220 /** sets strong branching information for a column variable */
221 extern
223  SCIP_COL* col, /**< LP column */
224  SCIP_SET* set, /**< global SCIP settings */
225  SCIP_STAT* stat, /**< dynamic problem statistics */
226  SCIP_LP* lp, /**< LP data */
227  SCIP_Real lpobjval, /**< objective value of the current LP */
228  SCIP_Real primsol, /**< primal solution value of the column in the current LP */
229  SCIP_Real sbdown, /**< dual bound after branching column down */
230  SCIP_Real sbup, /**< dual bound after branching column up */
231  SCIP_Bool sbdownvalid, /**< is the returned down value a valid dual bound? */
232  SCIP_Bool sbupvalid, /**< is the returned up value a valid dual bound? */
233  SCIP_Longint iter, /**< total number of strong branching iterations */
234  int itlim /**< iteration limit applied to the strong branching call */
235  );
236 
237 /** invalidates strong branching information for a column variable */
238 extern
240  SCIP_COL* col, /**< LP column */
241  SCIP_SET* set, /**< global SCIP settings */
242  SCIP_STAT* stat, /**< dynamic problem statistics */
243  SCIP_LP* lp /**< LP data */
244  );
245 
246 /** gets strong branching information on a column variable */
248  SCIP_COL* col, /**< LP column */
249  SCIP_Bool integral, /**< should integral strong branching be performed? */
250  SCIP_SET* set, /**< global SCIP settings */
251  SCIP_STAT* stat, /**< dynamic problem statistics */
252  SCIP_PROB* prob, /**< problem data */
253  SCIP_LP* lp, /**< LP data */
254  int itlim, /**< iteration limit for strong branchings */
255  SCIP_Real* down, /**< stores dual bound after branching column down */
256  SCIP_Real* up, /**< stores dual bound after branching column up */
257  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
258  * otherwise, it can only be used as an estimate value */
259  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
260  * otherwise, it can only be used as an estimate value */
261  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred */
262  );
263 
264 /** gets strong branching information on column variables */
265 extern
267  SCIP_COL** cols, /**< LP columns */
268  int ncols, /**< number of columns */
269  SCIP_Bool integral, /**< should integral strong branching be performed? */
270  SCIP_SET* set, /**< global SCIP settings */
271  SCIP_STAT* stat, /**< dynamic problem statistics */
272  SCIP_PROB* prob, /**< problem data */
273  SCIP_LP* lp, /**< LP data */
274  int itlim, /**< iteration limit for strong branchings */
275  SCIP_Real* down, /**< stores dual bounds after branching columns down */
276  SCIP_Real* up, /**< stores dual bounds after branching columns up */
277  SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds, or NULL;
278  * otherwise, they can only be used as an estimate value */
279  SCIP_Bool* upvalid, /**< stores whether the returned up values are valid dual bounds, or NULL;
280  * otherwise, they can only be used as an estimate value */
281  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred */
282  );
283 
284 /** gets last strong branching information available for a column variable;
285  * returns values of SCIP_INVALID, if strong branching was not yet called on the given column;
286  * keep in mind, that the returned old values may have nothing to do with the current LP solution
287  */
288 extern
290  SCIP_COL* col, /**< LP column */
291  SCIP_Real* down, /**< stores dual bound after branching column down, or NULL */
292  SCIP_Real* up, /**< stores dual bound after branching column up, or NULL */
293  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
294  * otherwise, it can only be used as an estimate value */
295  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
296  * otherwise, it can only be used as an estimate value */
297  SCIP_Real* solval, /**< stores LP solution value of column at last strong branching call, or NULL */
298  SCIP_Real* lpobjval /**< stores LP objective value at last strong branching call, or NULL */
299  );
300 
301 /** if strong branching was already applied on the column at the current node, returns the number of LPs solved after
302  * the LP where the strong branching on this column was applied;
303  * if strong branching was not yet applied on the column at the current node, returns INT_MAX
304  */
305 extern
307  SCIP_COL* col, /**< LP column */
308  SCIP_STAT* stat /**< dynamic problem statistics */
309  );
310 
311 /** marks a column to be not removable from the LP in the current node because it became obsolete */
312 extern
314  SCIP_COL* col, /**< LP column */
315  SCIP_STAT* stat /**< problem statistics */
316  );
317 
318 
319 /*
320  * Row methods
321  */
322 
323 /** creates and captures an LP row */
324 extern
326  SCIP_ROW** row, /**< pointer to LP row data */
327  BMS_BLKMEM* blkmem, /**< block memory */
328  SCIP_SET* set, /**< global SCIP settings */
329  SCIP_STAT* stat, /**< problem statistics */
330  SCIP_LP* lp, /**< current LP data */
331  const char* name, /**< name of row */
332  int len, /**< number of nonzeros in the row */
333  SCIP_COL** cols, /**< array with columns of row entries */
334  SCIP_Real* vals, /**< array with coefficients of row entries */
335  SCIP_Real lhs, /**< left hand side of row */
336  SCIP_Real rhs, /**< right hand side of row */
337  SCIP_ROWORIGINTYPE origintype, /**< type of origin of row */
338  void* origin, /**< pointer to constraint handler or separator who created the row (NULL if unkown) */
339  SCIP_Bool local, /**< is row only valid locally? */
340  SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
341  SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
342  );
343 
344 /** frees an LP row */
345 extern
347  SCIP_ROW** row, /**< pointer to LP row */
348  BMS_BLKMEM* blkmem, /**< block memory */
349  SCIP_SET* set, /**< global SCIP settings */
350  SCIP_LP* lp /**< current LP data */
351  );
352 
353 /** output row to file stream */
354 extern
355 void SCIProwPrint(
356  SCIP_ROW* row, /**< LP row */
357  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
358  FILE* file /**< output file (or NULL for standard output) */
359  );
360 
361 /** ensures, that column array of row can store at least num entries */
362 extern
364  SCIP_ROW* row, /**< LP row */
365  BMS_BLKMEM* blkmem, /**< block memory */
366  SCIP_SET* set, /**< global SCIP settings */
367  int num /**< minimum number of entries to store */
368  );
369 
370 /** increases usage counter of LP row */
371 extern
372 void SCIProwCapture(
373  SCIP_ROW* row /**< LP row */
374  );
375 
376 /** decreases usage counter of LP row, and frees memory if necessary */
377 extern
379  SCIP_ROW** row, /**< pointer to LP row */
380  BMS_BLKMEM* blkmem, /**< block memory */
381  SCIP_SET* set, /**< global SCIP settings */
382  SCIP_LP* lp /**< current LP data */
383  );
384 
385 /** enables delaying of row sorting */
386 extern
387 void SCIProwDelaySort(
388  SCIP_ROW* row /**< LP row */
389  );
390 
391 /** disables delaying of row sorting, sorts row and merges coefficients with equal columns */
392 extern
393 void SCIProwForceSort(
394  SCIP_ROW* row, /**< LP row */
395  SCIP_SET* set /**< global SCIP settings */
396  );
397 
398 /** adds a previously non existing coefficient to an LP row */
399 extern
401  SCIP_ROW* row, /**< LP row */
402  BMS_BLKMEM* blkmem, /**< block memory */
403  SCIP_SET* set, /**< global SCIP settings */
404  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
405  SCIP_LP* lp, /**< current LP data */
406  SCIP_COL* col, /**< LP column */
407  SCIP_Real val /**< value of coefficient */
408  );
409 
410 /** deletes coefficient from row */
411 extern
413  SCIP_ROW* row, /**< LP row */
414  BMS_BLKMEM* blkmem, /**< block memory */
415  SCIP_SET* set, /**< global SCIP settings */
416  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
417  SCIP_LP* lp, /**< current LP data */
418  SCIP_COL* col /**< coefficient to be deleted */
419  );
420 
421 /** changes or adds a coefficient to an LP row */
422 extern
424  SCIP_ROW* row, /**< LP row */
425  BMS_BLKMEM* blkmem, /**< block memory */
426  SCIP_SET* set, /**< global SCIP settings */
427  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
428  SCIP_LP* lp, /**< current LP data */
429  SCIP_COL* col, /**< LP column */
430  SCIP_Real val /**< value of coefficient */
431  );
432 
433 /** increases value of an existing or nonexisting coefficient in an LP column */
434 extern
436  SCIP_ROW* row, /**< LP row */
437  BMS_BLKMEM* blkmem, /**< block memory */
438  SCIP_SET* set, /**< global SCIP settings */
439  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
440  SCIP_LP* lp, /**< current LP data */
441  SCIP_COL* col, /**< LP column */
442  SCIP_Real incval /**< value to add to the coefficient */
443  );
444 
445 /** changes constant value of a row */
446 extern
448  SCIP_ROW* row, /**< LP row */
449  BMS_BLKMEM* blkmem, /**< block memory */
450  SCIP_SET* set, /**< global SCIP settings */
451  SCIP_STAT* stat, /**< problem statistics */
452  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
453  SCIP_LP* lp, /**< current LP data */
454  SCIP_Real constant /**< new constant value */
455  );
456 
457 /** add constant value to a row */
458 extern
460  SCIP_ROW* row, /**< LP row */
461  BMS_BLKMEM* blkmem, /**< block memory */
462  SCIP_SET* set, /**< global SCIP settings */
463  SCIP_STAT* stat, /**< problem statistics */
464  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
465  SCIP_LP* lp, /**< current LP data */
466  SCIP_Real addval /**< constant value to add to the row */
467  );
468 
469 /** changes left hand side of LP row */
470 extern
472  SCIP_ROW* row, /**< LP row */
473  BMS_BLKMEM* blkmem, /**< block memory */
474  SCIP_SET* set, /**< global SCIP settings */
475  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
476  SCIP_LP* lp, /**< current LP data */
477  SCIP_Real lhs /**< new left hand side */
478  );
479 
480 /** changes right hand side of LP row */
481 extern
483  SCIP_ROW* row, /**< LP row */
484  BMS_BLKMEM* blkmem, /**< block memory */
485  SCIP_SET* set, /**< global SCIP settings */
486  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
487  SCIP_LP* lp, /**< current LP data */
488  SCIP_Real rhs /**< new right hand side */
489  );
490 
491 /** changes the local flag of LP row */
492 extern
494  SCIP_ROW* row, /**< LP row */
495  SCIP_Bool local /**< new value for local flag */
496  );
497 
498 /** tries to find a value, such that all row coefficients, if scaled with this value become integral */
499 extern
501  SCIP_ROW* row, /**< LP row */
502  SCIP_SET* set, /**< global SCIP settings */
503  SCIP_Real mindelta, /**< minimal relative allowed difference of scaled coefficient s*c and integral i */
504  SCIP_Real maxdelta, /**< maximal relative allowed difference of scaled coefficient s*c and integral i */
505  SCIP_Longint maxdnom, /**< maximal denominator allowed in rational numbers */
506  SCIP_Real maxscale, /**< maximal allowed scalar */
507  SCIP_Bool usecontvars, /**< should the coefficients of the continuous variables also be made integral? */
508  SCIP_Real* intscalar, /**< pointer to store scalar that would make the coefficients integral */
509  SCIP_Bool* success /**< stores whether returned value is valid */
510  );
511 
512 /** tries to scale row, s.t. all coefficients become integral */
513 extern
515  SCIP_ROW* row, /**< LP row */
516  BMS_BLKMEM* blkmem, /**< block memory */
517  SCIP_SET* set, /**< global SCIP settings */
518  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
519  SCIP_STAT* stat, /**< problem statistics */
520  SCIP_LP* lp, /**< current LP data */
521  SCIP_Real mindelta, /**< minimal relative allowed difference of scaled coefficient s*c and integral i */
522  SCIP_Real maxdelta, /**< maximal relative allowed difference of scaled coefficient s*c and integral i */
523  SCIP_Longint maxdnom, /**< maximal denominator allowed in rational numbers */
524  SCIP_Real maxscale, /**< maximal value to scale row with */
525  SCIP_Bool usecontvars, /**< should the coefficients of the continuous variables also be made integral? */
526  SCIP_Bool* success /**< stores whether row could be made rational */
527  );
528 
529 /** recalculates the current activity of a row */
530 extern
532  SCIP_ROW* row, /**< LP row */
533  SCIP_STAT* stat /**< problem statistics */
534  );
535 
536 /** returns the activity of a row in the current LP solution */
537 extern
539  SCIP_ROW* row, /**< LP row */
540  SCIP_SET* set, /**< global SCIP settings */
541  SCIP_STAT* stat, /**< problem statistics */
542  SCIP_LP* lp /**< current LP data */
543  );
544 
545 /** returns the feasibility of a row in the current LP solution: negative value means infeasibility */
546 extern
548  SCIP_ROW* row, /**< LP row */
549  SCIP_SET* set, /**< global SCIP settings */
550  SCIP_STAT* stat, /**< problem statistics */
551  SCIP_LP* lp /**< current LP data */
552  );
553 
554 /** returns the feasibility of a row in the current relaxed solution: negative value means infeasibility */
555 extern
557  SCIP_ROW* row, /**< LP row */
558  SCIP_SET* set, /**< global SCIP settings */
559  SCIP_STAT* stat /**< problem statistics */
560  );
561 
562 /** returns the feasibility of a row in the current NLP solution: negative value means infeasibility */
563 extern
565  SCIP_ROW* row, /**< LP row */
566  SCIP_SET* set, /**< global SCIP settings */
567  SCIP_STAT* stat /**< problem statistics */
568  );
569 
570 /** calculates the current pseudo activity of a row */
571 extern
573  SCIP_ROW* row, /**< row data */
574  SCIP_STAT* stat /**< problem statistics */
575  );
576 
577 /** returns the pseudo activity of a row in the current pseudo solution */
578 extern
580  SCIP_ROW* row, /**< LP row */
581  SCIP_SET* set, /**< global SCIP settings */
582  SCIP_STAT* stat /**< problem statistics */
583  );
584 
585 /** returns the pseudo feasibility of a row in the current pseudo solution: negative value means infeasibility */
586 extern
588  SCIP_ROW* row, /**< LP row */
589  SCIP_SET* set, /**< global SCIP settings */
590  SCIP_STAT* stat /**< problem statistics */
591  );
592 
593 /** returns the activity of a row for a given solution */
594 extern
596  SCIP_ROW* row, /**< LP row */
597  SCIP_SET* set, /**< global SCIP settings */
598  SCIP_STAT* stat, /**< problem statistics data */
599  SCIP_SOL* sol /**< primal CIP solution */
600  );
601 
602 /** returns the feasibility of a row for the given solution */
603 extern
605  SCIP_ROW* row, /**< LP row */
606  SCIP_SET* set, /**< global SCIP settings */
607  SCIP_STAT* stat, /**< problem statistics data */
608  SCIP_SOL* sol /**< primal CIP solution */
609  );
610 
611 /** returns the minimal activity of a row w.r.t. the columns' bounds */
612 extern
614  SCIP_ROW* row, /**< LP row */
615  SCIP_SET* set, /**< global SCIP settings */
616  SCIP_STAT* stat /**< problem statistics data */
617  );
618 
619 /** returns the maximal activity of a row w.r.t. the columns' bounds */
620 extern
622  SCIP_ROW* row, /**< LP row */
623  SCIP_SET* set, /**< global SCIP settings */
624  SCIP_STAT* stat /**< problem statistics data */
625  );
626 
627 /** returns whether the row is unmodifiable and redundant w.r.t. the columns' bounds */
628 extern
630  SCIP_ROW* row, /**< LP row */
631  SCIP_SET* set, /**< global SCIP settings */
632  SCIP_STAT* stat /**< problem statistics data */
633  );
634 
635 /** gets maximal absolute value of row vector coefficients */
636 extern
638  SCIP_ROW* row, /**< LP row */
639  SCIP_SET* set /**< global SCIP settings */
640  );
641 
642 /** gets minimal absolute value of row vector's non-zero coefficients */
643 extern
645  SCIP_ROW* row, /**< LP row */
646  SCIP_SET* set /**< global SCIP settings */
647  );
648 
649 /** gets maximal column index of row entries */
650 int SCIProwGetMaxidx(
651  SCIP_ROW* row, /**< LP row */
652  SCIP_SET* set /**< global SCIP settings */
653  );
654 
655 /** gets minimal column index of row entries */
656 int SCIProwGetMinidx(
657  SCIP_ROW* row, /**< LP row */
658  SCIP_SET* set /**< global SCIP settings */
659  );
660 
661 /** returns row's efficacy with respect to the current LP solution: e = -feasibility/norm */
662 extern
664  SCIP_ROW* row, /**< LP row */
665  SCIP_SET* set, /**< global SCIP settings */
666  SCIP_STAT* stat, /**< problem statistics data */
667  SCIP_LP* lp /**< current LP data */
668  );
669 
670 /** returns whether the row's efficacy with respect to the current LP solution is greater than the minimal cut efficacy */
671 extern
673  SCIP_ROW* row, /**< LP row */
674  SCIP_SET* set, /**< global SCIP settings */
675  SCIP_STAT* stat, /**< problem statistics data */
676  SCIP_LP* lp, /**< current LP data */
677  SCIP_Bool root /**< should the root's minimal cut efficacy be used? */
678  );
679 
680 /** returns row's efficacy with respect to the given primal solution: e = -feasibility/norm */
681 extern
683  SCIP_ROW* row, /**< LP row */
684  SCIP_SET* set, /**< global SCIP settings */
685  SCIP_STAT* stat, /**< problem statistics data */
686  SCIP_SOL* sol /**< primal CIP solution */
687  );
688 
689 /** returns whether the row's efficacy with respect to the given primal solution is greater than the minimal cut
690  * efficacy
691  */
692 extern
694  SCIP_ROW* row, /**< LP row */
695  SCIP_SET* set, /**< global SCIP settings */
696  SCIP_STAT* stat, /**< problem statistics data */
697  SCIP_SOL* sol, /**< primal CIP solution */
698  SCIP_Bool root /**< should the root's minimal cut efficacy be used? */
699  );
700 
701 /** returns row's efficacy with respect to the relaxed solution: e = -feasibility/norm */
702 extern
704  SCIP_ROW* row, /**< LP row */
705  SCIP_SET* set, /**< global SCIP settings */
706  SCIP_STAT* stat /**< problem statistics data */
707  );
708 
709 /** returns row's efficacy with respect to the NLP solution: e = -feasibility/norm */
710 extern
712  SCIP_ROW* row, /**< LP row */
713  SCIP_SET* set, /**< global SCIP settings */
714  SCIP_STAT* stat /**< problem statistics data */
715  );
716 
717 /** gets parallelism of row with objective function: if the returned value is 1, the row is parallel to the objective
718  * function, if the value is 0, it is orthogonal to the objective function
719  */
720 extern
722  SCIP_ROW* row, /**< LP row */
723  SCIP_SET* set, /**< global SCIP settings */
724  SCIP_LP* lp /**< current LP data */
725  );
726 
727 /** includes event handler with given data in row's event filter */
728 extern
730  SCIP_ROW* row, /**< row */
731  BMS_BLKMEM* blkmem, /**< block memory */
732  SCIP_SET* set, /**< global SCIP settings */
733  SCIP_EVENTTYPE eventtype, /**< event type to catch */
734  SCIP_EVENTHDLR* eventhdlr, /**< event handler to call for the event processing */
735  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler for the event processing */
736  int* filterpos /**< pointer to store position of event filter entry, or NULL */
737  );
738 
739 /** deletes event handler with given data from row's event filter */
740 extern
742  SCIP_ROW* row, /**< row */
743  BMS_BLKMEM* blkmem, /**< block memory */
744  SCIP_SET* set, /**< global SCIP settings */
745  SCIP_EVENTTYPE eventtype, /**< event type mask of dropped event */
746  SCIP_EVENTHDLR* eventhdlr, /**< event handler to call for the event processing */
747  SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler for the event processing */
748  int filterpos /**< position of event filter entry returned by SCIPvarCatchEvent(), or -1 */
749  );
750 
751 /** marks a row to be not removable from the LP in the current node */
752 extern
754  SCIP_ROW* row, /**< LP row */
755  SCIP_STAT* stat /**< problem statistics */
756  );
757 
758 
759 /*
760  * LP methods
761  */
762 
763 /** creates empty LP data object */
764 extern
766  SCIP_LP** lp, /**< pointer to LP data object */
767  SCIP_SET* set, /**< global SCIP settings */
768  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
769  SCIP_STAT* stat, /**< problem statistics */
770  const char* name /**< problem name */
771  );
772 
773 /** frees LP data object */
774 extern
776  SCIP_LP** lp, /**< pointer to LP data object */
777  BMS_BLKMEM* blkmem, /**< block memory */
778  SCIP_SET* set, /**< global SCIP settings */
779  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
780  SCIP_EVENTFILTER* eventfilter /**< global event filter */
781  );
782 
783 /** resets the LP to the empty LP by removing all columns and rows from LP, releasing all rows, and flushing the
784  * changes to the LP solver
785  */
786 extern
788  SCIP_LP* lp, /**< LP data */
789  BMS_BLKMEM* blkmem, /**< block memory */
790  SCIP_SET* set, /**< global SCIP settings */
791  SCIP_STAT* stat, /**< problem statistics */
792  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
793  SCIP_EVENTFILTER* eventfilter /**< global event filter */
794  );
795 
796 /** adds a column to the LP and captures the variable */
797 extern
799  SCIP_LP* lp, /**< LP data */
800  SCIP_SET* set, /**< global SCIP settings */
801  SCIP_COL* col, /**< LP column */
802  int depth /**< depth in the tree where the column addition is performed */
803  );
804 
805 /** adds a row to the LP and captures it */
806 extern
808  SCIP_LP* lp, /**< LP data */
809  BMS_BLKMEM* blkmem, /**< block memory buffers */
810  SCIP_SET* set, /**< global SCIP settings */
811  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
812  SCIP_EVENTFILTER* eventfilter, /**< global event filter */
813  SCIP_ROW* row, /**< LP row */
814  int depth /**< depth in the tree where the row addition is performed */
815  );
816 
817 /** removes all columns after the given number of columns from the LP */
818 extern
820  SCIP_LP* lp, /**< LP data */
821  SCIP_SET* set, /**< global SCIP settings */
822  int newncols /**< new number of columns in the LP */
823  );
824 
825 /** removes and releases all rows after the given number of rows from the LP */
826 extern
828  SCIP_LP* lp, /**< LP data */
829  BMS_BLKMEM* blkmem, /**< block memory */
830  SCIP_SET* set, /**< global SCIP settings */
831  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
832  SCIP_EVENTFILTER* eventfilter, /**< global event filter */
833  int newnrows /**< new number of rows in the LP */
834  );
835 
836 /** removes all columns and rows from LP, releases all rows */
837 extern
839  SCIP_LP* lp, /**< LP data */
840  BMS_BLKMEM* blkmem, /**< block memory */
841  SCIP_SET* set, /**< global SCIP settings */
842  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
843  SCIP_EVENTFILTER* eventfilter /**< global event filter */
844  );
845 
846 /** remembers number of columns and rows to track the newly added ones */
847 extern
848 void SCIPlpMarkSize(
849  SCIP_LP* lp /**< current LP data */
850  );
851 
852 /** sets the remembered number of columns and rows to the given values */
853 extern
854 void SCIPlpSetSizeMark(
855  SCIP_LP* lp, /**< current LP data */
856  int nrows, /**< number of rows to set the size marker to */
857  int ncols /**< number of columns to set the size marker to */
858  );
859 
860 /** gets all indices of basic columns and rows: index i >= 0 corresponds to column i, index i < 0 to row -i-1 */
861 extern
863  SCIP_LP* lp, /**< LP data */
864  int* basisind /**< pointer to store basis indices ready to keep number of rows entries */
865  );
866 
867 /** gets current basis status for columns and rows; arrays must be large enough to store the basis status */
868 extern
870  SCIP_LP* lp, /**< LP data */
871  int* cstat, /**< array to store column basis status, or NULL */
872  int* rstat /**< array to store row basis status, or NULL */
873  );
874 
875 /** gets a row from the inverse basis matrix B^-1 */
876 extern
878  SCIP_LP* lp, /**< LP data */
879  int r, /**< row number */
880  SCIP_Real* coef, /**< pointer to store the coefficients of the row */
881  int* inds, /**< array to store the non-zero indices, or NULL */
882  int* ninds /**< pointer to store the number of non-zero indices, or NULL
883  * (-1: if we do not store sparsity informations) */
884  );
885 
886 /** gets a column from the inverse basis matrix B^-1 */
887 extern
889  SCIP_LP* lp, /**< LP data */
890  int c, /**< column number of B^-1; this is NOT the number of the column in the LP
891  * returned by SCIPcolGetLPPos(); you have to call SCIPgetBasisInd()
892  * to get the array which links the B^-1 column numbers to the row and
893  * column numbers of the LP! c must be between 0 and nrows-1, since the
894  * basis has the size nrows * nrows */
895  SCIP_Real* coef, /**< pointer to store the coefficients of the column */
896  int* inds, /**< array to store the non-zero indices, or NULL */
897  int* ninds /**< pointer to store the number of non-zero indices, or NULL
898  * (-1: if we do not store sparsity informations) */
899  );
900 
901 /** gets a row from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A) */
902 extern
904  SCIP_LP* lp, /**< LP data */
905  int r, /**< row number */
906  SCIP_Real* binvrow, /**< row in B^-1 from prior call to SCIPlpGetBInvRow(), or NULL */
907  SCIP_Real* coef, /**< pointer to store the coefficients of the row */
908  int* inds, /**< array to store the non-zero indices, or NULL */
909  int* ninds /**< pointer to store the number of non-zero indices, or NULL
910  * (-1: if we do not store sparsity informations) */
911  );
912 
913 /** gets a column from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A),
914  * i.e., it computes B^-1 * A_c with A_c being the c'th column of A
915  */
916 extern
918  SCIP_LP* lp, /**< LP data */
919  int c, /**< column number which can be accessed by SCIPcolGetLPPos() */
920  SCIP_Real* coef, /**< pointer to store the coefficients of the column */
921  int* inds, /**< array to store the non-zero indices, or NULL */
922  int* ninds /**< pointer to store the number of non-zero indices, or NULL
923  * (-1: if we do not store sparsity informations) */
924  );
925 
926 /** calculates a weighted sum of all LP rows; for negative weights, the left and right hand side of the corresponding
927  * LP row are swapped in the summation
928  */
929 extern
931  SCIP_LP* lp, /**< LP data */
932  SCIP_SET* set, /**< global SCIP settings */
933  SCIP_PROB* prob, /**< problem data */
934  SCIP_Real* weights, /**< row weights in row summation */
935  SCIP_REALARRAY* sumcoef, /**< array to store sum coefficients indexed by variables' probindex */
936  SCIP_Real* sumlhs, /**< pointer to store the left hand side of the row summation */
937  SCIP_Real* sumrhs /**< pointer to store the right hand side of the row summation */
938  );
939 
940 /* calculates a MIR cut out of the weighted sum of LP rows; The weights of modifiable rows are set to 0.0, because these
941  * rows cannot participate in a MIR cut.
942  */
943 extern
945  SCIP_LP* lp, /**< LP data */
946  SCIP_SET* set, /**< global SCIP settings */
947  SCIP_STAT* stat, /**< problem statistics */
948  SCIP_PROB* prob, /**< problem data */
949  SCIP_SOL* sol, /**< the solution that should be separated, or NULL for LP solution */
950  SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
951  SCIP_Bool usevbds, /**< should variable bounds be used in bound transformation? */
952  SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
953  SCIP_Bool fixintegralrhs, /**< should complementation tried to be adjusted such that rhs gets fractional? */
954  int* boundsfortrans, /**< bounds that should be used for transformed variables: vlb_idx/vub_idx,
955  * -1 for global lb/ub, -2 for local lb/ub, or -3 for using closest bound;
956  * NULL for using closest bound for all variables */
957  SCIP_BOUNDTYPE* boundtypesfortrans, /**< type of bounds that should be used for transformed variables;
958  * NULL for using closest bound for all variables */
959  int maxmksetcoefs, /**< maximal number of nonzeros allowed in aggregated base inequality */
960  SCIP_Real maxweightrange, /**< maximal valid range max(|weights|)/min(|weights|) of row weights */
961  SCIP_Real minfrac, /**< minimal fractionality of rhs to produce MIR cut for */
962  SCIP_Real maxfrac, /**< maximal fractionality of rhs to produce MIR cut for */
963  SCIP_Real* weights, /**< row weights in row summation */
964  SCIP_Real maxweight, /**< largest magnitude of weights; set to -1 if sparsity information is unknown */
965  int* weightinds, /**< sparsity pattern of weights; size nrowinds; NULL if sparsity info is unknown */
966  int nweightinds, /**< number of nonzeros in weights; -1 if rowinds is NULL */
967  int rowlensum, /**< total number of non-zeros in used rows (row associated with nonzero weight coefficient); -1 if unknown */
968  int* sidetypes, /**< specify row side type (-1 = lhs, 0 = unkown, 1 = rhs) or NULL for automatic choices */
969  SCIP_Real scale, /**< additional scaling factor multiplied to all rows */
970  SCIP_Real* mksetcoefs, /**< array to store mixed knapsack set coefficients: size nvars; or NULL */
971  SCIP_Bool* mksetcoefsvalid, /**< pointer to store whether mixed knapsack set coefficients are valid; or NULL */
972  SCIP_Real* mircoef, /**< array to store MIR coefficients: must be of size nvars */
973  SCIP_Real* mirrhs, /**< pointer to store the right hand side of the MIR row */
974  SCIP_Real* cutactivity, /**< pointer to store the activity of the resulting cut */
975  SCIP_Bool* success, /**< pointer to store whether the returned coefficients are a valid MIR cut */
976  SCIP_Bool* cutislocal, /**< pointer to store whether the returned cut is only valid locally */
977  int* cutrank /**< pointer to store the rank of the returned cut; or NULL */
978  );
979 
980 /* calculates a strong CG cut out of the weighted sum of LP rows; The weights of modifiable rows are set to 0.0, because
981  * these rows cannot participate in a strong CG cut.
982  */
983 extern
985  SCIP_LP* lp, /**< LP data */
986  SCIP_SET* set, /**< global SCIP settings */
987  SCIP_STAT* stat, /**< problem statistics */
988  SCIP_PROB* prob, /**< problem data */
989  SCIP_Real boundswitch, /**< fraction of domain up to which lower bound is used in transformation */
990  SCIP_Bool usevbds, /**< should variable bounds be used in bound transformation? */
991  SCIP_Bool allowlocal, /**< should local information allowed to be used, resulting in a local cut? */
992  int maxmksetcoefs, /**< maximal number of nonzeros allowed in aggregated base inequality */
993  SCIP_Real maxweightrange, /**< maximal valid range max(|weights|)/min(|weights|) of row weights */
994  SCIP_Real minfrac, /**< minimal fractionality of rhs to produce strong CG cut for */
995  SCIP_Real maxfrac, /**< maximal fractionality of rhs to produce strong CG cut for */
996  SCIP_Real* weights, /**< row weights in row summation */
997  int* rowinds, /**< array to store indices of non-zero entries of the weights array, or
998  * NULL */
999  int nrowinds, /**< number of non-zero entries in weights array, -1 if rowinds is NULL */
1000  SCIP_Real scale, /**< additional scaling factor multiplied to all rows */
1001  SCIP_Real* strongcgcoef, /**< array to store strong CG coefficients: must be of size nvars */
1002  SCIP_Real* strongcgrhs, /**< pointer to store the right hand side of the strong CG row */
1003  SCIP_Real* cutactivity, /**< pointer to store the activity of the resulting cut */
1004  SCIP_Bool* success, /**< pointer to store whether the returned coefficients are a valid strong CG cut */
1005  SCIP_Bool* cutislocal, /**< pointer to store whether the returned cut is only valid locally */
1006  int* cutrank /**< pointer to store the rank of the returned cut; or NULL */
1007  );
1008 
1009 /** stores LP state (like basis information) into LP state object */
1010 extern
1012  SCIP_LP* lp, /**< LP data */
1013  BMS_BLKMEM* blkmem, /**< block memory */
1014  SCIP_LPISTATE** lpistate /**< pointer to LP state information (like basis information) */
1015  );
1016 
1017 /** loads LP state (like basis information) into solver */
1018 extern
1020  SCIP_LP* lp, /**< LP data */
1021  BMS_BLKMEM* blkmem, /**< block memory */
1022  SCIP_SET* set, /**< global SCIP settings */
1023  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
1024  SCIP_LPISTATE* lpistate, /**< LP state information (like basis information) */
1025  SCIP_Bool wasprimfeas, /**< primal feasibility when LP state information was stored */
1026  SCIP_Bool wasdualfeas /**< dual feasibility when LP state information was stored */
1027  );
1028 
1029 /** frees LP state information */
1030 extern
1032  SCIP_LP* lp, /**< LP data */
1033  BMS_BLKMEM* blkmem, /**< block memory */
1034  SCIP_LPISTATE** lpistate /**< pointer to LP state information (like basis information) */
1035  );
1036 
1037 /** stores pricing norms into LP norms object */
1038 extern
1040  SCIP_LP* lp, /**< LP data */
1041  BMS_BLKMEM* blkmem, /**< block memory */
1042  SCIP_LPINORMS** lpinorms /**< pointer to LP pricing norms information */
1043  );
1044 
1045 /** loads pricing norms from LP norms object into solver */
1046 extern
1048  SCIP_LP* lp, /**< LP data */
1049  BMS_BLKMEM* blkmem, /**< block memory */
1050  SCIP_LPINORMS* lpinorms /**< LP pricing norms information */
1051  );
1052 
1053 /** frees pricing norms information */
1054 extern
1056  SCIP_LP* lp, /**< LP data */
1057  BMS_BLKMEM* blkmem, /**< block memory */
1058  SCIP_LPINORMS** lpinorms /**< pointer to LP pricing norms information */
1059  );
1060 
1061 /** sets the upper objective limit of the LP solver */
1062 extern
1064  SCIP_LP* lp, /**< current LP data */
1065  SCIP_SET* set, /**< global SCIP settings */
1066  SCIP_PROB* prob, /**< problem data */
1067  SCIP_Real cutoffbound /**< new upper objective limit */
1068  );
1069 
1070 /** applies all cached changes to the LP solver */
1071 extern
1073  SCIP_LP* lp, /**< current LP data */
1074  BMS_BLKMEM* blkmem, /**< block memory */
1075  SCIP_SET* set, /**< global SCIP settings */
1076  SCIP_EVENTQUEUE* eventqueue /**< event queue */
1077  );
1078 
1079 /** marks the LP to be flushed, even if the LP thinks it is not flushed */
1080 extern
1082  SCIP_LP* lp, /**< current LP data */
1083  SCIP_SET* set /**< global SCIP settings */
1084  );
1085 
1086 /** solves the LP with simplex algorithm, and copy the solution into the column's data */
1087 extern
1089  SCIP_LP* lp, /**< LP data */
1090  SCIP_SET* set, /**< global SCIP settings */
1091  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
1092  BMS_BLKMEM* blkmem, /**< block memory buffers */
1093  SCIP_STAT* stat, /**< problem statistics */
1094  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
1095  SCIP_EVENTFILTER* eventfilter, /**< global event filter */
1096  SCIP_PROB* prob, /**< problem data */
1097  SCIP_Longint itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
1098  SCIP_Bool limitresolveiters, /**< should LP iterations for resolving calls be limited?
1099  * (limit is computed within the method w.r.t. the average LP iterations) */
1100  SCIP_Bool aging, /**< should aging and removal of obsolete cols/rows be applied? */
1101  SCIP_Bool keepsol, /**< should the old LP solution be kept if no iterations were performed? */
1102  SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred */
1103  );
1104 
1105 /** gets solution status of current LP */
1106 extern
1108  SCIP_LP* lp /**< current LP data */
1109  );
1110 
1111 /** sets whether the root LP is a relaxation of the problem and its optimal objective value is a global lower bound */
1112 extern
1114  SCIP_LP* lp, /**< LP data */
1115  SCIP_Bool isrelax /**< is the root lp a relaxation of the problem? */
1116  );
1117 
1118 /** returns whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound */
1119 extern
1121  SCIP_LP* lp /**< LP data */
1122  );
1123 
1124 /** gets objective value of current LP
1125  *
1126  * @note This method returns the objective value of the current LP solution, which might be primal or dual infeasible
1127  * if a limit was hit during solving. It must not be used as a dual bound if the LP solution status is
1128  * SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.
1129  */
1130 extern
1132  SCIP_LP* lp, /**< current LP data */
1133  SCIP_SET* set, /**< global SCIP settings */
1134  SCIP_PROB* prob /**< problem data */
1135  );
1136 
1137 /** gets part of objective value of current LP that results from COLUMN variables only */
1138 extern
1140  SCIP_LP* lp /**< current LP data */
1141  );
1142 
1143 /** gets part of objective value of current LP that results from LOOSE variables only */
1144 extern
1146  SCIP_LP* lp, /**< current LP data */
1147  SCIP_SET* set, /**< global SCIP settings */
1148  SCIP_PROB* prob /**< problem data */
1149  );
1150 
1151 /** remembers the current LP objective value as root solution value */
1152 extern
1154  SCIP_LP* lp, /**< current LP data */
1155  SCIP_SET* set, /**< global SCIP settings */
1156  SCIP_PROB* prob /**< problem data */
1157  );
1158 
1159 /** invalidates the root LP solution value */
1160 extern
1162  SCIP_LP* lp /**< current LP data */
1163  );
1164 
1165 /** gets the global pseudo objective value; that is all variables set to their best (w.r.t. the objective function)
1166  * global bound
1167  */
1168 extern
1170  SCIP_LP* lp, /**< current LP data */
1171  SCIP_SET* set, /**< global SCIP settings */
1172  SCIP_PROB* prob /**< problem data */
1173  );
1174 
1175 /** recomputes local and global pseudo objective values */
1176 extern
1178  SCIP_LP* lp, /**< current LP data */
1179  SCIP_SET* set, /**< global SCIP settings */
1180  SCIP_PROB* prob /**< problem data */
1181  );
1182 
1183 /** gets the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
1184  * objective function) local bound
1185  */
1186 extern
1188  SCIP_LP* lp, /**< current LP data */
1189  SCIP_SET* set, /**< global SCIP settings */
1190  SCIP_PROB* prob /**< problem data */
1191  );
1192 
1193 /** gets pseudo objective value, if a bound of the given variable would be modified in the given way */
1194 extern
1196  SCIP_LP* lp, /**< current LP data */
1197  SCIP_SET* set, /**< global SCIP settings */
1198  SCIP_PROB* prob, /**< problem data */
1199  SCIP_VAR* var, /**< problem variable */
1200  SCIP_Real oldbound, /**< old value for bound */
1201  SCIP_Real newbound, /**< new value for bound */
1202  SCIP_BOUNDTYPE boundtype /**< type of bound: lower or upper bound */
1203  );
1204 
1205 /** gets pseudo objective value, if a bound of the given variable would be modified in the given way;
1206  * perform calculations with interval arithmetic to get an exact lower bound
1207  */
1208 extern
1210  SCIP_LP* lp, /**< current LP data */
1211  SCIP_SET* set, /**< global SCIP settings */
1212  SCIP_VAR* var, /**< problem variable */
1213  SCIP_Real oldbound, /**< old value for bound */
1214  SCIP_Real newbound, /**< new value for bound */
1215  SCIP_BOUNDTYPE boundtype /**< type of bound: lower or upper bound */
1216  );
1217 
1218 /** updates current pseudo and loose objective value for a change in a variable's objective value */
1219 extern
1221  SCIP_LP* lp, /**< current LP data */
1222  SCIP_SET* set, /**< global SCIP settings */
1223  SCIP_VAR* var, /**< problem variable that changed */
1224  SCIP_Real oldobj, /**< old objective value of variable */
1225  SCIP_Real newobj /**< new objective value of variable */
1226  );
1227 
1228 /** updates current root pseudo objective value for a global change in a variable's lower bound */
1229 extern
1231  SCIP_LP* lp, /**< current LP data */
1232  SCIP_SET* set, /**< global SCIP settings */
1233  SCIP_VAR* var, /**< problem variable that changed */
1234  SCIP_Real oldlb, /**< old lower bound of variable */
1235  SCIP_Real newlb /**< new lower bound of variable */
1236  );
1237 
1238 /** updates current pseudo and loose objective value for a change in a variable's lower bound */
1239 extern
1241  SCIP_LP* lp, /**< current LP data */
1242  SCIP_SET* set, /**< global SCIP settings */
1243  SCIP_VAR* var, /**< problem variable that changed */
1244  SCIP_Real oldlb, /**< old lower bound of variable */
1245  SCIP_Real newlb /**< new lower bound of variable */
1246  );
1247 
1248 /** updates current root pseudo objective value for a global change in a variable's upper bound */
1249 extern
1251  SCIP_LP* lp, /**< current LP data */
1252  SCIP_SET* set, /**< global SCIP settings */
1253  SCIP_VAR* var, /**< problem variable that changed */
1254  SCIP_Real oldub, /**< old upper bound of variable */
1255  SCIP_Real newub /**< new upper bound of variable */
1256  );
1257 
1258 /** updates current pseudo objective value for a change in a variable's upper bound */
1259 extern
1261  SCIP_LP* lp, /**< current LP data */
1262  SCIP_SET* set, /**< global SCIP settings */
1263  SCIP_VAR* var, /**< problem variable that changed */
1264  SCIP_Real oldub, /**< old upper bound of variable */
1265  SCIP_Real newub /**< new upper bound of variable */
1266  );
1267 
1268 /** informs LP, that given variable was added to the problem */
1269 extern
1271  SCIP_LP* lp, /**< current LP data */
1272  SCIP_SET* set, /**< global SCIP settings */
1273  SCIP_VAR* var /**< variable that is now a LOOSE problem variable */
1274  );
1275 
1276 /** informs LP, that given variable is to be deleted from the problem */
1277 extern
1279  SCIP_LP* lp, /**< current LP data */
1280  SCIP_SET* set, /**< global SCIP settings */
1281  SCIP_VAR* var /**< variable that will be deleted from the problem */
1282  );
1283 
1284 /** informs LP, that given formerly loose problem variable is now a column variable */
1285 extern
1287  SCIP_LP* lp, /**< current LP data */
1288  SCIP_SET* set, /**< global SCIP settings */
1289  SCIP_VAR* var /**< problem variable that changed from LOOSE to COLUMN */
1290  );
1291 
1292 /** informs LP, that given formerly column problem variable is now again a loose variable */
1293 extern
1295  SCIP_LP* lp, /**< current LP data */
1296  SCIP_SET* set, /**< global SCIP settings */
1297  SCIP_VAR* var /**< problem variable that changed from COLUMN to LOOSE */
1298  );
1299 
1300 /** decrease the number of loose variables by one */
1301 extern
1302 void SCIPlpDecNLoosevars(
1303  SCIP_LP* lp /**< current LP data */
1304  );
1305 
1306 /** stores the LP solution in the columns and rows */
1307 extern
1309  SCIP_LP* lp, /**< current LP data */
1310  SCIP_SET* set, /**< global SCIP settings */
1311  SCIP_STAT* stat, /**< problem statistics */
1312  SCIP_Bool* primalfeasible, /**< pointer to store whether the solution is primal feasible, or NULL */
1313  SCIP_Bool* dualfeasible /**< pointer to store whether the solution is dual feasible, or NULL */
1314  );
1315 
1316 /** stores LP solution with infinite objective value in the columns and rows */
1317 extern
1319  SCIP_LP* lp, /**< current LP data */
1320  SCIP_SET* set, /**< global SCIP settings */
1321  SCIP_STAT* stat, /**< problem statistics */
1322  SCIP_Bool* primalfeasible, /**< pointer to store whether the solution is primal feasible, or NULL */
1323  SCIP_Bool* rayfeasible /**< pointer to store whether the primal ray is a feasible unboundedness proof, or NULL */
1324  );
1325 
1326 /** returns primal ray proving the unboundedness of the current LP */
1327 extern
1329  SCIP_LP* lp, /**< current LP data */
1330  SCIP_SET* set, /**< global SCIP settings */
1331  SCIP_Real* ray /**< array for storing primal ray values, they are stored w.r.t. the problem index of the variables,
1332  * so the size of this array should be at least number of active variables
1333  * (all entries have to be initialized to 0 before) */
1334  );
1335 
1336 /** stores the dual Farkas multipliers for infeasibility proof in rows */
1337 extern
1339  SCIP_LP* lp, /**< current LP data */
1340  SCIP_SET* set, /**< global SCIP settings */
1341  SCIP_STAT* stat /**< problem statistics */
1342  );
1343 
1344 /** get number of iterations used in last LP solve */
1345 extern
1347  SCIP_LP* lp, /**< current LP data */
1348  int* iterations /**< pointer to store the iteration count */
1349  );
1350 
1351 /** increases age of columns with solution value 0.0 and rows with activity not at its bounds,
1352  * resets age of non-zero columns and sharp rows
1353  */
1354 extern
1356  SCIP_LP* lp, /**< current LP data */
1357  SCIP_STAT* stat /**< problem statistics */
1358  );
1359 
1360 /** removes all non-basic columns and basic rows in the part of the LP created at the current node, that are too old */
1361 extern
1363  SCIP_LP* lp, /**< current LP data */
1364  BMS_BLKMEM* blkmem, /**< block memory buffers */
1365  SCIP_SET* set, /**< global SCIP settings */
1366  SCIP_STAT* stat, /**< problem statistics */
1367  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
1368  SCIP_EVENTFILTER* eventfilter /**< global event filter */
1369  );
1370 
1371 /** removes all non-basic columns and basic rows in whole LP, that are too old */
1372 extern
1374  SCIP_LP* lp, /**< current LP data */
1375  BMS_BLKMEM* blkmem, /**< block memory buffers */
1376  SCIP_SET* set, /**< global SCIP settings */
1377  SCIP_STAT* stat, /**< problem statistics */
1378  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
1379  SCIP_EVENTFILTER* eventfilter /**< global event filter */
1380  );
1381 
1382 /** removes all non-basic columns at 0.0 and basic rows in the part of the LP created at the current node */
1383 extern
1385  SCIP_LP* lp, /**< current LP data */
1386  BMS_BLKMEM* blkmem, /**< block memory buffers */
1387  SCIP_SET* set, /**< global SCIP settings */
1388  SCIP_STAT* stat, /**< problem statistics */
1389  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
1390  SCIP_EVENTFILTER* eventfilter, /**< global event filter */
1391  SCIP_Bool root /**< are we at the root node? */
1392  );
1393 
1394 /** removes all non-basic columns at 0.0 and basic rows in the whole LP */
1395 extern
1397  SCIP_LP* lp, /**< current LP data */
1398  BMS_BLKMEM* blkmem, /**< block memory buffers */
1399  SCIP_SET* set, /**< global SCIP settings */
1400  SCIP_STAT* stat, /**< problem statistics */
1401  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
1402  SCIP_EVENTFILTER* eventfilter, /**< global event filter */
1403  SCIP_Bool root /**< are we at the root node? */
1404  );
1405 
1406 /** removes all redundant rows that were added at the current node */
1407 extern
1409  SCIP_LP* lp, /**< current LP data */
1410  BMS_BLKMEM* blkmem, /**< block memory buffers */
1411  SCIP_SET* set, /**< global SCIP settings */
1412  SCIP_STAT* stat, /**< problem statistics */
1413  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
1414  SCIP_EVENTFILTER* eventfilter /**< global event filter */
1415  );
1416 
1417 /** initiates LP diving */
1418 extern
1420  SCIP_LP* lp, /**< current LP data */
1421  BMS_BLKMEM* blkmem, /**< block memory */
1422  SCIP_SET* set, /**< global SCIP settings */
1423  SCIP_STAT* stat /**< problem statistics */
1424  );
1425 
1426 /** quits LP diving and resets bounds and objective values of columns to the current node's values */
1427 extern
1429  SCIP_LP* lp, /**< current LP data */
1430  BMS_BLKMEM* blkmem, /**< block memory */
1431  SCIP_SET* set, /**< global SCIP settings */
1432  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
1433  SCIP_STAT* stat, /**< problem statistics */
1434  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
1435  SCIP_EVENTFILTER* eventfilter, /**< global event filter */
1436  SCIP_PROB* prob, /**< problem data */
1437  SCIP_VAR** vars, /**< array with all active variables */
1438  int nvars /**< number of active variables */
1439  );
1440 
1441 /** records a current row side such that any change will be undone after diving */
1442 extern
1444  SCIP_LP* lp, /**< LP data object */
1445  SCIP_ROW* row, /**< row affected by the change */
1446  SCIP_SIDETYPE sidetype /**< side type */
1447  );
1448 
1449 /** informs the LP that probing mode was initiated */
1450 extern
1452  SCIP_LP* lp /**< current LP data */
1453  );
1454 
1455 /** informs the LP that probing mode was finished */
1456 extern
1458  SCIP_LP* lp /**< current LP data */
1459  );
1460 
1461 /** informs the LP that the probing mode is now used for strongbranching */
1462 extern
1464  SCIP_LP* lp /**< current LP data */
1465  );
1466 
1467 /** informs the LP that the probing mode is not used for strongbranching anymore */
1468 extern
1470  SCIP_LP* lp /**< current LP data */
1471  );
1472 
1473 /** gets proven lower (dual) bound of last LP solution */
1474 extern
1476  SCIP_LP* lp, /**< current LP data */
1477  SCIP_SET* set, /**< global SCIP settings */
1478  SCIP_Real* bound /**< pointer to store proven dual bound */
1479  );
1480 
1481 /** gets proven dual bound of last LP solution */
1482 extern
1484  SCIP_LP* lp, /**< current LP data */
1485  SCIP_SET* set, /**< global SCIP settings */
1486  SCIP_Bool* proved /**< pointer to store whether infeasibility is proven */
1487  );
1488 
1489 /** writes LP to a file */
1490 extern
1492  SCIP_LP* lp, /**< current LP data */
1493  const char* fname /**< file name */
1494  );
1495 
1496 /** writes MIP to a file */
1497 extern
1499  SCIP_LP* lp, /**< current LP data */
1500  SCIP_SET* set, /**< global SCIP settings */
1501  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
1502  const char* fname, /**< file name */
1503  SCIP_Bool genericnames, /**< should generic names like x_i and row_j be used in order to avoid
1504  * troubles with reserved symbols? */
1505  SCIP_Bool origobj, /**< should the original objective function be used? */
1506  SCIP_OBJSENSE objsense, /**< objective sense */
1507  SCIP_Real objscale, /**< objective scaling factor */
1508  SCIP_Real objoffset, /**< objective offset, e.g., caused by variable fixings in presolving */
1509  SCIP_Bool lazyconss /**< output removable rows as lazy constraints? */
1510  );
1511 
1512 /** recalculates Euclidean norm of objective function vector of column variables if it have gotten unreliable during calculation */
1513 extern
1515  SCIP_SET* set, /**< global SCIP settings */
1516  SCIP_LP* lp /**< LP data */
1517  );
1518 
1519 /** compute relative interior point */
1520 extern
1522  SCIP_SET* set, /**< global SCIP settings */
1523  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
1524  SCIP_LP* lp, /**< LP data */
1525  SCIP_PROB* prob, /**< problem data */
1526  SCIP_Bool relaxrows, /**< should the rows be relaxed */
1527  SCIP_Bool inclobjcutoff, /**< should a row for the objective cutoff be included */
1528  SCIP_Real timelimit, /**< time limit for LP solver */
1529  int iterlimit, /**< iteration limit for LP solver */
1530  SCIP_Real* point, /**< array to store relative interior point on exit */
1531  SCIP_Bool* success /**< buffer to indicate whether interior point was successfully computed */
1532  );
1533 
1534 /** gets array with columns of the LP */
1535 extern
1537  SCIP_LP* lp /**< current LP data */
1538  );
1539 
1540 /** gets current number of columns in LP */
1541 extern
1542 int SCIPlpGetNCols(
1543  SCIP_LP* lp /**< current LP data */
1544  );
1545 
1546 /** gets array with rows of the LP */
1547 extern
1549  SCIP_LP* lp /**< current LP data */
1550  );
1551 
1552 /** gets current number of rows in LP */
1553 extern
1554 int SCIPlpGetNRows(
1555  SCIP_LP* lp /**< current LP data */
1556  );
1557 
1558 /** gets array with newly added columns after the last mark */
1559 extern
1561  SCIP_LP* lp /**< current LP data */
1562  );
1563 
1564 /** gets number of newly added columns after the last mark */
1565 extern
1566 int SCIPlpGetNNewcols(
1567  SCIP_LP* lp /**< current LP data */
1568  );
1569 
1570 /** gets array with newly added rows after the last mark */
1571 extern
1573  SCIP_LP* lp /**< current LP data */
1574  );
1575 
1576 /** gets number of newly added rows after the last mark */
1577 extern
1578 int SCIPlpGetNNewrows(
1579  SCIP_LP* lp /**< current LP data */
1580  );
1581 
1582 /** gets Euclidean norm of objective function vector of column variables, only use this method if
1583  * lp->objsqrnormunreliable == FALSE, so probably you have to call SCIPlpRecalculateObjSqrNorm before */
1584 extern
1586  SCIP_LP* lp /**< LP data */
1587  );
1588 
1589 /** gets the objective value of the root node LP; returns SCIP_INVALID if the root node LP was not (yet) solved */
1590 extern
1592  SCIP_LP* lp /**< LP data */
1593  );
1594 
1595 /** gets part of the objective value of the root node LP that results from COLUMN variables only;
1596  * returns SCIP_INVALID if the root node LP was not (yet) solved
1597  */
1598 extern
1600  SCIP_LP* lp /**< LP data */
1601  );
1602 
1603 /** gets part of the objective value of the root node LP that results from LOOSE variables only;
1604  * returns SCIP_INVALID if the root node LP was not (yet) solved
1605  */
1606 extern
1608  SCIP_LP* lp /**< LP data */
1609  );
1610 
1611 /** gets the LP solver interface */
1612 extern
1614  SCIP_LP* lp /**< current LP data */
1615  );
1616 
1617 /** sets whether the current lp is a relaxation of the current problem and its optimal objective value is a local lower bound */
1618 extern
1619 void SCIPlpSetIsRelax(
1620  SCIP_LP* lp, /**< LP data */
1621  SCIP_Bool relax /**< is the current lp a relaxation? */
1622  );
1623 
1624 /** returns whether the current LP is a relaxation of the problem for which it has been solved and its
1625  * solution value a valid local lower bound?
1626  */
1627 extern
1629  SCIP_LP* lp /**< LP data */
1630  );
1631 
1632 /** returns whether the current LP is flushed and solved */
1633 extern
1635  SCIP_LP* lp /**< current LP data */
1636  );
1637 
1638 /** returns whether the current LP solution is a basic solution */
1639 extern
1641  SCIP_LP* lp /**< current LP data */
1642  );
1643 
1644 /** returns whether the LP is in diving mode */
1645 extern
1647  SCIP_LP* lp /**< current LP data */
1648  );
1649 
1650 /** returns whether the LP is in diving mode and the objective value of at least one column was changed */
1651 extern
1653  SCIP_LP* lp /**< current LP data */
1654  );
1655 
1656 /** marks the diving LP to have a changed objective function */
1657 extern
1659  SCIP_LP* lp /**< current LP data */
1660  );
1661 
1662 /** marks the diving LP to not have a changed objective function anymore */
1663 extern
1665  SCIP_LP* lp /**< current LP data */
1666  );
1667 
1668 /* returns TRUE if at least one left/right hand side of an LP row was changed during diving mode */
1669 extern
1671  SCIP_LP* lp /**< current LP data */
1672  );
1673 
1674 
1675 #ifdef NDEBUG
1676 
1677 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
1678  * speed up the algorithms.
1679  */
1680 
1681 #define SCIPlpGetCols(lp) ((lp)->cols)
1682 #define SCIPlpGetNCols(lp) ((lp)->ncols)
1683 #define SCIPlpGetRows(lp) ((lp)->rows)
1684 #define SCIPlpGetNRows(lp) ((lp)->nrows)
1685 #define SCIPlpGetNewcols(lp) (&((lp)->cols[(lp)->firstnewcol]))
1686 #define SCIPlpGetNNewcols(lp) ((lp)->ncols - (lp)->firstnewcol)
1687 #define SCIPlpGetNewrows(lp) (&((lp)->rows[(lp)->firstnewrow]))
1688 #define SCIPlpGetNNewrows(lp) ((lp)->nrows - (lp)->firstnewrow)
1689 #define SCIPlpGetObjNorm(lp) (SQRT((lp)->objsqrnorm))
1690 #define SCIPlpGetRootObjval(lp) (MIN((lp)->rootlpobjval + (lp)->rootlooseobjval, SCIP_INVALID))
1691 #define SCIPlpGetRootColumnObjval(lp) ((lp)->rootlpobjval)
1692 #define SCIPlpGetRootLooseObjval(lp) ((lp)->rootlooseobjval)
1693 #define SCIPlpGetLPI(lp) (lp)->lpi
1694 #define SCIPlpSetIsRelax(lp,relax) ((lp)->isrelax = relax)
1695 #define SCIPlpIsRelax(lp) (lp)->isrelax
1696 #define SCIPlpIsSolved(lp) ((lp)->flushed && (lp)->solved)
1697 #define SCIPlpIsSolBasic(lp) ((lp)->solisbasic)
1698 #define SCIPlpDiving(lp) (lp)->diving
1699 #define SCIPlpDivingObjChanged(lp) (lp)->divingobjchg
1700 #define SCIPlpMarkDivingObjChanged(lp) ((lp)->divingobjchg = TRUE)
1701 #define SCIPlpUnmarkDivingObjChanged(lp) ((lp)->divingobjchg = FALSE)
1702 #define SCIPlpDivingRowsChanged(lp) ((lp)->ndivechgsides > 0)
1703 
1704 #endif
1705 
1706 #ifdef __cplusplus
1707 }
1708 #endif
1709 
1710 #endif
SCIP_COL ** SCIPlpGetNewcols(SCIP_LP *lp)
Definition: lp.c:19208
SCIP_RETCODE SCIPlpUpdateVarLbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
Definition: lp.c:15844
enum SCIP_BoundType SCIP_BOUNDTYPE
Definition: type_lp.h:50
SCIP_Real SCIProwGetLPActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
Definition: lp.c:5988
SCIP_RETCODE SCIPlpGetIterations(SCIP_LP *lp, int *iterations)
Definition: lp.c:16888
SCIP_RETCODE SCIPlpIsInfeasibilityProved(SCIP_LP *lp, SCIP_SET *set, SCIP_Bool *proved)
Definition: lp.c:18157
SCIP_RETCODE SCIPcolChgObj(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)
Definition: lp.c:3504
void SCIPlpStartStrongbranchProbing(SCIP_LP *lp)
Definition: lp.c:17997
SCIP_RETCODE SCIPlpGetBInvARow(SCIP_LP *lp, int r, SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds)
Definition: lp.c:9410
void SCIPlpEndStrongbranchProbing(SCIP_LP *lp)
Definition: lp.c:18010
SCIP_Real SCIProwGetMaxval(SCIP_ROW *row, SCIP_SET *set)
Definition: lp.c:6423
SCIP_RETCODE SCIPlpGetSol(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
Definition: lp.c:16301
SCIP_Real SCIPcolGetFarkasCoef(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
Definition: lp.c:3941
SCIP_RETCODE SCIPlpGetBInvCol(SCIP_LP *lp, int c, SCIP_Real *coef, int *inds, int *ninds)
Definition: lp.c:9384
type definitions for miscellaneous datastructures
SCIP_Bool SCIPlpIsSolBasic(SCIP_LP *lp)
Definition: lp.c:19393
SCIP_RETCODE SCIPcolChgCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)
Definition: lp.c:3319
SCIP_ROW ** SCIPlpGetRows(SCIP_LP *lp)
Definition: lp.c:19188
void SCIPlpSetIsRelax(SCIP_LP *lp, SCIP_Bool relax)
Definition: lp.c:19360
SCIP_RETCODE SCIPlpGetBInvACol(SCIP_LP *lp, int c, SCIP_Real *coef, int *inds, int *ninds)
Definition: lp.c:9435
SCIP_RETCODE SCIPlpUpdateVarColumn(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
Definition: lp.c:16138
void SCIPcolMarkNotRemovableLocal(SCIP_COL *col, SCIP_STAT *stat)
Definition: lp.c:4544
SCIP_RETCODE SCIPlpUpdateVarLb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
Definition: lp.c:15872
SCIP_RETCODE SCIPlpGetProvedLowerbound(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *bound)
Definition: lp.c:18143
SCIP_Real SCIPlpGetModifiedProvedPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)
Definition: lp.c:15323
SCIP_RETCODE SCIPlpGetState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
Definition: lp.c:12339
SCIP_Real SCIPlpGetRootColumnObjval(SCIP_LP *lp)
Definition: lp.c:19328
SCIP_Real SCIPcolGetRedcost(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
Definition: lp.c:3758
SCIP_RETCODE SCIPlpEndProbing(SCIP_LP *lp)
Definition: lp.c:17982
void SCIProwCapture(SCIP_ROW *row)
Definition: lp.c:5105
SCIP_RETCODE SCIProwChgConstant(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real constant)
Definition: lp.c:5348
enum SCIP_RowOriginType SCIP_ROWORIGINTYPE
Definition: type_lp.h:67
SCIP_Real SCIPcolCalcFarkasCoef(SCIP_COL *col, SCIP_Real *dualfarkas)
Definition: lp.c:3836
SCIP_Real SCIProwGetNLPEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:6643
SCIP_Real SCIProwGetPseudoActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:6186
void SCIPlpSetRootLPIsRelax(SCIP_LP *lp, SCIP_Bool isrelax)
Definition: lp.c:19295
void SCIProwRecalcLPActivity(SCIP_ROW *row, SCIP_STAT *stat)
Definition: lp.c:5936
SCIP_RETCODE SCIPcolDelCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row)
Definition: lp.c:3274
SCIP_Real SCIProwGetLPEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
Definition: lp.c:6487
SCIP_RETCODE SCIPlpFreeState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
Definition: lp.c:12401
SCIP_RETCODE SCIPlpSetNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS *lpinorms)
Definition: lp.c:12442
SCIP_RETCODE SCIPlpFlush(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
Definition: lp.c:8258
SCIP_RETCODE SCIProwIncCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real incval)
Definition: lp.c:5294
SCIP_RETCODE SCIPlpRemoveAllObsoletes(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
Definition: lp.c:17339
SCIP_RETCODE SCIPlpShrinkRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int newnrows)
Definition: lp.c:9217
SCIP_RETCODE SCIPlpRecordOldRowSideDive(SCIP_LP *lp, SCIP_ROW *row, SCIP_SIDETYPE sidetype)
Definition: lp.c:17943
SCIP_RETCODE SCIPlpCleanupAll(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)
Definition: lp.c:17547
SCIP_Real SCIProwGetSolFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
Definition: lp.c:6272
void SCIPcolGetStrongbranchLast(SCIP_COL *col, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Real *solval, SCIP_Real *lpobjval)
Definition: lp.c:4500
SCIP_RETCODE SCIPcolCreate(SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROW **rows, SCIP_Real *vals, SCIP_Bool removable)
Definition: lp.c:3086
SCIP_RETCODE SCIPlpSetState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPISTATE *lpistate, SCIP_Bool wasprimfeas, SCIP_Bool wasdualfeas)
Definition: lp.c:12363
int SCIProwGetMaxidx(SCIP_ROW *row, SCIP_SET *set)
Definition: lp.c:6455
SCIP_RETCODE SCIPlpComputeRelIntPoint(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_LP *lp, SCIP_PROB *prob, SCIP_Bool relaxrows, SCIP_Bool inclobjcutoff, SCIP_Real timelimit, int iterlimit, SCIP_Real *point, SCIP_Bool *success)
Definition: lp.c:19490
SCIP_RETCODE SCIPlpFreeNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
Definition: lp.c:12462
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
int SCIPlpGetNNewrows(SCIP_LP *lp)
Definition: lp.c:19241
SCIP_RETCODE SCIProwChgLhs(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real lhs)
Definition: lp.c:5429
SCIP_RETCODE SCIPlpEndDive(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_VAR **vars, int nvars)
Definition: lp.c:17761
SCIP_RETCODE SCIProwMakeIntegral(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Bool *success)
Definition: lp.c:5745
type definitions for global SCIP settings
SCIP_Bool SCIProwIsRedundant(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:6392
SCIP_Bool SCIPlpDiving(SCIP_LP *lp)
Definition: lp.c:19403
SCIP_Real SCIPlpGetPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
Definition: lp.c:15256
void SCIPlpRecalculateObjSqrNorm(SCIP_SET *set, SCIP_LP *lp)
Definition: lp.c:19252
SCIP_RETCODE SCIPlpStartDive(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:17660
SCIP_RETCODE SCIPlpStartProbing(SCIP_LP *lp)
Definition: lp.c:17967
SCIP_RETCODE SCIPlpWriteMip(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *fname, SCIP_Bool genericnames, SCIP_Bool origobj, SCIP_OBJSENSE objsense, SCIP_Real objscale, SCIP_Real objoffset, SCIP_Bool lazyconss)
Definition: lp.c:18194
enum SCIP_LPSolStat SCIP_LPSOLSTAT
Definition: type_lp.h:42
SCIP_Real SCIPlpGetRootObjval(SCIP_LP *lp)
Definition: lp.c:19316
SCIP_RETCODE SCIProwEnsureSize(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
Definition: lp.c:580
SCIP_RETCODE SCIProwCreate(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_ROWORIGINTYPE origintype, void *origin, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
Definition: lp.c:4894
SCIP_RETCODE SCIPlpUpdateAges(SCIP_LP *lp, SCIP_STAT *stat)
Definition: lp.c:16903
SCIP_RETCODE SCIProwChgCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val)
Definition: lp.c:5242
SCIP_RETCODE SCIPlpAddCol(SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, int depth)
Definition: lp.c:8963
int SCIPlpGetNCols(SCIP_LP *lp)
Definition: lp.c:19178
SCIP_RETCODE SCIPlpShrinkCols(SCIP_LP *lp, SCIP_SET *set, int newncols)
Definition: lp.c:9146
SCIP_RETCODE SCIPlpWrite(SCIP_LP *lp, const char *fname)
Definition: lp.c:18179
type definitions for problem statistics
SCIP_Longint SCIPcolGetStrongbranchLPAge(SCIP_COL *col, SCIP_STAT *stat)
Definition: lp.c:4532
SCIP_RETCODE SCIPlpCalcStrongCG(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real *weights, int *rowinds, int nrowinds, SCIP_Real scale, SCIP_Real *strongcgcoef, SCIP_Real *strongcgrhs, SCIP_Real *cutactivity, SCIP_Bool *success, SCIP_Bool *cutislocal, int *cutrank)
Definition: lp.c:12136
type definitions for LP management
int SCIPlpGetNRows(SCIP_LP *lp)
Definition: lp.c:19198
void SCIPlpDecNLoosevars(SCIP_LP *lp)
Definition: lp.c:16283
SCIP_RETCODE SCIPlpCleanupNew(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)
Definition: lp.c:17508
SCIP_RETCODE SCIPlpGetUnboundedSol(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *rayfeasible)
Definition: lp.c:16595
SCIP_RETCODE SCIProwCatchEvent(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
Definition: lp.c:7480
SCIP_Real SCIPlpGetObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
Definition: lp.c:15076
SCIP_Real SCIPlpGetObjNorm(SCIP_LP *lp)
Definition: lp.c:19283
SCIP_RETCODE SCIPlpUpdateVarUbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
Definition: lp.c:15913
SCIP_RETCODE SCIProwRelease(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
Definition: lp.c:5118
SCIP_RETCODE SCIProwChgLocal(SCIP_ROW *row, SCIP_Bool local)
Definition: lp.c:5493
SCIP_RETCODE SCIPlpGetDualfarkas(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:16822
SCIP_RETCODE SCIPlpSolveAndEval(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_Longint itlim, SCIP_Bool limitresolveiters, SCIP_Bool aging, SCIP_Bool keepsol, SCIP_Bool *lperror)
Definition: lp.c:14511
SCIP_Real SCIPcolCalcRedcost(SCIP_COL *col, SCIP_Real *dualsol)
Definition: lp.c:3653
SCIP_Bool SCIPlpIsRootLPRelax(SCIP_LP *lp)
Definition: lp.c:19306
void SCIPlpRecomputeLocalAndGlobalPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
Definition: lp.c:15159
SCIP_RETCODE SCIPlpRemoveNewObsoletes(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
Definition: lp.c:17308
SCIP_RETCODE SCIPlpUpdateVarUb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
Definition: lp.c:15940
int SCIProwGetMinidx(SCIP_ROW *row, SCIP_SET *set)
Definition: lp.c:6471
SCIP_RETCODE SCIPlpStartStrongbranch(SCIP_LP *lp)
Definition: lp.c:3986
SCIP_RETCODE SCIPcolIncCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real incval)
Definition: lp.c:3370
SCIP_RETCODE SCIPcolChgLb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newlb)
Definition: lp.c:3563
SCIP_COL ** SCIPlpGetCols(SCIP_LP *lp)
Definition: lp.c:19168
void SCIProwPrint(SCIP_ROW *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: lp.c:5065
struct SCIP_EventData SCIP_EVENTDATA
Definition: type_event.h:146
SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)
Definition: lp.c:15060
SCIP_RETCODE SCIPlpGetBase(SCIP_LP *lp, int *cstat, int *rstat)
Definition: lp.c:9345
SCIP_Bool SCIPlpDivingObjChanged(SCIP_LP *lp)
Definition: lp.c:19413
SCIP_Real SCIProwGetPseudoFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:6214
SCIP_LPI * SCIPlpGetLPI(SCIP_LP *lp)
Definition: lp.c:19350
SCIP_RETCODE SCIPcolAddCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)
Definition: lp.c:3253
int SCIPlpGetNNewcols(SCIP_LP *lp)
Definition: lp.c:19219
void SCIPcolPrint(SCIP_COL *col, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: lp.c:3213
type definitions for problem variables
SCIP_RETCODE SCIPlpFree(SCIP_LP **lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
Definition: lp.c:8890
SCIP_RETCODE SCIProwDelCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col)
Definition: lp.c:5196
SCIP_Real SCIPlpGetModifiedPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)
Definition: lp.c:15283
void SCIProwForceSort(SCIP_ROW *row, SCIP_SET *set)
Definition: lp.c:5923
SCIP_RETCODE SCIProwDropEvent(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
Definition: lp.c:7504
SCIP_Real SCIProwGetMinActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:6350
SCIP_Bool SCIProwIsSolEfficacious(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool root)
Definition: lp.c:6587
unsigned int SCIP_EVENTTYPE
Definition: type_event.h:125
#define SCIP_Bool
Definition: def.h:53
SCIP_ROW ** SCIPlpGetNewrows(SCIP_LP *lp)
Definition: lp.c:19230
SCIP_RETCODE SCIPlpMarkFlushed(SCIP_LP *lp, SCIP_SET *set)
Definition: lp.c:8313
void SCIPlpMarkSize(SCIP_LP *lp)
Definition: lp.c:9302
SCIP_Real SCIPlpGetLooseObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
Definition: lp.c:15115
SCIP_RETCODE SCIPlpGetBInvRow(SCIP_LP *lp, int r, SCIP_Real *coef, int *inds, int *ninds)
Definition: lp.c:9362
enum SCIP_Objsense SCIP_OBJSENSE
Definition: type_prob.h:41
SCIP_Real SCIProwGetRelaxEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:6603
void SCIProwDelaySort(SCIP_ROW *row)
Definition: lp.c:5912
SCIP_RETCODE SCIPcolChgUb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newub)
Definition: lp.c:3608
SCIP_Real SCIProwGetLPFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
Definition: lp.c:6018
SCIP_RETCODE SCIPcolGetStrongbranches(SCIP_COL **cols, int ncols, SCIP_Bool integral, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *lperror)
Definition: lp.c:4264
SCIP_RETCODE SCIPlpSumRows(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real *weights, SCIP_REALARRAY *sumcoef, SCIP_Real *sumlhs, SCIP_Real *sumrhs)
Definition: lp.c:9459
SCIP_Real SCIProwGetSolActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
Definition: lp.c:6230
public methods for LP management
SCIP_Real SCIProwGetObjParallelism(SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp)
Definition: lp.c:7447
SCIP_RETCODE SCIPlpGetBasisInd(SCIP_LP *lp, int *basisind)
Definition: lp.c:9328
void SCIPlpMarkDivingObjChanged(SCIP_LP *lp)
Definition: lp.c:19423
SCIP_Real SCIProwGetNLPFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:6100
SCIP_Real SCIProwGetSolEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
Definition: lp.c:6544
SCIP_RETCODE SCIPlpClear(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
Definition: lp.c:9283
SCIP_RETCODE SCIPlpAddRow(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_ROW *row, int depth)
Definition: lp.c:9022
void SCIPcolSetStrongbranchData(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real lpobjval, SCIP_Real primsol, SCIP_Real sbdown, SCIP_Real sbup, SCIP_Bool sbdownvalid, SCIP_Bool sbupvalid, SCIP_Longint iter, int itlim)
Definition: lp.c:4016
SCIP_RETCODE SCIPlpGetNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
Definition: lp.c:12418
SCIP_RETCODE SCIPlpSetCutoffbound(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real cutoffbound)
Definition: lp.c:12476
SCIP_Real SCIProwGetMaxActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:6371
type definitions for storing primal CIP solutions
SCIP_Real SCIPcolGetFarkasValue(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
Definition: lp.c:3967
type definitions for storing and manipulating the main problem
SCIP_RETCODE SCIPlpUpdateVarObj(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
Definition: lp.c:15790
SCIP_Real SCIPlpGetRootLooseObjval(SCIP_LP *lp)
Definition: lp.c:19340
SCIP_RETCODE SCIPlpUpdateVarLoose(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
Definition: lp.c:16262
SCIP_RETCODE SCIProwAddCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val)
Definition: lp.c:5175
SCIP_Bool SCIPlpIsSolved(SCIP_LP *lp)
Definition: lp.c:19383
void SCIPlpSetSizeMark(SCIP_LP *lp, int nrows, int ncols)
Definition: lp.c:9314
SCIP_Bool SCIPlpIsRelax(SCIP_LP *lp)
Definition: lp.c:19373
void SCIPlpStoreRootObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
Definition: lp.c:15135
SCIP_RETCODE SCIProwFree(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
Definition: lp.c:5033
SCIP_RETCODE SCIPlpReset(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
Definition: lp.c:8934
SCIP_RETCODE SCIPlpCreate(SCIP_LP **lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *name)
Definition: lp.c:8657
datastructures for LP management
#define SCIP_Real
Definition: def.h:127
SCIP_RETCODE SCIPlpRemoveRedundantRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
Definition: lp.c:17586
SCIP_Bool SCIProwIsLPEfficacious(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Bool root)
Definition: lp.c:6528
SCIP_RETCODE SCIPcolFree(SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
Definition: lp.c:3183
void SCIPcolInvalidateStrongbranchData(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
Definition: lp.c:4070
SCIP_RETCODE SCIPlpUpdateDelVar(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
Definition: lp.c:16002
SCIP_RETCODE SCIPcolGetStrongbranch(SCIP_COL *col, SCIP_Bool integral, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *lperror)
Definition: lp.c:4105
void SCIProwMarkNotRemovableLocal(SCIP_ROW *row, SCIP_STAT *stat)
Definition: lp.c:7525
#define SCIP_Longint
Definition: def.h:112
SCIP_Real SCIPlpGetColumnObjval(SCIP_LP *lp)
Definition: lp.c:15104
void SCIProwRecalcPseudoActivity(SCIP_ROW *row, SCIP_STAT *stat)
Definition: lp.c:6159
SCIP_RETCODE SCIPlpEndStrongbranch(SCIP_LP *lp)
Definition: lp.c:4001
void SCIPlpInvalidateRootObjval(SCIP_LP *lp)
Definition: lp.c:15148
SCIP_Bool SCIPlpDivingRowsChanged(SCIP_LP *lp)
Definition: lp.c:19445
common defines and data types used in all packages of SCIP
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:392
SCIP_RETCODE SCIProwChgRhs(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real rhs)
Definition: lp.c:5461
void SCIPlpUnmarkDivingObjChanged(SCIP_LP *lp)
Definition: lp.c:19434
SCIP_RETCODE SCIProwCalcIntegralScalar(SCIP_ROW *row, SCIP_SET *set, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Real *intscalar, SCIP_Bool *success)
Definition: lp.c:5510
SCIP_Real SCIProwGetMinval(SCIP_ROW *row, SCIP_SET *set)
Definition: lp.c:6439
SCIP_RETCODE SCIPlpCalcMIR(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_SOL *sol, SCIP_Real boundswitch, SCIP_Bool usevbds, SCIP_Bool allowlocal, SCIP_Bool fixintegralrhs, int *boundsfortrans, SCIP_BOUNDTYPE *boundtypesfortrans, int maxmksetcoefs, SCIP_Real maxweightrange, SCIP_Real minfrac, SCIP_Real maxfrac, SCIP_Real *weights, SCIP_Real maxweight, int *weightinds, int nweightinds, int rowlensum, int *sidetypes, SCIP_Real scale, SCIP_Real *mksetcoefs, SCIP_Bool *mksetcoefsvalid, SCIP_Real *mircoef, SCIP_Real *mirrhs, SCIP_Real *cutactivity, SCIP_Bool *success, SCIP_Bool *cutislocal, int *cutrank)
Definition: lp.c:11043
SCIP_RETCODE SCIProwAddConstant(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real addval)
Definition: lp.c:5403
SCIP_Real SCIProwGetRelaxFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
Definition: lp.c:6038
SCIP_RETCODE SCIPlpUpdateAddVar(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
Definition: lp.c:15981
SCIP_Real SCIPcolGetFeasibility(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
Definition: lp.c:3782
SCIP_Real SCIPlpGetGlobalPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
Definition: lp.c:15227
SCIP_RETCODE SCIPlpGetPrimalRay(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *ray)
Definition: lp.c:16765
memory allocation routines
enum SCIP_SideType SCIP_SIDETYPE
Definition: type_lp.h:58