Scippy

SCIP

Solving Constraint Integer Programs

scip_copy.h
Go to the documentation of this file.
1/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2/* */
3/* This file is part of the program and library */
4/* SCIP --- Solving Constraint Integer Programs */
5/* */
6/* Copyright (c) 2002-2025 Zuse Institute Berlin (ZIB) */
7/* */
8/* Licensed under the Apache License, Version 2.0 (the "License"); */
9/* you may not use this file except in compliance with the License. */
10/* You may obtain a copy of the License at */
11/* */
12/* http://www.apache.org/licenses/LICENSE-2.0 */
13/* */
14/* Unless required by applicable law or agreed to in writing, software */
15/* distributed under the License is distributed on an "AS IS" BASIS, */
16/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17/* See the License for the specific language governing permissions and */
18/* limitations under the License. */
19/* */
20/* You should have received a copy of the Apache-2.0 license */
21/* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
22/* */
23/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24
25/**@file scip_copy.h
26 * @ingroup PUBLICCOREAPI
27 * @brief public methods for problem copies
28 * @author Tobias Achterberg
29 * @author Timo Berthold
30 * @author Thorsten Koch
31 * @author Alexander Martin
32 * @author Marc Pfetsch
33 * @author Kati Wolter
34 * @author Gregor Hendel
35 * @author Leona Gottwald
36 */
37
38/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
39
40#ifndef __SCIP_SCIP_COPY_H__
41#define __SCIP_SCIP_COPY_H__
42
43
44#include "scip/def.h"
45#include "scip/type_cons.h"
46#include "scip/type_misc.h"
47#include "scip/type_retcode.h"
48#include "scip/type_scip.h"
49#include "scip/type_var.h"
50
51#ifdef __cplusplus
52extern "C" {
53#endif
54
55/**@addtogroup CopyMethods
56 *
57 * @{
58 */
59
60/** copies plugins from sourcescip to targetscip; in case that a constraint handler which does not need constraints
61 * cannot be copied, valid will return FALSE. All plugins can declare that, if their copy process failed, the
62 * copied SCIP instance might not represent the same problem semantics as the original.
63 * Note that in this case dual reductions might be invalid.
64 *
65 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
66 * Also, 'passmessagehdlr' should be set to FALSE.
67 *
68 * @note Do not change the source SCIP environment during the copying process.
69 *
70 * @note This method does not copy Benders' plugins. To this end, the method SCIPcopyBenders() must be called
71 * separately.
72 *
73 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
74 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
75 *
76 * @pre This method can be called if sourcescip is in one of the following stages:
77 * - \ref SCIP_STAGE_PROBLEM
78 * - \ref SCIP_STAGE_TRANSFORMED
79 * - \ref SCIP_STAGE_INITPRESOLVE
80 * - \ref SCIP_STAGE_PRESOLVING
81 * - \ref SCIP_STAGE_EXITPRESOLVE
82 * - \ref SCIP_STAGE_PRESOLVED
83 * - \ref SCIP_STAGE_INITSOLVE
84 * - \ref SCIP_STAGE_SOLVING
85 * - \ref SCIP_STAGE_SOLVED
86 *
87 * @pre This method can be called if targetscip is in one of the following stages:
88 * - \ref SCIP_STAGE_INIT
89 * - \ref SCIP_STAGE_FREE
90 *
91 * @post After calling this method targetscip reaches one of the following stages depending on if and when the solution
92 * process was interrupted:
93 * - \ref SCIP_STAGE_PROBLEM
94 *
95 * @note sourcescip stage does not get changed
96 *
97 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
98 */
99SCIP_EXPORT
101 SCIP* sourcescip, /**< source SCIP data structure */
102 SCIP* targetscip, /**< target SCIP data structure */
103 SCIP_Bool copyreaders, /**< should the file readers be copied */
104 SCIP_Bool copypricers, /**< should the variable pricers be copied */
105 SCIP_Bool copyconshdlrs, /**< should the constraint handlers be copied */
106 SCIP_Bool copyconflicthdlrs, /**< should the conflict handlers be copied */
107 SCIP_Bool copypresolvers, /**< should the presolvers be copied */
108 SCIP_Bool copyrelaxators, /**< should the relaxation handler be copied */
109 SCIP_Bool copyseparators, /**< should the separators be copied */
110 SCIP_Bool copycutselectors, /**< should the cut selectors be copied */
111 SCIP_Bool copypropagators, /**< should the propagators be copied */
112 SCIP_Bool copyheuristics, /**< should the heuristics be copied */
113 SCIP_Bool copyeventhdlrs, /**< should the event handlers be copied */
114 SCIP_Bool copynodeselectors, /**< should the node selectors be copied */
115 SCIP_Bool copybranchrules, /**< should the branchrules be copied */
116 SCIP_Bool copyiisfinders, /**< should the IIS finders be copied */
117 SCIP_Bool copydisplays, /**< should the display columns be copied */
118 SCIP_Bool copydialogs, /**< should the dialogs be copied */
119 SCIP_Bool copytables, /**< should the statistics tables be copied */
120 SCIP_Bool copyexprhdlrs, /**< should the expression handlers be copied */
121 SCIP_Bool copynlpis, /**< should the NLPIs be copied */
122 SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
123 SCIP_Bool* valid /**< pointer to store whether plugins, in particular all constraint
124 * handlers which do not need constraints were validly copied */
125 );
126
127/** copies all Benders' decomposition plugins
128 *
129 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
130 * @note the 'threadsafe' parameter must be set to TRUE if you are absolutely certain that the source and target
131 * SCIP instances will be solved in parallel. The usual case is to set this to FALSE, since thread safety
132 * typically incurs a performance cost.
133 *
134 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
135 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
136 *
137 * @pre This method can be called if sourcescip is in one of the following stages:
138 * - \ref SCIP_STAGE_PROBLEM
139 * - \ref SCIP_STAGE_TRANSFORMED
140 * - \ref SCIP_STAGE_INITPRESOLVE
141 * - \ref SCIP_STAGE_PRESOLVING
142 * - \ref SCIP_STAGE_EXITPRESOLVE
143 * - \ref SCIP_STAGE_PRESOLVED
144 * - \ref SCIP_STAGE_INITSOLVE
145 * - \ref SCIP_STAGE_SOLVING
146 * - \ref SCIP_STAGE_SOLVED
147 *
148 * @pre This method can be called if targetscip is in one of the following stages:
149 * - \ref SCIP_STAGE_INIT
150 * - \ref SCIP_STAGE_FREE
151 *
152 * @post After calling this method targetscip reaches one of the following stages depending on if and when the solution
153 * process was interrupted:
154 * - \ref SCIP_STAGE_PROBLEM
155 *
156 * @note sourcescip stage does not get changed
157 *
158 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
159 */
160SCIP_EXPORT
162 SCIP* sourcescip, /**< source SCIP data structure */
163 SCIP* targetscip, /**< target SCIP data structure */
164 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
165 * target variables; if NULL the transfer of cuts is not possible */
166 SCIP_Bool threadsafe, /**< FALSE, if data can be safely shared between the source and target
167 SCIP, otherwise TRUE. This is usually set to FALSE */
168 SCIP_Bool* valid /**< pointer to store whether all plugins were validly copied */
169 );
170
171/** create a problem by copying the problem data of the source SCIP
172 *
173 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
174 * @note Do not change the source SCIP environment during the copying process
175 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
176 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
177 *
178 * @pre This method can be called if sourcescip is in one of the following stages:
179 * - \ref SCIP_STAGE_PROBLEM
180 * - \ref SCIP_STAGE_TRANSFORMED
181 * - \ref SCIP_STAGE_INITPRESOLVE
182 * - \ref SCIP_STAGE_PRESOLVING
183 * - \ref SCIP_STAGE_EXITPRESOLVE
184 * - \ref SCIP_STAGE_PRESOLVED
185 * - \ref SCIP_STAGE_INITSOLVE
186 * - \ref SCIP_STAGE_SOLVING
187 * - \ref SCIP_STAGE_SOLVED
188 *
189 * @pre This method can be called if targetscip is in one of the following stages:
190 * - \ref SCIP_STAGE_INIT
191 * - \ref SCIP_STAGE_PROBLEM
192 * - \ref SCIP_STAGE_TRANSFORMED
193 * - \ref SCIP_STAGE_INITPRESOLVE
194 * - \ref SCIP_STAGE_PRESOLVING
195 * - \ref SCIP_STAGE_EXITPRESOLVE
196 * - \ref SCIP_STAGE_PRESOLVED
197 * - \ref SCIP_STAGE_INITSOLVE
198 * - \ref SCIP_STAGE_SOLVING
199 * - \ref SCIP_STAGE_SOLVED
200 * - \ref SCIP_STAGE_FREE
201 *
202 * @post After calling this method targetscip reaches one of the following stages depending on if and when the solution
203 * process was interrupted:
204 * - \ref SCIP_STAGE_PROBLEM
205 *
206 * @note sourcescip stage does not get changed
207 *
208 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
209 */
210SCIP_EXPORT
212 SCIP* sourcescip, /**< source SCIP data structure */
213 SCIP* targetscip, /**< target SCIP data structure */
214 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
215 * target variables, or NULL */
216 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
217 * target constraints, or NULL */
218 SCIP_Bool global, /**< create a global or a local copy? */
219 const char* name /**< problem name */
220 );
221
222/** create a problem by copying the original problem data of the source SCIP
223 *
224 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
225 * @note Do not change the source SCIP environment during the copying process
226 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
227 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
228 *
229 * @pre This method can be called if sourcescip is in one of the following stages:
230 * - \ref SCIP_STAGE_PROBLEM
231 * - \ref SCIP_STAGE_TRANSFORMED
232 * - \ref SCIP_STAGE_INITPRESOLVE
233 * - \ref SCIP_STAGE_PRESOLVING
234 * - \ref SCIP_STAGE_EXITPRESOLVE
235 * - \ref SCIP_STAGE_PRESOLVED
236 * - \ref SCIP_STAGE_INITSOLVE
237 * - \ref SCIP_STAGE_SOLVING
238 * - \ref SCIP_STAGE_SOLVED
239 *
240 * @pre This method can be called if targetscip is in one of the following stages:
241 * - \ref SCIP_STAGE_INIT
242 * - \ref SCIP_STAGE_FREE
243 *
244 * @post After calling this method targetscip reaches one of the following stages depending on if and when the solution
245 * process was interrupted:
246 * - \ref SCIP_STAGE_PROBLEM
247 *
248 * @note sourcescip stage does not get changed
249 *
250 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
251 */
252SCIP_EXPORT
254 SCIP* sourcescip, /**< source SCIP data structure */
255 SCIP* targetscip, /**< target SCIP data structure */
256 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
257 * target variables, or NULL */
258 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
259 * target constraints, or NULL */
260 const char* name /**< problem name of target */
261 );
262
263/** enables constraint compression.
264 *
265 * If constraint compression is enabled, fixed variables will be treated as constants
266 * by all constraints that are copied after calling this method.
267 *
268 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
269 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
270 *
271 * @pre This method can be called if scip is in one of the following stages:
272 * - \ref SCIP_STAGE_PROBLEM
273 *
274 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
275 */
276SCIP_EXPORT
278 SCIP* scip /**< source SCIP data structure */
279 );
280
281/** is constraint compression enabled?
282 *
283 * If constraint compression is enabled, fixed variables can be treated as constants
284 * by all constraints that are copied after calling this method.
285 *
286 * @return TRUE if problem constraint compression is enabled, otherwise FALSE
287 *
288 * @pre This method can be called if scip is in one of the following stages:
289 * - \ref SCIP_STAGE_PROBLEM
290 * - \ref SCIP_STAGE_TRANSFORMING
291 * - \ref SCIP_STAGE_TRANSFORMED
292 * - \ref SCIP_STAGE_INITPRESOLVE
293 * - \ref SCIP_STAGE_PRESOLVING
294 * - \ref SCIP_STAGE_EXITPRESOLVE
295 * - \ref SCIP_STAGE_PRESOLVED
296 * - \ref SCIP_STAGE_INITSOLVE
297 * - \ref SCIP_STAGE_SOLVING
298 * - \ref SCIP_STAGE_SOLVED
299 * - \ref SCIP_STAGE_EXITSOLVE
300 * - \ref SCIP_STAGE_FREETRANS
301 *
302 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
303 */
304SCIP_EXPORT
306 SCIP* scip /**< source SCIP data structure */
307 );
308
309/** returns copy of the source variable; if there already is a copy of the source variable in the variable hash map,
310 * it is just returned as target variable; otherwise, if the variables it not marked as relaxation-only, a new variable
311 * will be created and added to the target SCIP; this created variable is added to the variable hash map and returned as target variable;
312 * relaxation-only variables are not copied and FALSE is returned in *success
313 *
314 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
315 * @note Do not change the source SCIP environment during the copying process
316 * @note if a new variable was created, this variable will be added to the target-SCIP, but it is not captured
317 *
318 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
319 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
320 *
321 * @pre This method can be called if sourcescip is in one of the following stages:
322 * - \ref SCIP_STAGE_PROBLEM
323 * - \ref SCIP_STAGE_TRANSFORMED
324 * - \ref SCIP_STAGE_INITPRESOLVE
325 * - \ref SCIP_STAGE_PRESOLVING
326 * - \ref SCIP_STAGE_EXITPRESOLVE
327 * - \ref SCIP_STAGE_PRESOLVED
328 * - \ref SCIP_STAGE_INITSOLVE
329 * - \ref SCIP_STAGE_SOLVING
330 * - \ref SCIP_STAGE_SOLVED
331 *
332 * @pre This method can be called if targetscip is in one of the following stages:
333 * - \ref SCIP_STAGE_PROBLEM
334 * - \ref SCIP_STAGE_TRANSFORMED
335 * - \ref SCIP_STAGE_INITPRESOLVE
336 * - \ref SCIP_STAGE_PRESOLVING
337 * - \ref SCIP_STAGE_EXITPRESOLVE
338 * - \ref SCIP_STAGE_SOLVING
339 *
340 * @note targetscip stage does not get changed
341 *
342 * @note sourcescip stage does not get changed
343 *
344 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
345 */
346SCIP_EXPORT
348 SCIP* sourcescip, /**< source SCIP data structure */
349 SCIP* targetscip, /**< target SCIP data structure */
350 SCIP_VAR* sourcevar, /**< source variable */
351 SCIP_VAR** targetvar, /**< pointer to store the target variable */
352 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables to the corresponding
353 * target variables, or NULL */
354 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
355 * target constraints, or NULL */
356 SCIP_Bool global, /**< should global or local bounds be used? */
357 SCIP_Bool* success /**< pointer to store whether the copying was successful or not */
358 );
359
360/** Copies all active (thus unfixed) variables from source-SCIP, except those that are marked as relaxation only,
361 * and adds these variable to the target-SCIP.
362 *
363 * The mapping between these variables are stored in the variable hashmap.
364 *
365 * The target-SCIP has to be in problem creation stage.
366 *
367 * @note the variables are added to the target-SCIP but not captured
368 *
369 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
370 * @note Do not change the source SCIP environment during the copying process
371 *
372 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
373 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
374 *
375 * @pre This method can be called if sourcescip is in one of the following stages:
376 * - \ref SCIP_STAGE_PROBLEM
377 * - \ref SCIP_STAGE_TRANSFORMED
378 * - \ref SCIP_STAGE_INITPRESOLVE
379 * - \ref SCIP_STAGE_PRESOLVING
380 * - \ref SCIP_STAGE_EXITPRESOLVE
381 * - \ref SCIP_STAGE_PRESOLVED
382 * - \ref SCIP_STAGE_INITSOLVE
383 * - \ref SCIP_STAGE_SOLVING
384 * - \ref SCIP_STAGE_SOLVED
385 *
386 * @pre This method can be called if targetscip is in one of the following stages:
387 * - \ref SCIP_STAGE_PROBLEM
388 *
389 * @note sourcescip stage does not get changed
390 *
391 * @note targetscip stage does not get changed
392 *
393 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
394 */
395SCIP_EXPORT
397 SCIP* sourcescip, /**< source SCIP data structure */
398 SCIP* targetscip, /**< target SCIP data structure */
399 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables to the corresponding
400 * target variables, or NULL */
401 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
402 * target constraints, or NULL */
403 SCIP_VAR** fixedvars, /**< source variables whose copies should be fixed in the target SCIP environment, or NULL */
404 SCIP_Real* fixedvals, /**< array of fixing values for target SCIP variables, or NULL */
405 int nfixedvars, /**< number of source variables whose copies should be fixed in the target SCIP environment, or NULL */
406 SCIP_Bool global /**< should global or local bounds be used? */
407 );
408
409/** copies all original variables from source-SCIP and adds these variable to the target-SCIP; the mapping between these
410 * variables are stored in the variable hashmap, target-SCIP has to be in problem creation stage, fixed and aggregated
411 * variables do not get copied
412 *
413 * @note the variables are added to the target-SCIP but not captured
414 *
415 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
416 * @note Do not change the source SCIP environment during the copying process
417 *
418 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
419 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
420 *
421 * @pre This method can be called if sourcescip is in one of the following stages:
422 * - \ref SCIP_STAGE_PROBLEM
423 * - \ref SCIP_STAGE_TRANSFORMED
424 * - \ref SCIP_STAGE_INITPRESOLVE
425 * - \ref SCIP_STAGE_PRESOLVING
426 * - \ref SCIP_STAGE_EXITPRESOLVE
427 * - \ref SCIP_STAGE_PRESOLVED
428 * - \ref SCIP_STAGE_INITSOLVE
429 * - \ref SCIP_STAGE_SOLVING
430 * - \ref SCIP_STAGE_SOLVED
431 *
432 * @pre This method can be called if targetscip is in one of the following stages:
433 * - \ref SCIP_STAGE_PROBLEM
434 *
435 * @note sourcescip stage does not get changed
436 *
437 * @note targetscip stage does not get changed
438 *
439 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
440 */
441SCIP_EXPORT
443 SCIP* sourcescip, /**< source SCIP data structure */
444 SCIP* targetscip, /**< target SCIP data structure */
445 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables to the corresponding
446 * target variables, or NULL */
447 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
448 * target constraints, or NULL */
449 SCIP_VAR** fixedvars, /**< source variables whose copies should be fixed in the target SCIP environment, or NULL */
450 SCIP_Real* fixedvals, /**< array of fixing values for target SCIP variables, or NULL */
451 int nfixedvars /**< number of source variables whose copies should be fixed in the target SCIP environment, or NULL */
452 );
453
454/** merges the histories of variables from a source SCIP into a target SCIP. The two data structures should point to
455 * different SCIP instances.
456 *
457 * @note the notion of source and target is inverted here; \p sourcescip usually denotes a copied SCIP instance, whereas
458 * \p targetscip denotes the original instance
459 */
460
461SCIP_EXPORT
463 SCIP* sourcescip, /**< source SCIP data structure */
464 SCIP* targetscip, /**< target SCIP data structure */
465 SCIP_VAR** sourcevars, /**< source variables for history merge, NULL entries are ignored */
466 SCIP_VAR** targetvars, /**< target variables for history merge, NULL entries are ignored */
467 int nvars /**< number of variables in both variable arrays */
468 );
469
470/** merges the statistics of NLPIs from a source SCIP into a target SCIP
471 *
472 * The two SCIP instances should point to different SCIP instances.
473 *
474 * @note the notion of source and target is inverted here; \p sourcescip usually denotes a copied SCIP instance, whereas
475 * \p targetscip denotes the original instance
476 */
477SCIP_EXPORT
479 SCIP* sourcescip, /**< source SCIP data structure */
480 SCIP* targetscip, /**< target SCIP data structure */
481 SCIP_Bool reset /**< whether to reset statistics in sourcescip */
482 );
483
484/** translates a solution from a subscip to the main scip
485 *
486 * Variables that are relaxation-only in the master SCIP are set to 0 or the bound closest to 0. Such variables
487 * are represented as NULL entry in the subvars array.
488 *
489 * @note This method allocates a new solution of the main scip that needs to be freed by the user.
490 */
491SCIP_EXPORT
493 SCIP* scip, /**< SCIP data structure of the original problem */
494 SCIP* subscip, /**< SCIP data structure of the subproblem */
495 SCIP_SOL* subsol, /**< solution of the subproblem */
496 SCIP_HEUR* heur, /**< heuristic that found the solution */
497 SCIP_VAR** subvars, /**< the variables from the subproblem in the same order as the main scip */
498 SCIP_SOL** newsol /**< buffer to store pointer to created solution in main SCIP */
499 );
500
501/** checks the solutions from the subscip and adds the first one that is found feasible to the master SCIP
502 *
503 * Variables that are relaxation-only in the master SCIP are set to 0 or the bound closest to 0. Such variables
504 * are represented as NULL entry in the subvars array.
505 */
506SCIP_EXPORT
508 SCIP* scip, /**< the SCIP data structure */
509 SCIP* subscip, /**< SCIP data structure of the subproblem */
510 SCIP_HEUR* heur, /**< heuristic that found the solution */
511 SCIP_VAR** subvars, /**< the variables from the subproblem in the same order as the main scip */
512 SCIP_Bool* success, /**< pointer to store, whether new solution was found */
513 int* solindex /**< pointer to store solution index of stored solution, or NULL if not of interest */
514 );
515
516/** returns copy of the source constraint; if there already is a copy of the source constraint in the constraint hash
517 * map, it is just returned as target constraint; elsewise a new constraint will be created; this created constraint is
518 * added to the constraint hash map and returned as target constraint; the variable map is used to map the variables of
519 * the source SCIP to the variables of the target SCIP
520 *
521 * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution may
522 * be declared feasible even if it violates this particular constraint. This constellation should only be
523 * used, if no LP or pseudo solution can violate the constraint -- e.g. if a local constraint is redundant due
524 * to the variable's local bounds.
525 *
526 * @note The constraint is not added to the target SCIP. You can check whether a constraint is added by calling
527 * SCIPconsIsAdded(). (If you mix SCIPgetConsCopy() with SCIPcopyConss() you should pay attention to what you add
528 * explicitly and what is already added.)
529 *
530 * @note The constraint is always captured, either during the creation of the copy or after finding the copy of the
531 * constraint in the constraint hash map
532 *
533 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
534 * @note Do not change the source SCIP environment during the copying process
535 *
536 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
537 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
538 *
539 * @pre This method can be called if sourcescip is in one of the following stages:
540 * - \ref SCIP_STAGE_PROBLEM
541 * - \ref SCIP_STAGE_TRANSFORMED
542 * - \ref SCIP_STAGE_INITPRESOLVE
543 * - \ref SCIP_STAGE_PRESOLVING
544 * - \ref SCIP_STAGE_EXITPRESOLVE
545 * - \ref SCIP_STAGE_PRESOLVED
546 * - \ref SCIP_STAGE_INITSOLVE
547 * - \ref SCIP_STAGE_SOLVING
548 * - \ref SCIP_STAGE_SOLVED
549 *
550 * @pre This method can be called if targetscip is in one of the following stages:
551 * - \ref SCIP_STAGE_PROBLEM
552 * - \ref SCIP_STAGE_TRANSFORMING
553 * - \ref SCIP_STAGE_INITPRESOLVE
554 * - \ref SCIP_STAGE_PRESOLVING
555 * - \ref SCIP_STAGE_EXITPRESOLVE
556 * - \ref SCIP_STAGE_PRESOLVED
557 * - \ref SCIP_STAGE_SOLVING
558 * - \ref SCIP_STAGE_EXITSOLVE
559 *
560 * @note sourcescip stage does not get changed
561 *
562 * @note targetscip stage does not get changed
563 *
564 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
565 */
566SCIP_EXPORT
568 SCIP* sourcescip, /**< source SCIP data structure */
569 SCIP* targetscip, /**< target SCIP data structure */
570 SCIP_CONS* sourcecons, /**< source constraint of the source SCIP */
571 SCIP_CONS** targetcons, /**< pointer to store the created target constraint */
572 SCIP_CONSHDLR* sourceconshdlr, /**< source constraint handler for this constraint */
573 SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to the corresponding
574 * variables of the target SCIP, or NULL */
575 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
576 * target constraints, or NULL */
577 const char* name, /**< name of constraint, or NULL if the name of the source constraint should be used */
578 SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? */
579 SCIP_Bool separate, /**< should the constraint be separated during LP processing? */
580 SCIP_Bool enforce, /**< should the constraint be enforced during node processing? */
581 SCIP_Bool check, /**< should the constraint be checked for feasibility? */
582 SCIP_Bool propagate, /**< should the constraint be propagated during node processing? */
583 SCIP_Bool local, /**< is constraint only valid locally? */
584 SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)? */
585 SCIP_Bool dynamic, /**< is constraint subject to aging? */
586 SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup? */
587 SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
588 * if it may be moved to a more global node? */
589 SCIP_Bool global, /**< create a global or a local copy? */
590 SCIP_Bool* valid /**< pointer to store whether the copying was valid or not */
591 );
592
593/** copies constraints from the source-SCIP and adds these to the target-SCIP; for mapping the
594 * variables between the source and the target SCIP a hash map can be given; if the variable hash
595 * map is NULL or necessary variable mapping is missing, the required variables are created in the
596 * target-SCIP and added to the hash map, if not NULL; all variables which are created are added to
597 * the target-SCIP but not (user) captured; if the constraint hash map is not NULL the mapping
598 * between the constraints of the source and target-SCIP is stored
599 *
600 * *valid is set to TRUE iff all constraints that are marked as checked or enforced were copied successfully.
601 * If other constraints could not be copied, *valid can still be set to TRUE.
602 *
603 * @note the constraints are added to the target-SCIP but are not (user) captured in the target SCIP. (If you mix
604 * SCIPgetConsCopy() with SCIPcopyConss() you should pay attention to what you add explicitly and what is already
605 * added.) You can check whether a constraint is added by calling SCIPconsIsAdded().
606 *
607 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
608 * @note Do not change the source SCIP environment during the copying process
609 *
610 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
611 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
612 *
613 * @pre This method can be called if sourcescip is in one of the following stages:
614 * - \ref SCIP_STAGE_PROBLEM
615 * - \ref SCIP_STAGE_TRANSFORMED
616 * - \ref SCIP_STAGE_INITPRESOLVE
617 * - \ref SCIP_STAGE_PRESOLVING
618 * - \ref SCIP_STAGE_EXITPRESOLVE
619 * - \ref SCIP_STAGE_PRESOLVED
620 * - \ref SCIP_STAGE_INITSOLVE
621 * - \ref SCIP_STAGE_SOLVING
622 * - \ref SCIP_STAGE_SOLVED
623 *
624 * @pre This method can be called if targetscip is in one of the following stages:
625 * - \ref SCIP_STAGE_PROBLEM
626 *
627 * @note sourcescip stage does not get changed
628 *
629 * @note targetscip stage does not get changed
630 *
631 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
632 */
633SCIP_EXPORT
635 SCIP* sourcescip, /**< source SCIP data structure */
636 SCIP* targetscip, /**< target SCIP data structure */
637 SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to the corresponding
638 * variables of the target SCIP, or NULL */
639 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
640 * target constraints, or NULL */
641 SCIP_Bool global, /**< create a global or a local copy? */
642 SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance?
643 * If TRUE, the modifiable flag of constraints will be copied. */
644 SCIP_Bool* valid /**< pointer to store whether all checked or enforced constraints were validly copied */
645 );
646
647/** copies all original constraints from the source-SCIP and adds these to the target-SCIP; for mapping the
648 * variables between the source and the target SCIP a hash map can be given; if the variable hash
649 * map is NULL or necessary variable mapping is missing, the required variables are created in the
650 * target-SCIP and added to the hash map, if not NULL; all variables which are created are added to
651 * the target-SCIP but not (user) captured; if the constraint hash map is not NULL the mapping
652 * between the constraints of the source and target-SCIP is stored
653 *
654 * @note the constraints are added to the target-SCIP but are not (user) captured in the target SCIP. (If you mix
655 * SCIPgetConsCopy() with SCIPcopyConss() you should pay attention to what you add explicitly and what is already
656 * added.) You can check whether a constraint is added by calling SCIPconsIsAdded().
657 *
658 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
659 * @note Do not change the source SCIP environment during the copying process
660 *
661 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
662 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
663 *
664 * @pre This method can be called if sourcescip is in one of the following stages:
665 * - \ref SCIP_STAGE_PROBLEM
666 * - \ref SCIP_STAGE_TRANSFORMED
667 * - \ref SCIP_STAGE_INITPRESOLVE
668 * - \ref SCIP_STAGE_PRESOLVING
669 * - \ref SCIP_STAGE_EXITPRESOLVE
670 * - \ref SCIP_STAGE_PRESOLVED
671 * - \ref SCIP_STAGE_INITSOLVE
672 * - \ref SCIP_STAGE_SOLVING
673 * - \ref SCIP_STAGE_SOLVED
674 *
675 * @pre This method can be called if targetscip is in one of the following stages:
676 * - \ref SCIP_STAGE_PROBLEM
677 *
678 * @note sourcescip stage does not get changed
679 *
680 * @note targetscip stage does not get changed
681 *
682 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
683 */
684SCIP_EXPORT
686 SCIP* sourcescip, /**< source SCIP data structure */
687 SCIP* targetscip, /**< target SCIP data structure */
688 SCIP_HASHMAP* varmap, /**< a SCIP_HASHMAP mapping variables of the source SCIP to the corresponding
689 * variables of the target SCIP, or NULL */
690 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
691 * target constraints, or NULL */
692 SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance?
693 * If TRUE, the modifiable flag of constraints will be copied. */
694 SCIP_Bool* valid /**< pointer to store whether all constraints were validly copied */
695 );
696
697/** convert all active cuts from cutpool to linear constraints
698 *
699 * @note Do not change the source SCIP environment during the copying process
700 *
701 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
702 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
703 *
704 * @pre This method can be called if SCIP is in one of the following stages:
705 * - \ref SCIP_STAGE_PROBLEM
706 * - \ref SCIP_STAGE_INITPRESOLVE
707 * - \ref SCIP_STAGE_PRESOLVING
708 * - \ref SCIP_STAGE_EXITPRESOLVE
709 * - \ref SCIP_STAGE_PRESOLVED
710 * - \ref SCIP_STAGE_SOLVING
711 * - \ref SCIP_STAGE_EXITSOLVE
712 *
713 * @note SCIP stage does not get changed
714 *
715 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
716 */
717SCIP_EXPORT
719 SCIP* scip, /**< SCIP data structure */
720 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
721 * target variables, or NULL */
722 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
723 * target constraints, or NULL */
724 SCIP_Bool global, /**< create a global or a local copy? */
725 int* ncutsadded /**< pointer to store number of added cuts, or NULL */
726 );
727
728/** copies all active cuts from cutpool of sourcescip to linear constraints in targetscip
729 *
730 * Cuts that contain variables that are marked as relaxation-only are skipped.
731 *
732 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
733 * @note Do not change the source SCIP environment during the copying process
734 *
735 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
736 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
737 *
738 * @pre This method can be called if sourcescip is in one of the following stages:
739 * - \ref SCIP_STAGE_PROBLEM
740 * - \ref SCIP_STAGE_TRANSFORMED
741 * - \ref SCIP_STAGE_INITPRESOLVE
742 * - \ref SCIP_STAGE_PRESOLVING
743 * - \ref SCIP_STAGE_EXITPRESOLVE
744 * - \ref SCIP_STAGE_PRESOLVED
745 * - \ref SCIP_STAGE_SOLVING
746 * - \ref SCIP_STAGE_SOLVED
747 * - \ref SCIP_STAGE_EXITSOLVE
748 *
749 * @pre This method can be called if targetscip is in one of the following stages:
750 * - \ref SCIP_STAGE_PROBLEM
751 * - \ref SCIP_STAGE_INITPRESOLVE
752 * - \ref SCIP_STAGE_PRESOLVING
753 * - \ref SCIP_STAGE_EXITPRESOLVE
754 * - \ref SCIP_STAGE_PRESOLVED
755 * - \ref SCIP_STAGE_SOLVING
756 * - \ref SCIP_STAGE_EXITSOLVE
757 *
758 * @note sourcescip stage does not get changed
759 *
760 * @note targetscip stage does not get changed
761 *
762 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
763 */
764SCIP_EXPORT
766 SCIP* sourcescip, /**< source SCIP data structure */
767 SCIP* targetscip, /**< target SCIP data structure */
768 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
769 * target variables, or NULL */
770 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
771 * target constraints, or NULL */
772 SCIP_Bool global, /**< create a global or a local copy? */
773 int* ncutsadded /**< pointer to store number of copied cuts, or NULL */
774 );
775
776/** copies all active conflicts from the conflict pool of sourcescip and adds them as linear constraints to targetscip
777 *
778 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
779 * @note Do not change the source SCIP environment during the copying process
780 *
781 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
782 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
783 *
784 * @pre This method can be called if sourcescip is in one of the following stages:
785 * - \ref SCIP_STAGE_PROBLEM
786 * - \ref SCIP_STAGE_TRANSFORMED
787 * - \ref SCIP_STAGE_INITPRESOLVE
788 * - \ref SCIP_STAGE_PRESOLVING
789 * - \ref SCIP_STAGE_EXITPRESOLVE
790 * - \ref SCIP_STAGE_PRESOLVED
791 * - \ref SCIP_STAGE_SOLVING
792 * - \ref SCIP_STAGE_SOLVED
793 * - \ref SCIP_STAGE_EXITSOLVE
794 *
795 * @pre This method can be called if targetscip is in one of the following stages:
796 * - \ref SCIP_STAGE_PROBLEM
797 * - \ref SCIP_STAGE_INITPRESOLVE
798 * - \ref SCIP_STAGE_PRESOLVING
799 * - \ref SCIP_STAGE_EXITPRESOLVE
800 * - \ref SCIP_STAGE_PRESOLVED
801 * - \ref SCIP_STAGE_SOLVING
802 * - \ref SCIP_STAGE_EXITSOLVE
803 *
804 * @note sourcescip stage does not change
805 *
806 * @note targetscip stage does not change
807 *
808 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
809 */
810SCIP_EXPORT
812 SCIP* sourcescip, /**< source SCIP data structure */
813 SCIP* targetscip, /**< target SCIP data structure */
814 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
815 * target variables, or NULL */
816 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
817 * target constraints, or NULL */
818 SCIP_Bool global, /**< create a global or a local copy? */
819 SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance?
820 * If TRUE, the modifiable flag of constraints will be copied. */
821 SCIP_Bool* valid /**< pointer to store whether all constraints were validly copied */
822 );
823
824/** copies implications and cliques of sourcescip to targetscip
825 *
826 * This function should be called for a targetscip in transformed stage. It can save time in presolving of the
827 * targetscip, since implications and cliques are copied.
828 *
829 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
830 * @note Do not change the source SCIP environment during the copying process
831 *
832 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
833 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
834 *
835 * @pre This method can be called if sourcescip is in one of the following stages:
836 * - \ref SCIP_STAGE_TRANSFORMED
837 * - \ref SCIP_STAGE_INITPRESOLVE
838 * - \ref SCIP_STAGE_PRESOLVING
839 * - \ref SCIP_STAGE_EXITPRESOLVE
840 * - \ref SCIP_STAGE_PRESOLVED
841 * - \ref SCIP_STAGE_SOLVING
842 * - \ref SCIP_STAGE_SOLVED
843 * - \ref SCIP_STAGE_EXITSOLVE
844 *
845 * @pre This method can be called if targetscip is in one of the following stages:
846 * - \ref SCIP_STAGE_TRANSFORMED
847 * - \ref SCIP_STAGE_INITPRESOLVE
848 * - \ref SCIP_STAGE_PRESOLVING
849 * - \ref SCIP_STAGE_EXITPRESOLVE
850 * - \ref SCIP_STAGE_PRESOLVED
851 * - \ref SCIP_STAGE_INITSOLVE
852 * - \ref SCIP_STAGE_SOLVING
853 *
854 * @note sourcescip stage does not get changed
855 *
856 * @note targetscip stage does not get changed
857 *
858 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
859 */
860SCIP_EXPORT
862 SCIP* sourcescip, /**< source SCIP data structure */
863 SCIP* targetscip, /**< target SCIP data structure */
864 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
865 * target variables, or NULL */
866 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
867 * target constraints, or NULL */
868 SCIP_Bool global, /**< create a global or a local copy? */
869 SCIP_Bool* infeasible, /**< pointer to store whether an infeasibility was detected */
870 int* nbdchgs, /**< pointer to store the number of performed bound changes, or NULL */
871 int* ncopied /**< pointer to store number of copied implications and cliques, or NULL */
872 );
873
874/** copies parameter settings from sourcescip to targetscip
875 *
876 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
877 * @note Do not change the source SCIP environment during the copying process
878 *
879 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
880 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
881 *
882 * @pre This method can be called if sourcescip is in one of the following stages:
883 * - \ref SCIP_STAGE_PROBLEM
884 * - \ref SCIP_STAGE_TRANSFORMED
885 * - \ref SCIP_STAGE_INITPRESOLVE
886 * - \ref SCIP_STAGE_PRESOLVING
887 * - \ref SCIP_STAGE_EXITPRESOLVE
888 * - \ref SCIP_STAGE_PRESOLVED
889 * - \ref SCIP_STAGE_INITSOLVE
890 * - \ref SCIP_STAGE_SOLVING
891 * - \ref SCIP_STAGE_SOLVED
892 *
893 * @pre This method can be called if targetscip is in one of the following stages:
894 * - \ref SCIP_STAGE_INIT
895 * - \ref SCIP_STAGE_PROBLEM
896 * - \ref SCIP_STAGE_FREE
897 *
898 * @note sourcescip stage does not get changed
899 *
900 * @note targetscip stage does not get changed
901 *
902 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
903 */
904SCIP_EXPORT
906 SCIP* sourcescip, /**< source SCIP data structure */
907 SCIP* targetscip /**< target SCIP data structure */
908 );
909
910/** gets depth of current scip instance (increased by each copy call)
911 *
912 * @return Depth of subscip of SCIP is returned.
913 *
914 * @pre This method can be called if SCIP is in one of the following stages:
915 * - \ref SCIP_STAGE_PROBLEM
916 * - \ref SCIP_STAGE_TRANSFORMING
917 * - \ref SCIP_STAGE_TRANSFORMED
918 * - \ref SCIP_STAGE_INITPRESOLVE
919 * - \ref SCIP_STAGE_PRESOLVING
920 * - \ref SCIP_STAGE_EXITPRESOLVE
921 * - \ref SCIP_STAGE_PRESOLVED
922 * - \ref SCIP_STAGE_INITSOLVE
923 * - \ref SCIP_STAGE_SOLVING
924 * - \ref SCIP_STAGE_SOLVED
925 * - \ref SCIP_STAGE_EXITSOLVE
926 * - \ref SCIP_STAGE_FREETRANS
927 *
928 * @note SCIP stage does not get changed
929 *
930 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
931 */
932SCIP_EXPORT
934 SCIP* scip /**< SCIP data structure */
935 );
936
937/** sets depth of scip instance
938 *
939 * @pre This method can be called if SCIP is in one of the following stages:
940 * - \ref SCIP_STAGE_PROBLEM
941 *
942 * @note SCIP stage does not get changed
943 *
944 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
945 */
946SCIP_EXPORT
948 SCIP* scip, /**< SCIP data structure */
949 int newdepth /**< new subscip depth */
950 );
951
952/** copies source SCIP to target SCIP; the copying process is done in the following order:
953 * 1) copy those plugins that have copy callbacks
954 * 2) copy the settings for the present parameters
955 * 3) create problem data in target-SCIP and copy the problem data of the source-SCIP
956 * 4) copy all active variables except those that are marked as relaxation-only
957 * 5) copy all constraints
958 *
959 * The source problem depends on the stage of the \p sourcescip - In SCIP_STAGE_PROBLEM, the original problem is copied,
960 * otherwise, the transformed problem is copied. For an explicit copy of the original problem, use SCIPcopyOrig().
961 *
962 * @note all variables and constraints which are created in the target-SCIP are not (user) captured
963 *
964 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
965 * Also, 'passmessagehdlr' should be set to FALSE.
966 * @note the 'threadsafe' parameter should only be set to TRUE if you are absolutely certain that the source and target
967 * SCIP instances will be solved in parallel. The usual case is to set this to FALSE, since thread safety
968 * typically incurs a performance cost.
969 * @note Do not change the source SCIP environment during the copying process
970 *
971 * @note Reoptimization and exact solving are explicitly disabled in the target-SCIP.
972 *
973 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
974 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
975 *
976 * @pre This method can be called if sourcescip is in one of the following stages:
977 * - \ref SCIP_STAGE_PROBLEM
978 * - \ref SCIP_STAGE_TRANSFORMED
979 * - \ref SCIP_STAGE_INITPRESOLVE
980 * - \ref SCIP_STAGE_PRESOLVING
981 * - \ref SCIP_STAGE_EXITPRESOLVE
982 * - \ref SCIP_STAGE_PRESOLVED
983 * - \ref SCIP_STAGE_INITSOLVE
984 * - \ref SCIP_STAGE_SOLVING
985 * - \ref SCIP_STAGE_SOLVED
986 *
987 * @pre This method can be called if targetscip is in one of the following stages:
988 * - \ref SCIP_STAGE_INIT
989 * - \ref SCIP_STAGE_FREE
990 *
991 * @note sourcescip stage does not get changed
992 *
993 * @note targetscip stage does not get changed
994 *
995 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
996 */
997SCIP_EXPORT
999 SCIP* sourcescip, /**< source SCIP data structure */
1000 SCIP* targetscip, /**< target SCIP data structure */
1001 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1002 * target variables, or NULL */
1003 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1004 * target constraints, or NULL */
1005 const char* suffix, /**< optional suffix for problem name inside the target SCIP */
1006 SCIP_Bool global, /**< create a global or a local copy? */
1007 SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance? If TRUE, pricer
1008 * plugins will be copied and activated, and the modifiable flag of
1009 * constraints will be respected. If FALSE, valid will be set to FALSE, when
1010 * there are pricers present */
1011 SCIP_Bool threadsafe, /**< FALSE, if data can be safely shared between the source and target
1012 SCIP, otherwise TRUE. This is usually set to FALSE */
1013 SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
1014 SCIP_Bool* valid /**< pointer to store whether the copying was valid, or NULL */
1015 );
1016
1017/** copies source SCIP to target SCIP but compresses constraints
1018 *
1019 * constraint compression is performed by removing fixed variables immediately
1020 * during constraint creation if the involved constraint handlers support
1021 * compression
1022 *
1023 * the copying process is done in the following order:
1024 * 1) copy the plugins
1025 * 2) copy the settings
1026 * 3) create problem data in target-SCIP and copy the problem data of the source-SCIP
1027 * 4) copy all active variables except those are marked as relaxation-only
1028 * a) fix all variable copies specified by \p fixedvars, \p fixedvals, and \p nfixedvars
1029 * b) enable constraint compression
1030 * 5) copy all constraints
1031 *
1032 * The source problem depends on the stage of the \p sourcescip - In SCIP_STAGE_PROBLEM, the original problem is copied,
1033 * otherwise, the transformed problem is copied. For an explicit copy of the original problem, use SCIPcopyOrigConsCompression().
1034 *
1035 * @note: in case that a combination of local bounds and explicit fixing values should be used,
1036 * the fixing value of a variable is preferred if local bounds and fixing value disagree.
1037 *
1038 * @note all variables and constraints which are created in the target-SCIP are not (user) captured
1039 *
1040 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1041 * Also, 'passmessagehdlr' should be set to FALSE.
1042 * @note the 'threadsafe' parameter should only be set to TRUE if you are absolutely certain that the source and target
1043 * SCIP instances will be solved in parallel. The usual case is to set this to FALSE, since thread safety
1044 * typically incurs a performance cost.
1045 * @note Do not change the source SCIP environment during the copying process
1046 *
1047 * @note Reoptimization and exact solving are explicitly disabled in the target-SCIP.
1048 *
1049 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1050 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1051 *
1052 * @pre This method can be called if sourcescip is in one of the following stages:
1053 * - \ref SCIP_STAGE_PROBLEM
1054 * - \ref SCIP_STAGE_TRANSFORMED
1055 * - \ref SCIP_STAGE_INITPRESOLVE
1056 * - \ref SCIP_STAGE_PRESOLVING
1057 * - \ref SCIP_STAGE_EXITPRESOLVE
1058 * - \ref SCIP_STAGE_PRESOLVED
1059 * - \ref SCIP_STAGE_INITSOLVE
1060 * - \ref SCIP_STAGE_SOLVING
1061 * - \ref SCIP_STAGE_SOLVED
1062 *
1063 * @pre This method can be called if targetscip is in one of the following stages:
1064 * - \ref SCIP_STAGE_INIT
1065 * - \ref SCIP_STAGE_FREE
1066 *
1067 * @note sourcescip stage does not get changed
1068 *
1069 * @note targetscip stage does not get changed
1070 *
1071 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1072 */
1073SCIP_EXPORT
1075 SCIP* sourcescip, /**< source SCIP data structure */
1076 SCIP* targetscip, /**< target SCIP data structure */
1077 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1078 * target variables, or NULL */
1079 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1080 * target constraints, or NULL */
1081 const char* suffix, /**< optional suffix for problem name inside the target SCIP */
1082 SCIP_VAR** fixedvars, /**< source variables whose copies should be fixed in the target SCIP environment, or NULL */
1083 SCIP_Real* fixedvals, /**< array of fixing values for target SCIP variables, or NULL */
1084 int nfixedvars, /**< number of source variables whose copies should be fixed in the target SCIP environment, or NULL */
1085 SCIP_Bool global, /**< create a global or a local copy? */
1086 SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance? If TRUE, pricer
1087 * plugins will be copied and activated, and the modifiable flag of
1088 * constraints will be respected. If FALSE, valid will be set to FALSE, when
1089 * there are pricers present */
1090 SCIP_Bool threadsafe, /**< FALSE, if data can be safely shared between the source and target
1091 SCIP, otherwise TRUE. This is usually set to FALSE */
1092 SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
1093 SCIP_Bool* valid /**< pointer to store whether the copying was valid, or NULL */
1094 );
1095
1096/** copies source SCIP original problem to target SCIP; the copying process is done in the following order:
1097 * 1) copy the plugins
1098 * 2) copy the settings
1099 * 3) create problem data in target-SCIP and copy the original problem data of the source-SCIP
1100 * 4) copy all original variables
1101 * 5) copy all original constraints
1102 *
1103 * @note all variables and constraints which are created in the target-SCIP are not (user) captured
1104 *
1105 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1106 * Also, 'passmessagehdlr' should be set to FALSE.
1107 * @note the 'threadsafe' parameter should only be set to TRUE if you are absolutely certain that the source and target
1108 * SCIP instances will be solved in parallel. The usual case is to set this to FALSE, since thread safety
1109 * typically incurs a performance cost.
1110 * @note Do not change the source SCIP environment during the copying process
1111 *
1112 * @note Reoptimization and exact solving are explicitly disabled in the target-SCIP.
1113 *
1114 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1115 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1116 *
1117 * @pre This method can be called if sourcescip is in one of the following stages:
1118 * - \ref SCIP_STAGE_PROBLEM
1119 * - \ref SCIP_STAGE_TRANSFORMED
1120 * - \ref SCIP_STAGE_INITPRESOLVE
1121 * - \ref SCIP_STAGE_PRESOLVING
1122 * - \ref SCIP_STAGE_EXITPRESOLVE
1123 * - \ref SCIP_STAGE_PRESOLVED
1124 * - \ref SCIP_STAGE_INITSOLVE
1125 * - \ref SCIP_STAGE_SOLVING
1126 * - \ref SCIP_STAGE_SOLVED
1127 *
1128 * @pre This method can be called if targetscip is in one of the following stages:
1129 * - \ref SCIP_STAGE_INIT
1130 * - \ref SCIP_STAGE_FREE
1131 *
1132 * @note sourcescip stage does not get changed
1133 *
1134 * @note targetscip stage does not get changed
1135 *
1136 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1137 */
1138SCIP_EXPORT
1140 SCIP* sourcescip, /**< source SCIP data structure */
1141 SCIP* targetscip, /**< target SCIP data structure */
1142 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1143 * target variables, or NULL */
1144 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1145 * target constraints, or NULL */
1146 const char* suffix, /**< suffix which will be added to the names of the target SCIP, might be empty */
1147 SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance? If TRUE, pricer
1148 * plugins will be copied and activated, and the modifiable flag of
1149 * constraints will be respected. If FALSE, valid will be set to FALSE, when
1150 * there are pricers present */
1151 SCIP_Bool threadsafe, /**< FALSE, if data can be safely shared between the source and target
1152 SCIP, otherwise TRUE. This is usually set to FALSE */
1153 SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
1154 SCIP_Bool* valid /**< pointer to store whether the copying was valid, or NULL */
1155 );
1156
1157/** copies source SCIP original problem to target SCIP but compresses constraints
1158 *
1159 * constraint compression is performed by removing fixed variables immediately
1160 * during constraint creation if the involved constraint handlers support
1161 * compression
1162 *
1163 * the copying process is done in the following order:
1164 * 1) copy the plugins
1165 * 2) copy the settings
1166 * 3) create problem data in target-SCIP and copy the problem data of the source-SCIP
1167 * 4) copy all original variables
1168 * a) fix all variable copies specified by \p fixedvars, \p fixedvals, and \p nfixedvars
1169 * b) enable constraint compression
1170 * 5) copy all constraints
1171 *
1172 * @note all variables and constraints which are created in the target-SCIP are not (user) captured
1173 *
1174 * @note In a multi thread case, you need to lock the copying procedure from outside with a mutex.
1175 * Also, 'passmessagehdlr' should be set to FALSE.
1176 * @note the 'threadsafe' parameter should only be set to TRUE if you are absolutely certain that the source and target
1177 * SCIP instances will be solved in parallel. The usual case is to set this to FALSE, since thread safety
1178 * typically incurs a performance cost.
1179 * @note Do not change the source SCIP environment during the copying process
1180 *
1181 * @note Reoptimization and exact solving are explicitly disabled in the target-SCIP.
1182 *
1183 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1184 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1185 *
1186 * @pre This method can be called if sourcescip is in one of the following stages:
1187 * - \ref SCIP_STAGE_PROBLEM
1188 * - \ref SCIP_STAGE_TRANSFORMED
1189 * - \ref SCIP_STAGE_INITPRESOLVE
1190 * - \ref SCIP_STAGE_PRESOLVING
1191 * - \ref SCIP_STAGE_EXITPRESOLVE
1192 * - \ref SCIP_STAGE_PRESOLVED
1193 * - \ref SCIP_STAGE_INITSOLVE
1194 * - \ref SCIP_STAGE_SOLVING
1195 * - \ref SCIP_STAGE_SOLVED
1196 *
1197 * @pre This method can be called if targetscip is in one of the following stages:
1198 * - \ref SCIP_STAGE_INIT
1199 * - \ref SCIP_STAGE_FREE
1200 *
1201 * @note sourcescip stage does not get changed
1202 *
1203 * @note targetscip stage does not get changed
1204 *
1205 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1206 */
1207SCIP_EXPORT
1209 SCIP* sourcescip, /**< source SCIP data structure */
1210 SCIP* targetscip, /**< target SCIP data structure */
1211 SCIP_HASHMAP* varmap, /**< a hashmap to store the mapping of source variables corresponding
1212 * target variables, or NULL */
1213 SCIP_HASHMAP* consmap, /**< a hashmap to store the mapping of source constraints to the corresponding
1214 * target constraints, or NULL */
1215 const char* suffix, /**< optional suffix for problem name inside the target SCIP */
1216 SCIP_VAR** fixedvars, /**< source variables whose copies should be fixed in the target SCIP environment, or NULL */
1217 SCIP_Real* fixedvals, /**< array of fixing values for target SCIP variables, or NULL */
1218 int nfixedvars, /**< number of source variables whose copies should be fixed in the target SCIP environment, or NULL */
1219 SCIP_Bool enablepricing, /**< should pricing be enabled in copied SCIP instance? If TRUE, pricer
1220 * plugins will be copied and activated, and the modifiable flag of
1221 * constraints will be respected. If FALSE, valid will be set to FALSE, when
1222 * there are pricers present */
1223 SCIP_Bool threadsafe, /**< FALSE, if data can be safely shared between the source and target
1224 SCIP, otherwise TRUE. This is usually set to FALSE */
1225 SCIP_Bool passmessagehdlr, /**< should the message handler be passed */
1226 SCIP_Bool* valid /**< pointer to store whether the copying was valid, or NULL */
1227 );
1228
1229/** checks if there is enough time and memory left for copying the sourcescip into a sub-SCIP and solve the sub-SCIP
1230 *
1231 * This is the case if the time and memory limit that would be passed to the sub-SCIP are larger than 0.0
1232 *
1233 * @pre This method can be called if sourcescip is in one of the following stages:
1234 * - \ref SCIP_STAGE_PROBLEM
1235 * - \ref SCIP_STAGE_TRANSFORMED
1236 * - \ref SCIP_STAGE_INITPRESOLVE
1237 * - \ref SCIP_STAGE_PRESOLVING
1238 * - \ref SCIP_STAGE_EXITPRESOLVE
1239 * - \ref SCIP_STAGE_PRESOLVED
1240 * - \ref SCIP_STAGE_INITSOLVE
1241 * - \ref SCIP_STAGE_SOLVING
1242 * - \ref SCIP_STAGE_SOLVED
1243 *
1244 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1245 */
1246SCIP_EXPORT
1248 SCIP* sourcescip, /**< source SCIP data structure */
1249 SCIP_Bool* success /**< pointer to store whether there is time and memory left to copy the
1250 * problem and run the sub-SCIP */
1251 );
1252
1253/** copies limits from source SCIP to target SCIP
1254 *
1255 * @note time and memory limit are reduced by the amount already spent in the source SCIP before installing the limit
1256 * in the target SCIP
1257 * @note all other limits are disabled and need to be enabled afterwards, if needed
1258 *
1259 * @see SCIPsetCommonSubscipParams() to set further working limits and other parameters commonly used for auxiliary problems
1260 *
1261 * @pre This method can be called if sourcescip is in one of the following stages:
1262 * - \ref SCIP_STAGE_PROBLEM
1263 * - \ref SCIP_STAGE_TRANSFORMED
1264 * - \ref SCIP_STAGE_INITPRESOLVE
1265 * - \ref SCIP_STAGE_PRESOLVING
1266 * - \ref SCIP_STAGE_EXITPRESOLVE
1267 * - \ref SCIP_STAGE_PRESOLVED
1268 * - \ref SCIP_STAGE_INITSOLVE
1269 * - \ref SCIP_STAGE_SOLVING
1270 * - \ref SCIP_STAGE_SOLVED
1271 *
1272 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1273 */
1274SCIP_EXPORT
1276 SCIP* sourcescip, /**< source SCIP data structure */
1277 SCIP* targetscip /**< target SCIP data structure */
1278 );
1279
1280/** sets the working limits as well as common search parameters for the auxiliary problem
1281 *
1282 * @note memory and time limits are not affected, and must be set using SCIPcopyLimits() instead
1283 */
1284SCIP_EXPORT
1286 SCIP* sourcescip, /**< source SCIP data structure */
1287 SCIP* subscip, /**< target SCIP data structure, often a copy of sourcescip */
1288 SCIP_Longint nsubnodes, /**< nodelimit for subscip, or -1 for no limit */
1289 SCIP_Longint nstallnodes, /**< stall node limit for subscip, or -1 for no limit */
1290 int bestsollimit /**< the limit on the number of best solutions found, or -1 for no limit */
1291 );
1292
1293
1294/**@} */
1295
1296#ifdef __cplusplus
1297}
1298#endif
1299
1300#endif
common defines and data types used in all packages of SCIP
#define SCIP_Longint
Definition: def.h:141
#define SCIP_Bool
Definition: def.h:91
#define SCIP_Real
Definition: def.h:156
SCIP_RETCODE SCIPcopyPlugins(SCIP *sourcescip, SCIP *targetscip, SCIP_Bool copyreaders, SCIP_Bool copypricers, SCIP_Bool copyconshdlrs, SCIP_Bool copyconflicthdlrs, SCIP_Bool copypresolvers, SCIP_Bool copyrelaxators, SCIP_Bool copyseparators, SCIP_Bool copycutselectors, SCIP_Bool copypropagators, SCIP_Bool copyheuristics, SCIP_Bool copyeventhdlrs, SCIP_Bool copynodeselectors, SCIP_Bool copybranchrules, SCIP_Bool copyiisfinders, SCIP_Bool copydisplays, SCIP_Bool copydialogs, SCIP_Bool copytables, SCIP_Bool copyexprhdlrs, SCIP_Bool copynlpis, SCIP_Bool passmessagehdlr, SCIP_Bool *valid)
Definition: scip_copy.c:276
SCIP_RETCODE SCIPcopyImplicationsCliques(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool *infeasible, int *nbdchgs, int *ncopied)
Definition: scip_copy.c:2363
SCIP_RETCODE SCIPcopyOrig(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_Bool enablepricing, SCIP_Bool threadsafe, SCIP_Bool passmessagehdlr, SCIP_Bool *valid)
Definition: scip_copy.c:3044
void SCIPmergeNLPIStatistics(SCIP *sourcescip, SCIP *targetscip, SCIP_Bool reset)
Definition: scip_copy.c:1319
SCIP_RETCODE SCIPcopyBenders(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_Bool threadsafe, SCIP_Bool *valid)
Definition: scip_copy.c:359
void SCIPsetSubscipDepth(SCIP *scip, int newdepth)
Definition: scip_copy.c:2609
SCIP_RETCODE SCIPtranslateSubSols(SCIP *scip, SCIP *subscip, SCIP_HEUR *heur, SCIP_VAR **subvars, SCIP_Bool *success, int *solindex)
Definition: scip_copy.c:1437
SCIP_RETCODE SCIPcopyOrigVars(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars)
Definition: scip_copy.c:1224
SCIP_RETCODE SCIPcopyVars(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool global)
Definition: scip_copy.c:1167
SCIP_RETCODE SCIPsetCommonSubscipParams(SCIP *sourcescip, SCIP *subscip, SCIP_Longint nsubnodes, SCIP_Longint nstallnodes, int bestsollimit)
Definition: scip_copy.c:3335
SCIP_RETCODE SCIPcopy(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool threadsafe, SCIP_Bool passmessagehdlr, SCIP_Bool *valid)
Definition: scip_copy.c:2865
SCIP_RETCODE SCIPcopyOrigConsCompression(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool enablepricing, SCIP_Bool threadsafe, SCIP_Bool passmessagehdlr, SCIP_Bool *valid)
Definition: scip_copy.c:3133
SCIP_RETCODE SCIPcopyConsCompression(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *suffix, SCIP_VAR **fixedvars, SCIP_Real *fixedvals, int nfixedvars, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool threadsafe, SCIP_Bool passmessagehdlr, SCIP_Bool *valid)
Definition: scip_copy.c:2961
SCIP_RETCODE SCIPcopyOrigConss(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool enablepricing, SCIP_Bool *valid)
Definition: scip_copy.c:1918
SCIP_RETCODE SCIPcheckCopyLimits(SCIP *sourcescip, SCIP_Bool *success)
Definition: scip_copy.c:3249
int SCIPgetSubscipDepth(SCIP *scip)
Definition: scip_copy.c:2588
SCIP_RETCODE SCIPmergeVariableStatistics(SCIP *sourcescip, SCIP *targetscip, SCIP_VAR **sourcevars, SCIP_VAR **targetvars, int nvars)
Definition: scip_copy.c:1254
SCIP_RETCODE SCIPgetConsCopy(SCIP *sourcescip, SCIP *targetscip, SCIP_CONS *sourcecons, SCIP_CONS **targetcons, SCIP_CONSHDLR *sourceconshdlr, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *name, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool global, SCIP_Bool *valid)
Definition: scip_copy.c:1580
SCIP_RETCODE SCIPcopyCuts(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, int *ncutsadded)
Definition: scip_copy.c:2113
SCIP_RETCODE SCIPconvertCutsToConss(SCIP *scip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, int *ncutsadded)
Definition: scip_copy.c:2051
SCIP_RETCODE SCIPenableConsCompression(SCIP *scip)
Definition: scip_copy.c:623
SCIP_RETCODE SCIPcopyProb(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, const char *name)
Definition: scip_copy.c:529
SCIP_RETCODE SCIPtranslateSubSol(SCIP *scip, SCIP *subscip, SCIP_SOL *subsol, SCIP_HEUR *heur, SCIP_VAR **subvars, SCIP_SOL **newsol)
Definition: scip_copy.c:1397
SCIP_Bool SCIPisConsCompressionEnabled(SCIP *scip)
Definition: scip_copy.c:662
SCIP_RETCODE SCIPcopyConss(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool *valid)
Definition: scip_copy.c:1716
SCIP_RETCODE SCIPcopyParamSettings(SCIP *sourcescip, SCIP *targetscip)
Definition: scip_copy.c:2547
SCIP_RETCODE SCIPcopyLimits(SCIP *sourcescip, SCIP *targetscip)
Definition: scip_copy.c:3292
SCIP_RETCODE SCIPgetVarCopy(SCIP *sourcescip, SCIP *targetscip, SCIP_VAR *sourcevar, SCIP_VAR **targetvar, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool *success)
Definition: scip_copy.c:713
SCIP_RETCODE SCIPcopyConflicts(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_Bool global, SCIP_Bool enablepricing, SCIP_Bool *valid)
Definition: scip_copy.c:2205
SCIP_RETCODE SCIPcopyOrigProb(SCIP *sourcescip, SCIP *targetscip, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, const char *name)
Definition: scip_copy.c:582
static SCIP_RETCODE separate(SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_RESULT *result)
Main separation function.
Definition: sepa_flower.c:1221
type definitions for constraints and constraint handlers
type definitions for miscellaneous datastructures
type definitions for return codes for SCIP methods
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
type definitions for SCIP's main datastructure
type definitions for problem variables