SCIP Doxygen Documentation
 
Loading...
Searching...
No Matches
sol.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 sol.h
26 * @ingroup INTERNALAPI
27 * @brief internal methods for storing primal CIP solutions
28 * @author Tobias Achterberg
29 */
30
31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32
33#ifndef __SCIP_SOL_H__
34#define __SCIP_SOL_H__
35
36
37#include <stdio.h>
38
39#include "scip/def.h"
41#include "scip/type_retcode.h"
42#include "scip/type_set.h"
43#include "scip/type_stat.h"
44#include "scip/type_lp.h"
45#include "scip/type_nlp.h"
46#include "scip/type_var.h"
47#include "scip/type_prob.h"
48#include "scip/type_sol.h"
49#include "scip/type_primal.h"
50#include "scip/type_tree.h"
51#include "scip/type_heur.h"
52#include "scip/pub_sol.h"
53
54#ifdef __cplusplus
55extern "C" {
56#endif
57
58/** creates primal CIP solution, initialized to zero */
60 SCIP_SOL** sol, /**< pointer to primal CIP solution */
61 BMS_BLKMEM* blkmem, /**< block memory */
62 SCIP_SET* set, /**< global SCIP settings */
63 SCIP_STAT* stat, /**< problem statistics data */
64 SCIP_PRIMAL* primal, /**< primal data */
65 SCIP_TREE* tree, /**< branch and bound tree, or NULL */
66 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
67 );
68
69/** creates primal CIP solution in original problem space, initialized to the offset in the original problem */
71 SCIP_SOL** sol, /**< pointer to primal CIP solution */
72 BMS_BLKMEM* blkmem, /**< block memory */
73 SCIP_SET* set, /**< global SCIP settings */
74 SCIP_STAT* stat, /**< problem statistics data */
75 SCIP_PROB* origprob, /**< original problem data */
76 SCIP_PRIMAL* primal, /**< primal data */
77 SCIP_TREE* tree, /**< branch and bound tree */
78 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
79 );
80
81/** creates a copy of a primal CIP solution */
83 SCIP_SOL** sol, /**< pointer to store the copy of the primal CIP solution */
84 BMS_BLKMEM* blkmem, /**< block memory */
85 SCIP_SET* set, /**< global SCIP settings */
86 SCIP_STAT* stat, /**< problem statistics data */
87 SCIP_PRIMAL* primal, /**< primal data */
88 SCIP_SOL* sourcesol /**< primal CIP solution to copy */
89 );
90
91/** transformes given original solution to the transformed space; a corresponding transformed solution has to be given
92 * which is copied into the existing solution and freed afterwards
93 */
95 SCIP_SOL* sol, /**< primal CIP solution to change, living in original space */
96 SCIP_SOL** transsol, /**< pointer to corresponding transformed primal CIP solution */
97 BMS_BLKMEM* blkmem, /**< block memory */
98 SCIP_SET* set, /**< global SCIP settings */
99 SCIP_PRIMAL* primal /**< primal data */
100 );
101
102/** adjusts solution values of implicit integer variables in handed solution. Solution objective value is not
103 * deteriorated by this method.
104 */
106 SCIP_SOL* sol, /**< primal CIP solution */
107 SCIP_SET* set, /**< global SCIP settings */
108 SCIP_STAT* stat, /**< problem statistics data */
109 SCIP_PROB* prob, /**< either original or transformed problem, depending on sol origin */
110 SCIP_TREE* tree, /**< branch and bound tree */
111 SCIP_Bool uselprows /**< should LP row information be considered for none-objective variables */
112 );
113
114/** creates primal CIP solution, initialized to the current LP solution */
116 SCIP_SOL** sol, /**< pointer to primal CIP solution */
117 BMS_BLKMEM* blkmem, /**< block memory */
118 SCIP_SET* set, /**< global SCIP settings */
119 SCIP_STAT* stat, /**< problem statistics data */
120 SCIP_PROB* prob, /**< transformed problem data */
121 SCIP_PRIMAL* primal, /**< primal data */
122 SCIP_TREE* tree, /**< branch and bound tree */
123 SCIP_LP* lp, /**< current LP data */
124 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
125 );
126
127/** creates primal CIP solution, initialized to the current NLP solution */
129 SCIP_SOL** sol, /**< pointer to primal CIP solution */
130 BMS_BLKMEM* blkmem, /**< block memory */
131 SCIP_SET* set, /**< global SCIP settings */
132 SCIP_STAT* stat, /**< problem statistics data */
133 SCIP_PRIMAL* primal, /**< primal data */
134 SCIP_TREE* tree, /**< branch and bound tree */
135 SCIP_NLP* nlp, /**< current NLP data */
136 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
137 );
138
139/** creates primal CIP solution, initialized to the current relaxation solution */
141 SCIP_SOL** sol, /**< pointer to primal CIP solution */
142 BMS_BLKMEM* blkmem, /**< block memory */
143 SCIP_SET* set, /**< global SCIP settings */
144 SCIP_STAT* stat, /**< problem statistics data */
145 SCIP_PRIMAL* primal, /**< primal data */
146 SCIP_TREE* tree, /**< branch and bound tree */
147 SCIP_RELAXATION* relaxation, /**< global relaxation data */
148 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
149 );
150
151/** creates primal CIP solution, initialized to the current pseudo solution */
153 SCIP_SOL** sol, /**< pointer to primal CIP solution */
154 BMS_BLKMEM* blkmem, /**< block memory */
155 SCIP_SET* set, /**< global SCIP settings */
156 SCIP_STAT* stat, /**< problem statistics data */
157 SCIP_PROB* prob, /**< transformed problem data */
158 SCIP_PRIMAL* primal, /**< primal data */
159 SCIP_TREE* tree, /**< branch and bound tree, or NULL */
160 SCIP_LP* lp, /**< current LP data */
161 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
162 );
163
164/** creates primal CIP solution, initialized to the current solution */
166 SCIP_SOL** sol, /**< pointer to primal CIP solution */
167 BMS_BLKMEM* blkmem, /**< block memory */
168 SCIP_SET* set, /**< global SCIP settings */
169 SCIP_STAT* stat, /**< problem statistics data */
170 SCIP_PROB* prob, /**< transformed problem data */
171 SCIP_PRIMAL* primal, /**< primal data */
172 SCIP_TREE* tree, /**< branch and bound tree */
173 SCIP_LP* lp, /**< current LP data */
174 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
175 );
176
177/** creates partial primal CIP solution, initialized to unknown values */
179 SCIP_SOL** sol, /**< pointer to primal CIP solution */
180 BMS_BLKMEM* blkmem, /**< block memory */
181 SCIP_SET* set, /**< global SCIP settings */
182 SCIP_STAT* stat, /**< problem statistics data */
183 SCIP_PRIMAL* primal, /**< primal data */
184 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
185 );
186
187/** creates primal CIP solution, initialized to unknown values */
189 SCIP_SOL** sol, /**< pointer to primal CIP solution */
190 BMS_BLKMEM* blkmem, /**< block memory */
191 SCIP_SET* set, /**< global SCIP settings */
192 SCIP_STAT* stat, /**< problem statistics data */
193 SCIP_PRIMAL* primal, /**< primal data */
194 SCIP_TREE* tree, /**< branch and bound tree */
195 SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
196 );
197
198/** frees primal CIP solution */
200 SCIP_SOL** sol, /**< pointer to primal CIP solution */
201 BMS_BLKMEM* blkmem, /**< block memory */
202 SCIP_PRIMAL* primal /**< primal data */
203 );
204
205/** copies current LP solution into CIP solution by linking */
207 SCIP_SOL* sol, /**< primal CIP solution */
208 SCIP_SET* set, /**< global SCIP settings */
209 SCIP_STAT* stat, /**< problem statistics data */
210 SCIP_PROB* prob, /**< transformed problem data */
211 SCIP_TREE* tree, /**< branch and bound tree */
212 SCIP_LP* lp /**< current LP data */
213 );
214
215/** copies current NLP solution into CIP solution by linking */
217 SCIP_SOL* sol, /**< primal CIP solution */
218 SCIP_STAT* stat, /**< problem statistics data */
219 SCIP_TREE* tree, /**< branch and bound tree */
220 SCIP_NLP* nlp /**< current NLP data */
221 );
222
223/** copies current relaxation solution into CIP solution by linking */
225 SCIP_SOL* sol, /**< primal CIP solution */
226 SCIP_SET* set, /**< global SCIP settings */
227 SCIP_STAT* stat, /**< problem statistics data */
228 SCIP_TREE* tree, /**< branch and bound tree */
229 SCIP_RELAXATION* relaxation /**< global relaxation data */
230 );
231
232/** copies current pseudo solution into CIP solution by linking */
234 SCIP_SOL* sol, /**< primal CIP solution */
235 SCIP_SET* set, /**< global SCIP settings */
236 SCIP_STAT* stat, /**< problem statistics data */
237 SCIP_PROB* prob, /**< transformed problem data */
238 SCIP_TREE* tree, /**< branch and bound tree, or NULL */
239 SCIP_LP* lp /**< current LP data */
240 );
241
242/** copies current solution (LP or pseudo solution) into CIP solution by linking */
244 SCIP_SOL* sol, /**< primal CIP solution */
245 SCIP_SET* set, /**< global SCIP settings */
246 SCIP_STAT* stat, /**< problem statistics data */
247 SCIP_PROB* prob, /**< transformed problem data */
248 SCIP_TREE* tree, /**< branch and bound tree */
249 SCIP_LP* lp /**< current LP data */
250 );
251
252/** clears primal CIP solution */
254 SCIP_SOL* sol, /**< primal CIP solution */
255 SCIP_STAT* stat, /**< problem statistics data */
256 SCIP_TREE* tree /**< branch and bound tree */
257 );
258
259/** declares all entries in the primal CIP solution to be unknown */
261 SCIP_SOL* sol, /**< primal CIP solution */
262 SCIP_STAT* stat, /**< problem statistics data */
263 SCIP_TREE* tree /**< branch and bound tree */
264 );
265
266/** stores solution values of variables in solution's own array */
268 SCIP_SOL* sol, /**< primal CIP solution */
269 SCIP_SET* set, /**< global SCIP settings */
270 SCIP_PROB* prob /**< transformed problem data */
271 );
272
273/** sets value of variable in primal CIP solution */
275 SCIP_SOL* sol, /**< primal CIP solution */
276 SCIP_SET* set, /**< global SCIP settings */
277 SCIP_STAT* stat, /**< problem statistics data */
278 SCIP_TREE* tree, /**< branch and bound tree */
279 SCIP_VAR* var, /**< variable to add to solution */
280 SCIP_Real val /**< solution value of variable */
281 );
282
283/** increases value of variable in primal CIP solution */
285 SCIP_SOL* sol, /**< primal CIP solution */
286 SCIP_SET* set, /**< global SCIP settings */
287 SCIP_STAT* stat, /**< problem statistics data */
288 SCIP_TREE* tree, /**< branch and bound tree */
289 SCIP_VAR* var, /**< variable to increase solution value for */
290 SCIP_Real incval /**< increment for solution value of variable */
291 );
292
293/** returns value of variable in primal CIP solution */
295 SCIP_SOL* sol, /**< primal CIP solution */
296 SCIP_SET* set, /**< global SCIP settings */
297 SCIP_STAT* stat, /**< problem statistics data */
298 SCIP_VAR* var /**< variable to get value for */
299 );
300
301/** returns value of variable in primal ray represented by primal CIP solution */
303 SCIP_SOL* sol, /**< primal CIP solution, representing a primal ray */
304 SCIP_SET* set, /**< global SCIP settings */
305 SCIP_STAT* stat, /**< problem statistics data */
306 SCIP_VAR* var /**< variable to get value for */
307 );
308
309
310/** gets objective value of primal CIP solution in transformed problem */
312 SCIP_SOL* sol, /**< primal CIP solution */
313 SCIP_SET* set, /**< global SCIP settings */
314 SCIP_PROB* transprob, /**< tranformed problem data */
315 SCIP_PROB* origprob /**< original problem data */
316 );
317
318/** updates primal solutions after a change in a variable's objective value */
320 SCIP_SOL* sol, /**< primal CIP solution */
321 SCIP_VAR* var, /**< problem variable */
322 SCIP_Real oldobj, /**< old objective value */
323 SCIP_Real newobj /**< new objective value */
324 );
325
326/* mark the given solution as partial solution */
328 SCIP_SOL* sol, /**< primal CIP solution */
329 SCIP_SET* set, /**< global SCIP settings */
330 SCIP_STAT* stat, /**< problem statistics */
331 SCIP_VAR** vars, /**< problem variables */
332 int nvars /**< number of problem variables */
333 );
334
335/** checks solution for feasibility in original problem without adding it to the solution store
336 *
337 * We first check the variable bounds. Then we loop over all constraint handlers and constraints, checking each in the
338 * order of their check priority.
339 */
341 SCIP_SOL* sol, /**< primal CIP solution */
342 SCIP_SET* set, /**< global SCIP settings */
343 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
344 BMS_BLKMEM* blkmem, /**< block memory */
345 SCIP_STAT* stat, /**< problem statistics */
346 SCIP_PROB* prob, /**< transformed problem data */
347 SCIP_PRIMAL* primal, /**< primal data */
348 SCIP_Bool printreason, /**< Should the reason for the violation be printed? */
349 SCIP_Bool completely, /**< Should all violations be checked if printreason is true? */
350 SCIP_Bool checkbounds, /**< Should the bounds of the variables be checked? */
351 SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
352 SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
353 SCIP_Bool checkmodifiable, /**< have modifiable constraint to be checked? */
354 SCIP_Bool* feasible /**< stores whether given solution is feasible */
355 );
356
357/** checks primal CIP solution for feasibility
358 *
359 * @note The difference between SCIPsolCheck() and SCIPcheckSolOrig() is that modifiable constraints are handled
360 * differently. There might be some variables which do not have an original counter part (e.g. in
361 * branch-and-price). Therefore, modifiable constraints can not be double-checked in the original space.
362 */
364 SCIP_SOL* sol, /**< primal CIP solution */
365 SCIP_SET* set, /**< global SCIP settings */
366 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
367 BMS_BLKMEM* blkmem, /**< block memory */
368 SCIP_STAT* stat, /**< problem statistics */
369 SCIP_PROB* prob, /**< transformed problem data */
370 SCIP_Bool printreason, /**< Should all reasons of violations be printed? */
371 SCIP_Bool completely, /**< Should all violations be checked? */
372 SCIP_Bool checkbounds, /**< Should the bounds of the variables be checked? */
373 SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
374 SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
375 SCIP_Bool* feasible /**< stores whether solution is feasible */
376 );
377
378/** try to round given solution */
380 SCIP_SOL* sol, /**< primal solution */
381 SCIP_SET* set, /**< global SCIP settings */
382 SCIP_STAT* stat, /**< problem statistics data */
383 SCIP_PROB* prob, /**< transformed problem data */
384 SCIP_TREE* tree, /**< branch and bound tree */
385 SCIP_Bool* success /**< pointer to store whether rounding was successful */
386 );
387
388/** updates the solution value sums in variables by adding the value in the given solution */
390 SCIP_SOL* sol, /**< primal CIP solution */
391 SCIP_SET* set, /**< global SCIP settings */
392 SCIP_STAT* stat, /**< problem statistics data */
393 SCIP_PROB* prob, /**< transformed problem data */
394 SCIP_Real weight /**< weight of solution in weighted average */
395 );
396
397/** retransforms solution to original problem space */
399 SCIP_SOL* sol, /**< primal CIP solution */
400 SCIP_SET* set, /**< global SCIP settings */
401 SCIP_STAT* stat, /**< problem statistics data */
402 SCIP_PROB* origprob, /**< original problem */
403 SCIP_PROB* transprob, /**< transformed problem */
404 SCIP_Bool* hasinfval /**< pointer to store whether the solution has infinite values */
405 );
406
407/** recomputes the objective value of an original solution, e.g., when transferring solutions
408 * from the solution pool (objective coefficients might have changed in the meantime)
409 */
411 SCIP_SOL* sol, /**< primal CIP solution */
412 SCIP_SET* set, /**< global SCIP settings */
413 SCIP_STAT* stat, /**< problem statistics data */
414 SCIP_PROB* origprob /**< original problem */
415 );
416
417
418/** returns whether the given solutions in transformed space are equal */
420 SCIP_SOL* sol1, /**< first primal CIP solution */
421 SCIP_SOL* sol2, /**< second primal CIP solution */
422 SCIP_SET* set, /**< global SCIP settings */
423 SCIP_STAT* stat, /**< problem statistics data */
424 SCIP_PROB* origprob, /**< original problem */
425 SCIP_PROB* transprob /**< transformed problem after presolve */
426 );
427
428/** outputs non-zero elements of solution to file stream */
430 SCIP_SOL* sol, /**< primal CIP solution */
431 SCIP_SET* set, /**< global SCIP settings */
432 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
433 SCIP_STAT* stat, /**< problem statistics data */
434 SCIP_PROB* prob, /**< problem data (original or transformed) */
435 SCIP_PROB* transprob, /**< transformed problem data or NULL (to display priced variables) */
436 FILE* file, /**< output file (or NULL for standard output) */
437 SCIP_Bool mipstart, /**< should only discrete variables be printed? */
438 SCIP_Bool printzeros /**< should variables set to zero be printed? */
439 );
440
441/** outputs non-zero elements of solution representing a ray to file stream */
443 SCIP_SOL* sol, /**< primal CIP solution */
444 SCIP_SET* set, /**< global SCIP settings */
445 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
446 SCIP_STAT* stat, /**< problem statistics data */
447 SCIP_PROB* prob, /**< problem data (original or transformed) */
448 SCIP_PROB* transprob, /**< transformed problem data or NULL (to display priced variables) */
449 FILE* file, /**< output file (or NULL for standard output) */
450 SCIP_Bool printzeros /**< should variables set to zero be printed? */
451 );
452
453
454/** reset violations of a solution */
456 SCIP_SOL* sol /**< primal CIP solution */
457 );
458
459/** update integrality violation of a solution */
461 SCIP_SOL* sol, /**< primal CIP solution */
462 SCIP_Real absviolintegrality /**< absolute violation of integrality */
463 );
464
465/** update bound violation of a solution */
467 SCIP_SOL* sol, /**< primal CIP solution */
468 SCIP_Real absviolbounds, /**< absolute violation of bounds */
469 SCIP_Real relviolbounds /**< relative violation of bounds */
470 );
471
472/** update LP row violation of a solution */
474 SCIP_SOL* sol, /**< primal CIP solution */
475 SCIP_Real absviollprows, /**< absolute violation of LP rows */
476 SCIP_Real relviollprows /**< relative violation of LP rows */
477 );
478
479/** update constraint violation of a solution */
481 SCIP_SOL* sol, /**< primal CIP solution */
482 SCIP_Real absviolcons, /**< absolute violation of constraint */
483 SCIP_Real relviolcons /**< relative violation of constraint */
484 );
485
486/** update violation of a constraint that is represented in the LP */
488 SCIP_SOL* sol, /**< primal CIP solution */
489 SCIP_Real absviol, /**< absolute violation of constraint */
490 SCIP_Real relviol /**< relative violation of constraint */
491 );
492
493
494
495/* In debug mode, the following methods are implemented as function calls to ensure
496 * type validity.
497 */
498
499/** adds value to the objective value of a given original primal CIP solution */
501 SCIP_SOL* sol, /**< primal CIP solution */
502 SCIP_Real addval /**< offset value to add */
503 );
504
505/** gets current position of solution in array of existing solutions of primal data */
507 SCIP_SOL* sol /**< primal CIP solution */
508 );
509
510/** sets current position of solution in array of existing solutions of primal data */
512 SCIP_SOL* sol, /**< primal CIP solution */
513 int primalindex /**< new primal index of solution */
514 );
515
516#ifdef NDEBUG
517
518/* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
519 * speed up the algorithms.
520 */
521
522#define SCIPsolOrigAddObjval(sol, addval) ((sol)->obj += (addval))
523#define SCIPsolGetPrimalIndex(sol) ((sol)->primalindex)
524#define SCIPsolSetPrimalIndex(sol,idx) { (sol)->primalindex = idx; }
525
526#endif
527
528#ifdef __cplusplus
529}
530#endif
531
532#endif
common defines and data types used in all packages of SCIP
#define SCIP_Bool
Definition def.h:91
#define SCIP_Real
Definition def.h:172
static SCIP_SOL * sol
int nvars
SCIP_VAR * var
SCIP_Real newobj
SCIP_Real oldobj
static SCIP_VAR ** vars
memory allocation routines
struct BMS_BlkMem BMS_BLKMEM
Definition memory.h:437
public methods for primal CIP solutions
void SCIPsolUpdateVarObj(SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
Definition sol.c:1588
SCIP_RETCODE SCIPsolCreateRelaxSol(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_RELAXATION *relaxation, SCIP_HEUR *heur)
Definition sol.c:652
void SCIPsolUpdateConsViolation(SCIP_SOL *sol, SCIP_Real absviolcons, SCIP_Real relviolcons)
Definition sol.c:2587
SCIP_RETCODE SCIPsolLinkPseudoSol(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp)
Definition sol.c:959
void SCIPsolSetPrimalIndex(SCIP_SOL *sol, int primalindex)
Definition sol.c:2824
SCIP_RETCODE SCIPsolCreatePartial(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_HEUR *heur)
Definition sol.c:730
SCIP_RETCODE SCIPsolCreateUnknown(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_HEUR *heur)
Definition sol.c:766
void SCIPsolUpdateBoundViolation(SCIP_SOL *sol, SCIP_Real absviolbounds, SCIP_Real relviolbounds)
Definition sol.c:2561
int SCIPsolGetPrimalIndex(SCIP_SOL *sol)
Definition sol.c:2814
SCIP_RETCODE SCIPsolCreateNLPSol(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_NLP *nlp, SCIP_HEUR *heur)
Definition sol.c:631
SCIP_RETCODE SCIPsolLinkCurrentSol(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp)
Definition sol.c:988
SCIP_RETCODE SCIPsolCheck(SCIP_SOL *sol, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *feasible)
Definition sol.c:1838
SCIP_RETCODE SCIPsolMarkPartial(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR **vars, int nvars)
Definition sol.c:1607
SCIP_RETCODE SCIPsolCreateOriginal(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_HEUR *heur)
Definition sol.c:325
SCIP_RETCODE SCIPsolAdjustImplicitSolVals(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_Bool uselprows)
Definition sol.c:473
SCIP_RETCODE SCIPsolFree(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_PRIMAL *primal)
Definition sol.c:801
void SCIPsolRecomputeObj(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob)
Definition sol.c:2186
void SCIPsolUpdateIntegralityViolation(SCIP_SOL *sol, SCIP_Real absviolintegrality)
Definition sol.c:2550
void SCIPsolUpdateLPRowViolation(SCIP_SOL *sol, SCIP_Real absviollprows, SCIP_Real relviollprows)
Definition sol.c:2574
SCIP_RETCODE SCIPsolIncVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_VAR *var, SCIP_Real incval)
Definition sol.c:1296
SCIP_RETCODE SCIPsolLinkNLPSol(SCIP_SOL *sol, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_NLP *nlp)
Definition sol.c:878
SCIP_RETCODE SCIPsolRetransform(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob, SCIP_Bool *hasinfval)
Definition sol.c:2059
SCIP_RETCODE SCIPsolCreateCurrentSol(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_HEUR *heur)
Definition sol.c:703
SCIP_RETCODE SCIPsolRound(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_Bool *success)
Definition sol.c:1959
SCIP_RETCODE SCIPsolTransform(SCIP_SOL *sol, SCIP_SOL **transsol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PRIMAL *primal)
Definition sol.c:426
SCIP_RETCODE SCIPsolSetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_VAR *var, SCIP_Real val)
Definition sol.c:1077
SCIP_RETCODE SCIPsolCreatePseudoSol(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_HEUR *heur)
Definition sol.c:678
SCIP_RETCODE SCIPsolClear(SCIP_SOL *sol, SCIP_STAT *stat, SCIP_TREE *tree)
Definition sol.c:1014
SCIP_RETCODE SCIPsolCreateLPSol(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_LP *lp, SCIP_HEUR *heur)
Definition sol.c:608
SCIP_RETCODE SCIPsolSetUnknown(SCIP_SOL *sol, SCIP_STAT *stat, SCIP_TREE *tree)
Definition sol.c:1031
SCIP_RETCODE SCIPsolLinkRelaxSol(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_RELAXATION *relaxation)
Definition sol.c:929
SCIP_Real SCIPsolGetVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
Definition sol.c:1372
SCIP_RETCODE SCIPsolUnlink(SCIP_SOL *sol, SCIP_SET *set, SCIP_PROB *prob)
Definition sol.c:1048
SCIP_Real SCIPsolGetRayVal(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var)
Definition sol.c:1502
SCIP_RETCODE SCIPsolPrintRay(SCIP_SOL *sol, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PROB *transprob, FILE *file, SCIP_Bool printzeros)
Definition sol.c:2422
void SCIPsolResetViolations(SCIP_SOL *sol)
Definition sol.c:2534
SCIP_RETCODE SCIPsolLinkLPSol(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_LP *lp)
Definition sol.c:820
SCIP_Bool SCIPsolsAreEqual(SCIP_SOL *sol1, SCIP_SOL *sol2, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *origprob, SCIP_PROB *transprob)
Definition sol.c:2221
SCIP_Real SCIPsolGetObj(SCIP_SOL *sol, SCIP_SET *set, SCIP_PROB *transprob, SCIP_PROB *origprob)
Definition sol.c:1571
SCIP_RETCODE SCIPsolPrint(SCIP_SOL *sol, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PROB *transprob, FILE *file, SCIP_Bool mipstart, SCIP_Bool printzeros)
Definition sol.c:2286
void SCIPsolUpdateVarsum(SCIP_SOL *sol, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Real weight)
Definition sol.c:2031
SCIP_RETCODE SCIPsolCopy(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_SOL *sourcesol)
Definition sol.c:362
SCIP_RETCODE SCIPsolCheckOrig(SCIP_SOL *sol, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_PRIMAL *primal, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool checkmodifiable, SCIP_Bool *feasible)
Definition sol.c:1671
SCIP_RETCODE SCIPsolCreate(SCIP_SOL **sol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PRIMAL *primal, SCIP_TREE *tree, SCIP_HEUR *heur)
Definition sol.c:288
void SCIPsolUpdateLPConsViolation(SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
Definition sol.c:2600
void SCIPsolOrigAddObjval(SCIP_SOL *sol, SCIP_Real addval)
Definition sol.c:2752
type definitions for primal heuristics
struct SCIP_Heur SCIP_HEUR
Definition type_heur.h:76
type definitions for LP management
struct SCIP_Lp SCIP_LP
Definition type_lp.h:110
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
type definitions for NLP management
struct SCIP_Nlp SCIP_NLP
Definition type_nlp.h:42
type definitions for collecting primal CIP solutions and primal informations
struct SCIP_Primal SCIP_PRIMAL
Definition type_primal.h:39
type definitions for storing and manipulating the main problem
struct SCIP_Prob SCIP_PROB
Definition type_prob.h:52
struct SCIP_Relaxation SCIP_RELAXATION
Definition type_relax.h:46
type definitions for return codes for SCIP methods
enum SCIP_Retcode SCIP_RETCODE
type definitions for global SCIP settings
struct SCIP_Set SCIP_SET
Definition type_set.h:71
type definitions for storing primal CIP solutions
struct SCIP_Sol SCIP_SOL
Definition type_sol.h:57
type definitions for problem statistics
struct SCIP_Stat SCIP_STAT
Definition type_stat.h:69
type definitions for branch and bound tree
struct SCIP_Tree SCIP_TREE
Definition type_tree.h:65
type definitions for problem variables
struct SCIP_Var SCIP_VAR
Definition type_var.h:119