Scippy

SCIP

Solving Constraint Integer Programs

prob.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 prob.h
17  * @brief internal methods for storing and manipulating the main problem
18  * @author Tobias Achterberg
19  */
20 
21 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
22 
23 #ifndef __SCIP_PROB_H__
24 #define __SCIP_PROB_H__
25 
26 
27 #include "scip/def.h"
28 #include "blockmemshell/memory.h"
29 #include "scip/type_retcode.h"
30 #include "scip/type_set.h"
31 #include "scip/type_stat.h"
32 #include "scip/type_event.h"
33 #include "scip/type_lp.h"
34 #include "scip/type_var.h"
35 #include "scip/type_implics.h"
36 #include "scip/type_prob.h"
37 #include "scip/type_primal.h"
38 #include "scip/type_tree.h"
39 #include "scip/type_reopt.h"
40 #include "scip/type_branch.h"
41 #include "scip/type_cons.h"
42 
43 #include "scip/struct_prob.h"
44 
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48 
49 /*
50  * problem creation
51  */
52 
53 /** creates problem data structure by copying the source problem;
54  * If the problem type requires the use of variable pricers, these pricers should be activated with calls
55  * to SCIPactivatePricer(). These pricers are automatically deactivated, when the problem is freed.
56  */
58  SCIP_PROB** prob, /**< pointer to problem data structure */
59  BMS_BLKMEM* blkmem, /**< block memory */
60  SCIP_SET* set, /**< global SCIP settings */
61  const char* name, /**< problem name */
62  SCIP* sourcescip, /**< source SCIP data structure */
63  SCIP_PROB* sourceprob, /**< source problem structure */
64  SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
65  * target variables, or NULL */
66  SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
67  * target constraints, or NULL */
68  SCIP_Bool global /**< create a global or a local copy? */
69  );
70 
71 /** creates problem data structure
72  * If the problem type requires the use of variable pricers, these pricers should be activated with calls
73  * to SCIPactivatePricer(). These pricers are automatically deactivated, when the problem is freed.
74  */
75 extern
77  SCIP_PROB** prob, /**< pointer to problem data structure */
78  BMS_BLKMEM* blkmem, /**< block memory */
79  SCIP_SET* set, /**< global SCIP settings */
80  const char* name, /**< problem name */
81  SCIP_DECL_PROBDELORIG ((*probdelorig)), /**< frees user data of original problem */
82  SCIP_DECL_PROBTRANS ((*probtrans)), /**< creates user data of transformed problem by transforming original user data */
83  SCIP_DECL_PROBDELTRANS((*probdeltrans)), /**< frees user data of transformed problem */
84  SCIP_DECL_PROBINITSOL ((*probinitsol)), /**< solving process initialization method of transformed data */
85  SCIP_DECL_PROBEXITSOL ((*probexitsol)), /**< solving process deinitialization method of transformed data */
86  SCIP_DECL_PROBCOPY ((*probcopy)), /**< copies user data if you want to copy it to a subscip, or NULL */
87  SCIP_PROBDATA* probdata, /**< user problem data set by the reader */
88  SCIP_Bool transformed /**< is this the transformed problem? */
89  );
90 
91 /** sets callback to free user data of original problem */
92 extern
94  SCIP_PROB* prob, /**< problem */
95  SCIP_DECL_PROBDELORIG ((*probdelorig)) /**< frees user data of original problem */
96  );
97 
98 /** sets callback to create user data of transformed problem by transforming original user data */
99 extern
100 void SCIPprobSetTrans(
101  SCIP_PROB* prob, /**< problem */
102  SCIP_DECL_PROBTRANS ((*probtrans)) /**< creates user data of transformed problem by transforming original user data */
103  );
104 
105 /** sets callback to free user data of transformed problem */
106 extern
108  SCIP_PROB* prob, /**< problem */
109  SCIP_DECL_PROBDELTRANS((*probdeltrans)) /**< frees user data of transformed problem */
110  );
111 
112 /** sets solving process initialization callback of transformed data */
113 extern
114 void SCIPprobSetInitsol(
115  SCIP_PROB* prob, /**< problem */
116  SCIP_DECL_PROBINITSOL ((*probinitsol)) /**< solving process initialization callback of transformed data */
117  );
118 
119 /** sets solving process deinitialization callback of transformed data */
120 extern
121 void SCIPprobSetExitsol(
122  SCIP_PROB* prob, /**< problem */
123  SCIP_DECL_PROBEXITSOL ((*probexitsol)) /**< solving process deinitialization callback of transformed data */
124  );
125 
126 /** sets callback to copy user data to copy it to a subscip, or NULL */
127 extern
128 void SCIPprobSetCopy(
129  SCIP_PROB* prob, /**< problem */
130  SCIP_DECL_PROBCOPY ((*probcopy)) /**< copies user data if you want to copy it to a subscip, or NULL */
131  );
132 
133 /** frees problem data structure */
134 extern
136  SCIP_PROB** prob, /**< pointer to problem data structure */
137  BMS_BLKMEM* blkmem, /**< block memory buffer */
138  SCIP_SET* set, /**< global SCIP settings */
139  SCIP_STAT* stat, /**< dynamic problem statistics */
140  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
141  SCIP_LP* lp /**< current LP data (or NULL, if it's the original problem) */
142  );
143 
144 /** transform problem data into normalized form */
145 extern
147  SCIP_PROB* source, /**< problem to transform */
148  BMS_BLKMEM* blkmem, /**< block memory buffer */
149  SCIP_SET* set, /**< global SCIP settings */
150  SCIP_STAT* stat, /**< problem statistics */
151  SCIP_PRIMAL* primal, /**< primal data */
152  SCIP_TREE* tree, /**< branch and bound tree */
153  SCIP_REOPT* reopt, /**< reoptimization data structure */
154  SCIP_LP* lp, /**< current LP data */
155  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
156  SCIP_EVENTFILTER* eventfilter, /**< event filter for global (not variable dependent) events */
157  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
158  SCIP_PROB** target /**< pointer to target problem data structure */
159  );
160 
161 /** resets the global and local bounds of original variables in original problem to their original values */
162 extern
164  SCIP_PROB* prob, /**< original problem data */
165  BMS_BLKMEM* blkmem, /**< block memory */
166  SCIP_SET* set, /**< global SCIP settings */
167  SCIP_STAT* stat /**< problem statistics */
168  );
169 
170 /** (Re)Sort the variables, which appear in the four categories (binary, integer, implicit, continuous) after presolve
171  * with respect to their original index (within their categories). Adjust the problem index afterwards which is
172  * supposed to reflect the position in the variable array. This additional (re)sorting is supposed to get more robust
173  * against the order presolving fixed variables. (We also reobtain a possible block structure induced by the user
174  * model)
175  */
176 extern
177 void SCIPprobResortVars(
178  SCIP_PROB* prob /**< problem data */
179  );
180 
181 
182 /*
183  * problem modification
184  */
185 
186 /** sets user problem data */
187 extern
188 void SCIPprobSetData(
189  SCIP_PROB* prob, /**< problem */
190  SCIP_PROBDATA* probdata /**< user problem data to use */
191  );
192 
193 /** adds variable's name to the namespace */
194 extern
196  SCIP_PROB* prob, /**< problem data */
197  SCIP_VAR* var /**< variable */
198  );
199 
200 /** removes variable's name from the namespace */
201 extern
203  SCIP_PROB* prob, /**< problem data */
204  SCIP_VAR* var /**< variable */
205  );
206 
207 /** adds variable to the problem and captures it */
208 extern
210  SCIP_PROB* prob, /**< problem data */
211  BMS_BLKMEM* blkmem, /**< block memory buffers */
212  SCIP_SET* set, /**< global SCIP settings */
213  SCIP_LP* lp, /**< current LP data */
214  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
215  SCIP_EVENTFILTER* eventfilter, /**< event filter for global (not variable dependent) events */
216  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
217  SCIP_VAR* var /**< variable to add */
218  );
219 
220 /** marks variable to be removed from the problem; however, the variable is NOT removed from the constraints */
221 extern
223  SCIP_PROB* prob, /**< problem data */
224  BMS_BLKMEM* blkmem, /**< block memory */
225  SCIP_SET* set, /**< global SCIP settings */
226  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
227  SCIP_VAR* var, /**< problem variable */
228  SCIP_Bool* deleted /**< pointer to store whether marking variable to be deleted was successful */
229  );
230 
231 /** actually removes the deleted variables from the problem and releases them */
232 extern
234  SCIP_PROB* prob, /**< problem data */
235  BMS_BLKMEM* blkmem, /**< block memory */
236  SCIP_SET* set, /**< global SCIP settings */
237  SCIP_STAT* stat, /**< dynamic problem statistics */
238  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
239  SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
240  SCIP_LP* lp, /**< current LP data (may be NULL) */
241  SCIP_BRANCHCAND* branchcand /**< branching candidate storage */
242  );
243 
244 /** changes the type of a variable in the problem */
245 extern
247  SCIP_PROB* prob, /**< problem data */
248  BMS_BLKMEM* blkmem, /**< block memory */
249  SCIP_SET* set, /**< global SCIP settings */
250  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
251  SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
252  SCIP_VAR* var, /**< variable to add */
253  SCIP_VARTYPE vartype /**< new type of variable */
254  );
255 
256 /** informs problem, that the given loose problem variable changed its status */
257 extern
259  SCIP_PROB* prob, /**< problem data */
260  BMS_BLKMEM* blkmem, /**< block memory */
261  SCIP_SET* set, /**< global SCIP settings */
262  SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
263  SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
264  SCIP_VAR* var /**< problem variable */
265  );
266 
267 /** adds constraint's name to the namespace */
268 extern
270  SCIP_PROB* prob, /**< problem data */
271  SCIP_CONS* cons /**< constraint */
272  );
273 
274 /** remove constraint's name from the namespace */
275 extern
277  SCIP_PROB* prob, /**< problem data */
278  SCIP_CONS* cons /**< constraint */
279  );
280 
281 /** adds constraint to the problem and captures it;
282  * a local constraint is automatically upgraded into a global constraint
283  */
284 extern
286  SCIP_PROB* prob, /**< problem data */
287  SCIP_SET* set, /**< global SCIP settings */
288  SCIP_STAT* stat, /**< dynamic problem statistics */
289  SCIP_CONS* cons /**< constraint to add */
290  );
291 
292 /** releases and removes constraint from the problem; if the user has not captured the constraint for his own use, the
293  * constraint may be invalid after the call
294  */
295 extern
297  SCIP_PROB* prob, /**< problem data */
298  BMS_BLKMEM* blkmem, /**< block memory */
299  SCIP_SET* set, /**< global SCIP settings */
300  SCIP_STAT* stat, /**< dynamic problem statistics */
301  SCIP_CONS* cons /**< constraint to remove */
302  );
303 
304 /** remembers the current number of constraints in the problem's internal data structure
305  * - resets maximum number of constraints to current number of constraints
306  * - remembers current number of constraints as starting number of constraints
307  */
308 extern
309 void SCIPprobMarkNConss(
310  SCIP_PROB* prob /**< problem data */
311  );
312 
313 /** sets objective sense: minimization or maximization */
314 extern
316  SCIP_PROB* prob, /**< problem data */
317  SCIP_OBJSENSE objsense /**< new objective sense */
318  );
319 
320 /** adds value to objective offset */
321 extern
323  SCIP_PROB* prob, /**< problem data */
324  SCIP_Real addval /**< value to add to objective offset */
325  );
326 
327 /** sets the dual bound on objective function */
328 extern
330  SCIP_PROB* prob, /**< problem data */
331  SCIP_Real dualbound /**< external dual bound */
332  );
333 
334 /** sets limit on objective function, such that only solutions better than this limit are accepted */
335 extern
336 void SCIPprobSetObjlim(
337  SCIP_PROB* prob, /**< problem data */
338  SCIP_Real objlim /**< external objective limit */
339  );
340 
341 /** informs the problem, that its objective value is always integral in every feasible solution */
342 extern
344  SCIP_PROB* prob /**< problem data */
345  );
346 
347 /** sets integral objective value flag, if all variables with non-zero objective values are integral and have
348  * integral objective value and also updates the cutoff bound if primal solution is already known
349  */
350 extern
352  SCIP_PROB* transprob, /**< tranformed problem data */
353  SCIP_PROB* origprob, /**< original problem data */
354  BMS_BLKMEM* blkmem, /**< block memory */
355  SCIP_SET* set, /**< global SCIP settings */
356  SCIP_STAT* stat, /**< problem statistics data */
357  SCIP_PRIMAL* primal, /**< primal data */
358  SCIP_TREE* tree, /**< branch and bound tree */
359  SCIP_REOPT* reopt, /**< reoptimization data structure */
360  SCIP_LP* lp, /**< current LP data */
361  SCIP_EVENTQUEUE* eventqueue /**< event queue */
362  );
363 
364 /** if possible, scales objective function such that it is integral with gcd = 1 */
365 extern
367  SCIP_PROB* transprob, /**< tranformed problem data */
368  SCIP_PROB* origprob, /**< original problem data */
369  BMS_BLKMEM* blkmem, /**< block memory */
370  SCIP_SET* set, /**< global SCIP settings */
371  SCIP_STAT* stat, /**< problem statistics data */
372  SCIP_PRIMAL* primal, /**< primal data */
373  SCIP_TREE* tree, /**< branch and bound tree */
374  SCIP_REOPT* reopt, /**< reoptimization data structure */
375  SCIP_LP* lp, /**< current LP data */
376  SCIP_EVENTQUEUE* eventqueue /**< event queue */
377  );
378 
379 /** remembers the current solution as root solution in the problem variables */
380 extern
382  SCIP_PROB* prob, /**< problem data */
383  SCIP_SET* set, /**< global SCIP settings */
384  SCIP_LP* lp, /**< current LP data */
385  SCIP_Bool roothaslp /**< is the root solution from LP? */
386  );
387 
388 /** remembers the best solution w.r.t. root reduced cost propagation as root solution in the problem variables */
389 extern
391  SCIP_PROB* prob, /**< problem data */
392  SCIP_SET* set, /**< global SCIP settings */
393  SCIP_STAT* stat, /**< problem statistics */
394  SCIP_LP* lp /**< current LP data */
395  );
396 
397 /** informs problem, that the presolving process was finished, and updates all internal data structures */
398 extern
400  SCIP_PROB* prob, /**< problem data */
401  SCIP_SET* set /**< global SCIP settings */
402  );
403 
404 /** initializes problem for branch and bound process */
405 extern
407  SCIP_PROB* prob, /**< problem data */
408  SCIP_SET* set /**< global SCIP settings */
409  );
410 
411 /** deinitializes problem after branch and bound process, and converts all COLUMN variables back into LOOSE variables */
412 extern
414  SCIP_PROB* prob, /**< problem data */
415  BMS_BLKMEM* blkmem, /**< block memory */
416  SCIP_SET* set, /**< global SCIP settings */
417  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
418  SCIP_LP* lp, /**< current LP data */
419  SCIP_Bool restart /**< was this exit solve call triggered by a restart? */
420  );
421 
422 
423 
424 
425 /*
426  * problem information
427  */
428 
429 /** sets problem name */
430 extern
432  SCIP_PROB* prob, /**< problem data */
433  const char* name /**< name to be set */
434  );
435 
436 /** returns the number of implicit binary variables, meaning variable of vartype != SCIP_VARTYPE_BINARY and !=
437  * SCIP_VARTYPE_CONTINUOUS but with global bounds [0,1]
438  *
439  * @note this number needs to be computed, because it cannot be update like the othe counters for binary and interger
440  * variables, each time the variable type changes(, we would need to update this counter each time a global bound
441  * changes), even at the end of presolving this cannot be computed, because some variable can change to an
442  * implicit binary status
443  */
444 extern
446  SCIP_PROB* prob /**< problem data */
447  );
448 
449 /** returns the number of variables with non-zero objective coefficient */
450 extern
452  SCIP_PROB* prob, /**< problem data */
453  SCIP_SET* set /**< global SCIP settings */
454  );
455 
456 /** update the number of variables with non-zero objective coefficient */
457 extern
459  SCIP_PROB* prob, /**< problem data */
460  SCIP_SET* set, /**< global SCIP settings */
461  SCIP_Real oldobj, /**< old objective value for variable */
462  SCIP_Real newobj /**< new objective value for variable */
463  );
464 
465 /** update the dual bound if its better as the current one */
466 extern
468  SCIP_PROB* prob, /**< problem data */
469  SCIP_Real newbound /**< new dual bound for the node (if it's tighter than the old one) */
470  );
471 
472 /** returns the external value of the given internal objective value */
473 extern
475  SCIP_PROB* transprob, /**< tranformed problem data */
476  SCIP_PROB* origprob, /**< original problem data */
477  SCIP_SET* set, /**< global SCIP settings */
478  SCIP_Real objval /**< internal objective value */
479  );
480 
481 /** returns the internal value of the given external objective value */
482 extern
484  SCIP_PROB* transprob, /**< tranformed problem data */
485  SCIP_PROB* origprob, /**< original problem data */
486  SCIP_SET* set, /**< global SCIP settings */
487  SCIP_Real objval /**< external objective value */
488  );
489 
490 /** returns variable of the problem with given name */
491 extern
493  SCIP_PROB* prob, /**< problem data */
494  const char* name /**< name of variable to find */
495  );
496 
497 /** returns constraint of the problem with given name */
498 extern
500  SCIP_PROB* prob, /**< problem data */
501  const char* name /**< name of variable to find */
502  );
503 
504 /** displays current pseudo solution */
505 extern
507  SCIP_PROB* prob, /**< problem data */
508  SCIP_SET* set, /**< global SCIP settings */
509  SCIP_MESSAGEHDLR* messagehdlr /**< message handler */
510  );
511 
512 /** outputs problem statistics */
513 extern
515  SCIP_PROB* prob, /**< problem data */
516  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
517  FILE* file /**< output file (or NULL for standard output) */
518  );
519 
520 
521 #ifndef NDEBUG
522 
523 /* In debug mode, the following methods are implemented as function calls to ensure
524  * type validity.
525  */
526 
527 /** is the problem permuted */
528 extern
530  SCIP_PROB* prob
531  );
532 
533 /** mark the problem as permuted */
534 extern
536  SCIP_PROB* prob
537  );
538 
539 /** is the problem data transformed */
540 extern
542  SCIP_PROB* prob /**< problem data */
543  );
544 
545 /** returns whether the objective value is known to be integral in every feasible solution */
546 extern
548  SCIP_PROB* prob /**< problem data */
549  );
550 
551 /** returns TRUE iff all columns, i.e. every variable with non-empty column w.r.t. all ever created rows, are present
552  * in the LP, and FALSE, if there are additional already existing columns, that may be added to the LP in pricing
553  */
554 extern
556  SCIP_PROB* prob, /**< problem data */
557  SCIP_SET* set, /**< global SCIP settings */
558  SCIP_LP* lp /**< current LP data */
559  );
560 
561 /** gets limit on objective function in external space */
562 extern
564  SCIP_PROB* prob, /**< problem data */
565  SCIP_SET* set /**< global SCIP settings */
566  );
567 
568 /** gets user problem data */
569 extern
571  SCIP_PROB* prob /**< problem */
572  );
573 
574 /** gets problem name */
575 extern
576 const char* SCIPprobGetName(
577  SCIP_PROB* prob /**< problem data */
578  );
579 
580 /** gets number of problem variables */
581 extern
582 int SCIPprobGetNVars(
583  SCIP_PROB* prob /**< problem data */
584  );
585 
586 /** gets number of binary problem variables */
587 extern
589  SCIP_PROB* prob /**< problem data */
590  );
591 
592 /** gets number of integer problem variables */
593 extern
595  SCIP_PROB* prob /**< problem data */
596  );
597 
598 /** gets number of implicit integer problem variables */
599 extern
601  SCIP_PROB* prob /**< problem data */
602  );
603 
604 /** gets number of continuous problem variables */
605 extern
607  SCIP_PROB* prob /**< problem data */
608  );
609 
610 /** gets problem variables */
611 extern
613  SCIP_PROB* prob /**< problem data */
614  );
615 
616 /** gets the objective offset */
617 extern
619  SCIP_PROB* prob /**< problem data */
620  );
621 
622 /** gets the objective scalar */
623 extern
625  SCIP_PROB* prob /**< problem data */
626  );
627 
628 #else
629 
630 /* In optimized mode, the methods are implemented as defines to reduce the number of function calls and
631  * speed up the algorithms.
632  */
633 
634 #define SCIPprobIsPermuted(prob) ((prob)->permuted)
635 #define SCIPprobMarkPermuted(prob) ((prob)->permuted = TRUE)
636 #define SCIPprobIsTransformed(prob) ((prob)->transformed)
637 #define SCIPprobIsObjIntegral(prob) ((prob)->objisintegral)
638 #define SCIPprobAllColsInLP(prob,set,lp) (SCIPlpGetNCols(lp) == (prob)->ncolvars && (set)->nactivepricers == 0)
639 #define SCIPprobGetObjlim(prob,set) \
640  ((prob)->objlim >= SCIP_INVALID ? (SCIP_Real)((prob)->objsense) * SCIPsetInfinity(set) : (prob)->objlim)
641 #define SCIPprobGetData(prob) ((prob)->probdata)
642 #define SCIPprobGetName(prob) ((prob)->name)
643 #define SCIPprobGetName(prob) ((prob)->name)
644 #define SCIPprobGetNVars(prob) ((prob)->nvars)
645 #define SCIPprobGetNBinVars(prob) ((prob)->nbinvars)
646 #define SCIPprobGetNIntVars(prob) ((prob)->nintvars)
647 #define SCIPprobGetNImplVars(prob) ((prob)->nimplvars)
648 #define SCIPprobGetNContVars(prob) ((prob)->ncontvars)
649 #define SCIPprobGetVars(prob) ((prob)->vars)
650 #define SCIPprobGetObjoffset(prob) ((prob)->objoffset)
651 #define SCIPprobGetObjscale(prob) ((prob)->objscale)
652 #endif
653 
654 
655 #ifdef __cplusplus
656 }
657 #endif
658 
659 #endif
SCIP_Bool SCIPprobIsObjIntegral(SCIP_PROB *prob)
Definition: prob.c:2128
SCIP_Real SCIPprobGetObjoffset(SCIP_PROB *prob)
Definition: prob.c:2237
SCIP_PROBDATA * SCIPprobGetData(SCIP_PROB *prob)
Definition: prob.c:2164
SCIP_RETCODE SCIPprobRemoveVarName(SCIP_PROB *prob, SCIP_VAR *var)
Definition: prob.c:878
int SCIPprobGetNVars(SCIP_PROB *prob)
Definition: prob.c:2183
type definitions for implications, variable bounds, and cliques
SCIP_RETCODE SCIPprobCreate(SCIP_PROB **prob, BMS_BLKMEM *blkmem, SCIP_SET *set, const char *name, SCIP_DECL_PROBDELORIG((*probdelorig)), SCIP_DECL_PROBTRANS((*probtrans)), SCIP_DECL_PROBDELTRANS((*probdeltrans)), SCIP_DECL_PROBINITSOL((*probinitsol)), SCIP_DECL_PROBEXITSOL((*probexitsol)), SCIP_DECL_PROBCOPY((*probcopy)), SCIP_PROBDATA *probdata, SCIP_Bool transformed)
Definition: prob.c:250
int SCIPprobGetNObjVars(SCIP_PROB *prob, SCIP_SET *set)
Definition: prob.c:1911
#define SCIP_DECL_PROBINITSOL(x)
Definition: type_prob.h:97
#define SCIP_DECL_PROBDELORIG(x)
Definition: type_prob.h:55
void SCIPprobSetExitsol(SCIP_PROB *prob, SCIP_DECL_PROBEXITSOL((*probexitsol)))
Definition: prob.c:372
int SCIPprobGetNContVars(SCIP_PROB *prob)
Definition: prob.c:2219
SCIP_RETCODE SCIPprobChgVarType(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_BRANCHCAND *branchcand, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var, SCIP_VARTYPE vartype)
Definition: prob.c:1093
void SCIPprobSetInitsol(SCIP_PROB *prob, SCIP_DECL_PROBINITSOL((*probinitsol)))
Definition: prob.c:361
void SCIPprobSetTrans(SCIP_PROB *prob, SCIP_DECL_PROBTRANS((*probtrans)))
Definition: prob.c:339
SCIP_Bool SCIPprobIsTransformed(SCIP_PROB *prob)
Definition: prob.c:2118
#define SCIP_DECL_PROBDELTRANS(x)
Definition: type_prob.h:86
void SCIPprobResortVars(SCIP_PROB *prob)
Definition: prob.c:610
SCIP_RETCODE SCIPprobAddConsName(SCIP_PROB *prob, SCIP_CONS *cons)
Definition: prob.c:1197
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
int SCIPprobGetNImplVars(SCIP_PROB *prob)
Definition: prob.c:2210
type definitions for global SCIP settings
void SCIPprobStoreRootSol(SCIP_PROB *prob, SCIP_SET *set, SCIP_LP *lp, SCIP_Bool roothaslp)
Definition: prob.c:1661
type definitions for return codes for SCIP methods
void SCIPprobUpdateNObjVars(SCIP_PROB *prob, SCIP_SET *set, SCIP_Real oldobj, SCIP_Real newobj)
Definition: prob.c:1493
#define SCIP_DECL_PROBCOPY(x)
Definition: type_prob.h:140
void SCIPprobPrintStatistics(SCIP_PROB *prob, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: prob.c:2057
type definitions for collecting reoptimization information
void SCIPprobSetDelorig(SCIP_PROB *prob, SCIP_DECL_PROBDELORIG((*probdelorig)))
Definition: prob.c:328
void SCIPprobPrintPseudoSol(SCIP_PROB *prob, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
Definition: prob.c:2035
type definitions for branching rules
type definitions for problem statistics
void SCIPprobSetCopy(SCIP_PROB *prob, SCIP_DECL_PROBCOPY((*probcopy)))
Definition: prob.c:383
SCIP_RETCODE SCIPprobCopy(SCIP_PROB **prob, BMS_BLKMEM *blkmem, SCIP_SET *set, const char *name, SCIP *sourcescip, SCIP_PROB *sourceprob, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global)
Definition: prob.c:184
void SCIPprobSetObjlim(SCIP_PROB *prob, SCIP_Real objlim)
Definition: prob.c:1407
type definitions for LP management
SCIP_Real SCIPprobExternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
Definition: prob.c:1953
SCIP_CONS * SCIPprobFindCons(SCIP_PROB *prob, const char *name)
Definition: prob.c:2016
SCIP_RETCODE SCIPprobSetName(SCIP_PROB *prob, const char *name)
Definition: prob.c:1873
SCIP_RETCODE SCIPprobDelVar(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *var, SCIP_Bool *deleted)
Definition: prob.c:961
void SCIPprobSetDeltrans(SCIP_PROB *prob, SCIP_DECL_PROBDELTRANS((*probdeltrans)))
Definition: prob.c:350
SCIP_RETCODE SCIPprobAddVar(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR *var)
Definition: prob.c:893
void SCIPprobSetDualbound(SCIP_PROB *prob, SCIP_Real dualbound)
Definition: prob.c:1396
SCIP_RETCODE SCIPprobResetBounds(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: prob.c:583
void SCIPprobMarkPermuted(SCIP_PROB *prob)
Definition: prob.c:2108
SCIP_RETCODE SCIPprobScaleObj(SCIP_PROB *transprob, SCIP_PROB *origprob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue)
Definition: prob.c:1537
SCIP_VAR * SCIPprobFindVar(SCIP_PROB *prob, const char *name)
Definition: prob.c:1997
int SCIPprobGetNIntVars(SCIP_PROB *prob)
Definition: prob.c:2201
type definitions for problem variables
void SCIPprobUpdateBestRootSol(SCIP_PROB *prob, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
Definition: prob.c:1684
SCIP_RETCODE SCIPprobRemoveConsName(SCIP_PROB *prob, SCIP_CONS *cons)
Definition: prob.c:1212
type definitions for managing events
int SCIPprobGetNBinVars(SCIP_PROB *prob)
Definition: prob.c:2192
void SCIPprobSetObjIntegral(SCIP_PROB *prob)
Definition: prob.c:1418
#define SCIP_DECL_PROBTRANS(x)
Definition: type_prob.h:74
#define SCIP_Bool
Definition: def.h:53
#define SCIP_DECL_PROBEXITSOL(x)
Definition: type_prob.h:110
SCIP_RETCODE SCIPprobVarChangedStatus(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_BRANCHCAND *branchcand, SCIP_CLIQUETABLE *cliquetable, SCIP_VAR *var)
Definition: prob.c:1139
enum SCIP_Objsense SCIP_OBJSENSE
Definition: type_prob.h:41
SCIP_Bool SCIPprobIsPermuted(SCIP_PROB *prob)
Definition: prob.c:2098
SCIP_RETCODE SCIPprobInitSolve(SCIP_PROB *prob, SCIP_SET *set)
Definition: prob.c:1788
type definitions for branch and bound tree
SCIP_RETCODE SCIPprobFree(SCIP_PROB **prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
Definition: prob.c:394
SCIP_RETCODE SCIPprobExitPresolve(SCIP_PROB *prob, SCIP_SET *set)
Definition: prob.c:1779
SCIP_Bool SCIPprobAllColsInLP(SCIP_PROB *prob, SCIP_SET *set, SCIP_LP *lp)
Definition: prob.c:2140
type definitions for storing and manipulating the main problem
SCIP_RETCODE SCIPprobAddCons(SCIP_PROB *prob, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons)
Definition: prob.c:1230
SCIP_Real SCIPprobGetObjlim(SCIP_PROB *prob, SCIP_SET *set)
Definition: prob.c:2152
datastructures for storing and manipulating the main problem
SCIP_Real SCIPprobGetObjscale(SCIP_PROB *prob)
Definition: prob.c:2246
SCIP_RETCODE SCIPprobPerformVarDeletions(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand)
Definition: prob.c:1022
void SCIPprobAddObjoffset(SCIP_PROB *prob, SCIP_Real addval)
Definition: prob.c:1383
SCIP_RETCODE SCIPprobAddVarName(SCIP_PROB *prob, SCIP_VAR *var)
Definition: prob.c:862
void SCIPprobUpdateDualbound(SCIP_PROB *prob, SCIP_Real newbound)
Definition: prob.c:1510
struct SCIP_ProbData SCIP_PROBDATA
Definition: type_prob.h:44
SCIP_RETCODE SCIPprobExitSolve(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Bool restart)
Definition: prob.c:1823
void SCIPprobMarkNConss(SCIP_PROB *prob)
Definition: prob.c:1357
#define SCIP_Real
Definition: def.h:127
SCIP_RETCODE SCIPprobDelCons(SCIP_PROB *prob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_CONS *cons)
Definition: prob.c:1297
void SCIPprobSetData(SCIP_PROB *prob, SCIP_PROBDATA *probdata)
Definition: prob.c:668
int SCIPprobGetNImplBinVars(SCIP_PROB *prob)
Definition: prob.c:1894
enum SCIP_Vartype SCIP_VARTYPE
Definition: type_var.h:58
SCIP_VAR ** SCIPprobGetVars(SCIP_PROB *prob)
Definition: prob.c:2228
void SCIPprobSetObjsense(SCIP_PROB *prob, SCIP_OBJSENSE objsense)
Definition: prob.c:1370
type definitions for collecting primal CIP solutions and primal informations
common defines and data types used in all packages of SCIP
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:392
const char * SCIPprobGetName(SCIP_PROB *prob)
Definition: prob.c:2174
SCIP_Real SCIPprobInternObjval(SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_SET *set, SCIP_Real objval)
Definition: prob.c:1975
SCIP_RETCODE SCIPprobCheckObjIntegral(SCIP_PROB *transprob, SCIP_PROB *origprob, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_EVENTQUEUE *eventqueue)
Definition: prob.c:1430
type definitions for constraints and constraint handlers
SCIP_RETCODE SCIPprobTransform(SCIP_PROB *source, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTFILTER *eventfilter, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB **target)
Definition: prob.c:486
memory allocation routines