Scippy

SCIP

Solving Constraint Integer Programs

scip_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-2022 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file scip_sol.h
17  * @ingroup PUBLICCOREAPI
18  * @brief public methods for solutions
19  * @author Tobias Achterberg
20  * @author Timo Berthold
21  * @author Thorsten Koch
22  * @author Alexander Martin
23  * @author Marc Pfetsch
24  * @author Kati Wolter
25  * @author Gregor Hendel
26  * @author Leona Gottwald
27  */
28 
29 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
30 
31 #ifndef __SCIP_SCIP_SOL_H__
32 #define __SCIP_SCIP_SOL_H__
33 
34 
35 #include "scip/def.h"
36 #include "scip/type_cons.h"
37 #include "scip/type_heur.h"
38 #include "scip/type_retcode.h"
39 #include "scip/type_scip.h"
40 #include "scip/type_sol.h"
41 #include "scip/type_var.h"
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 /**@addtogroup PublicSolutionMethods
48  *
49  * @{
50  */
51 
52 /** creates a primal solution, initialized to zero
53  *
54  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
55  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
56  *
57  * @pre This method can be called if SCIP is in one of the following stages:
58  * - \ref SCIP_STAGE_PROBLEM
59  * - \ref SCIP_STAGE_TRANSFORMING
60  * - \ref SCIP_STAGE_TRANSFORMED
61  * - \ref SCIP_STAGE_INITPRESOLVE
62  * - \ref SCIP_STAGE_PRESOLVING
63  * - \ref SCIP_STAGE_EXITPRESOLVE
64  * - \ref SCIP_STAGE_PRESOLVED
65  * - \ref SCIP_STAGE_INITSOLVE
66  * - \ref SCIP_STAGE_SOLVING
67  */
68 SCIP_EXPORT
70  SCIP* scip, /**< SCIP data structure */
71  SCIP_SOL** sol, /**< pointer to store the solution */
72  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
73  );
74 
75 /** creates a primal solution, initialized to the current LP solution
76  *
77  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
78  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
79  *
80  * @pre This method can be called if SCIP is in one of the following stages:
81  * - \ref SCIP_STAGE_SOLVING
82  */
83 SCIP_EXPORT
85  SCIP* scip, /**< SCIP data structure */
86  SCIP_SOL** sol, /**< pointer to store the solution */
87  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
88  );
89 
90 /** creates a primal solution, initialized to the current NLP solution
91  *
92  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
93  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
94  *
95  * @pre This method can be called if SCIP is in one of the following stages:
96  * - \ref SCIP_STAGE_SOLVING
97  */
98 SCIP_EXPORT
100  SCIP* scip, /**< SCIP data structure */
101  SCIP_SOL** sol, /**< pointer to store the solution */
102  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
103  );
104 
105 /** creates a primal solution, initialized to the current relaxation solution
106  *
107  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
108  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
109  *
110  * @pre This method can be called if SCIP is in one of the following stages:
111  * - \ref SCIP_STAGE_SOLVING
112  */
113 SCIP_EXPORT
115  SCIP* scip, /**< SCIP data structure */
116  SCIP_SOL** sol, /**< pointer to store the solution */
117  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
118  );
119 
120 /** creates a primal solution, initialized to the current pseudo solution
121  *
122  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
123  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
124  *
125  * @pre This method can be called if SCIP is in one of the following stages:
126  * - \ref SCIP_STAGE_SOLVING
127  */
128 SCIP_EXPORT
130  SCIP* scip, /**< SCIP data structure */
131  SCIP_SOL** sol, /**< pointer to store the solution */
132  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
133  );
134 
135 /** creates a primal solution, initialized to the current LP or pseudo solution, depending on whether the LP was solved
136  * at the current node
137  *
138  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
139  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
140  *
141  * @pre This method can be called if SCIP is in one of the following stages:
142  * - \ref SCIP_STAGE_SOLVING
143  */
144 SCIP_EXPORT
146  SCIP* scip, /**< SCIP data structure */
147  SCIP_SOL** sol, /**< pointer to store the solution */
148  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
149  );
150 
151 /** creates a partial primal solution, initialized to unknown values
152  *
153  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
154  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
155  *
156  * @pre This method can be called if SCIP is in one of the following stages:
157  * - \ref SCIP_STAGE_PROBLEM
158  */
159 SCIP_EXPORT
161  SCIP* scip, /**< SCIP data structure */
162  SCIP_SOL** sol, /**< pointer to store the solution */
163  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
164  );
165 
166 /** creates a primal solution, initialized to unknown values
167  *
168  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
169  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
170  *
171  * @pre This method can be called if SCIP is in one of the following stages:
172  * - \ref SCIP_STAGE_TRANSFORMING
173  * - \ref SCIP_STAGE_TRANSFORMED
174  * - \ref SCIP_STAGE_INITPRESOLVE
175  * - \ref SCIP_STAGE_PRESOLVING
176  * - \ref SCIP_STAGE_EXITPRESOLVE
177  * - \ref SCIP_STAGE_PRESOLVED
178  * - \ref SCIP_STAGE_INITSOLVE
179  * - \ref SCIP_STAGE_SOLVING
180  */
181 SCIP_EXPORT
183  SCIP* scip, /**< SCIP data structure */
184  SCIP_SOL** sol, /**< pointer to store the solution */
185  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
186  );
187 
188 /** creates a primal solution living in the original problem space, initialized to zero;
189  * a solution in original space allows to set original variables to values that would be invalid in the
190  * transformed problem due to preprocessing fixings or aggregations
191  *
192  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
193  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
194  *
195  * @pre This method can be called if SCIP is in one of the following stages:
196  * - \ref SCIP_STAGE_PROBLEM
197  * - \ref SCIP_STAGE_TRANSFORMING
198  * - \ref SCIP_STAGE_TRANSFORMED
199  * - \ref SCIP_STAGE_INITPRESOLVE
200  * - \ref SCIP_STAGE_PRESOLVING
201  * - \ref SCIP_STAGE_EXITPRESOLVE
202  * - \ref SCIP_STAGE_PRESOLVED
203  * - \ref SCIP_STAGE_INITSOLVE
204  * - \ref SCIP_STAGE_SOLVING
205  */
206 SCIP_EXPORT
208  SCIP* scip, /**< SCIP data structure */
209  SCIP_SOL** sol, /**< pointer to store the solution */
210  SCIP_HEUR* heur /**< heuristic that found the solution (or NULL if it's from the tree) */
211  );
212 
213 /** creates a copy of a primal solution; note that a copy of a linked solution is also linked and needs to be unlinked
214  * if it should stay unaffected from changes in the LP or pseudo solution
215  *
216  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
217  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
218  *
219  * @pre This method can be called if SCIP is in one of the following stages:
220  * - \ref SCIP_STAGE_PROBLEM
221  * - \ref SCIP_STAGE_TRANSFORMING
222  * - \ref SCIP_STAGE_TRANSFORMED
223  * - \ref SCIP_STAGE_INITPRESOLVE
224  * - \ref SCIP_STAGE_PRESOLVING
225  * - \ref SCIP_STAGE_EXITPRESOLVE
226  * - \ref SCIP_STAGE_PRESOLVED
227  * - \ref SCIP_STAGE_INITSOLVE
228  * - \ref SCIP_STAGE_SOLVING
229  */
230 SCIP_EXPORT
232  SCIP* scip, /**< SCIP data structure */
233  SCIP_SOL** sol, /**< pointer to store the solution */
234  SCIP_SOL* sourcesol /**< primal CIP solution to copy */
235  );
236 
237 /** creates a copy of a solution in the original primal solution space
238  *
239  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
240  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
241  *
242  * @pre This method can be called if SCIP is in one of the following stages:
243  * - \ref SCIP_STAGE_PROBLEM
244  * - \ref SCIP_STAGE_TRANSFORMING
245  * - \ref SCIP_STAGE_TRANSFORMED
246  * - \ref SCIP_STAGE_INITPRESOLVE
247  * - \ref SCIP_STAGE_PRESOLVING
248  * - \ref SCIP_STAGE_EXITPRESOLVE
249  * - \ref SCIP_STAGE_PRESOLVED
250  * - \ref SCIP_STAGE_INITSOLVE
251  * - \ref SCIP_STAGE_SOLVING
252  * - \ref SCIP_STAGE_SOLVED
253  * - \ref SCIP_STAGE_EXITSOLVE
254  * - \ref SCIP_STAGE_FREETRANS
255  */
256 SCIP_EXPORT
258  SCIP* scip, /**< SCIP data structure */
259  SCIP_SOL** sol, /**< pointer to store the solution */
260  SCIP_SOL* sourcesol /**< primal CIP solution to copy */
261  );
262 
263 /** creates a copy of a primal solution, thereby replacing infinite fixings of variables by finite values;
264  * the copy is always defined in the original variable space;
265  * success indicates whether the objective value of the solution was changed by removing infinite values
266  *
267  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
268  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
269  *
270  * @pre This method can be called if SCIP is in one of the following stages:
271  * - \ref SCIP_STAGE_PROBLEM
272  * - \ref SCIP_STAGE_TRANSFORMING
273  * - \ref SCIP_STAGE_TRANSFORMED
274  * - \ref SCIP_STAGE_INITPRESOLVE
275  * - \ref SCIP_STAGE_PRESOLVING
276  * - \ref SCIP_STAGE_EXITPRESOLVE
277  * - \ref SCIP_STAGE_PRESOLVED
278  * - \ref SCIP_STAGE_INITSOLVE
279  * - \ref SCIP_STAGE_SOLVING
280  * - \ref SCIP_STAGE_SOLVED
281  * - \ref SCIP_STAGE_EXITSOLVE
282  */
283 SCIP_EXPORT
285  SCIP* scip, /**< SCIP data structure */
286  SCIP_SOL** sol, /**< pointer to store the solution */
287  SCIP_SOL* sourcesol, /**< primal CIP solution to copy */
288  SCIP_Bool* success /**< does the finite solution have the same objective value? */
289  );
290 
291 /** frees primal CIP solution
292  *
293  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
294  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
295  *
296  * @pre This method can be called if SCIP is in one of the following stages:
297  * - \ref SCIP_STAGE_PROBLEM
298  * - \ref SCIP_STAGE_TRANSFORMING
299  * - \ref SCIP_STAGE_TRANSFORMED
300  * - \ref SCIP_STAGE_INITPRESOLVE
301  * - \ref SCIP_STAGE_PRESOLVING
302  * - \ref SCIP_STAGE_EXITPRESOLVE
303  * - \ref SCIP_STAGE_PRESOLVED
304  * - \ref SCIP_STAGE_INITSOLVE
305  * - \ref SCIP_STAGE_SOLVING
306  * - \ref SCIP_STAGE_SOLVED
307  * - \ref SCIP_STAGE_EXITSOLVE
308  * - \ref SCIP_STAGE_FREETRANS
309  */
310 SCIP_EXPORT
312  SCIP* scip, /**< SCIP data structure */
313  SCIP_SOL** sol /**< pointer to the solution */
314  );
315 
316 /** links a primal solution to the current LP solution
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 SCIP is in one of the following stages:
322  * - \ref SCIP_STAGE_SOLVING
323  */
324 SCIP_EXPORT
326  SCIP* scip, /**< SCIP data structure */
327  SCIP_SOL* sol /**< primal solution */
328  );
329 
330 /** links a primal solution to the current NLP solution
331  *
332  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
333  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
334  *
335  * @pre This method can be called if SCIP is in one of the following stages:
336  * - \ref SCIP_STAGE_SOLVING
337  */
338 SCIP_EXPORT
340  SCIP* scip, /**< SCIP data structure */
341  SCIP_SOL* sol /**< primal solution */
342  );
343 
344 /** links a primal solution to the current relaxation solution
345  *
346  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
347  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
348  *
349  * @pre This method can be called if SCIP is in one of the following stages:
350  * - \ref SCIP_STAGE_SOLVING
351  */
352 SCIP_EXPORT
354  SCIP* scip, /**< SCIP data structure */
355  SCIP_SOL* sol /**< primal solution */
356  );
357 
358 /** links a primal solution to the current pseudo solution
359  *
360  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
361  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
362  *
363  * @pre This method can be called if SCIP is in one of the following stages:
364  * - \ref SCIP_STAGE_PRESOLVING
365  * - \ref SCIP_STAGE_SOLVING
366  */
367 SCIP_EXPORT
369  SCIP* scip, /**< SCIP data structure */
370  SCIP_SOL* sol /**< primal solution */
371  );
372 
373 /** links a primal solution to the current LP or pseudo solution
374  *
375  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
376  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
377  *
378  * @pre This method can be called if SCIP is in one of the following stages:
379  * - \ref SCIP_STAGE_SOLVING
380  */
381 SCIP_EXPORT
383  SCIP* scip, /**< SCIP data structure */
384  SCIP_SOL* sol /**< primal solution */
385  );
386 
387 /** clears a primal solution
388  *
389  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
390  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
391  *
392  * @pre This method can be called if SCIP is in one of the following stages:
393  * - \ref SCIP_STAGE_PROBLEM
394  * - \ref SCIP_STAGE_TRANSFORMING
395  * - \ref SCIP_STAGE_TRANSFORMED
396  * - \ref SCIP_STAGE_INITPRESOLVE
397  * - \ref SCIP_STAGE_PRESOLVING
398  * - \ref SCIP_STAGE_EXITPRESOLVE
399  * - \ref SCIP_STAGE_PRESOLVED
400  * - \ref SCIP_STAGE_INITSOLVE
401  * - \ref SCIP_STAGE_SOLVING
402  * - \ref SCIP_STAGE_SOLVED
403  * - \ref SCIP_STAGE_EXITSOLVE
404  * - \ref SCIP_STAGE_FREETRANS
405  */
406 SCIP_EXPORT
408  SCIP* scip, /**< SCIP data structure */
409  SCIP_SOL* sol /**< primal solution */
410  );
411 
412 /** stores solution values of variables in solution's own array
413  *
414  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
415  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
416  *
417  * @pre This method can be called if SCIP is in one of the following stages:
418  * - \ref SCIP_STAGE_TRANSFORMING
419  * - \ref SCIP_STAGE_TRANSFORMED
420  * - \ref SCIP_STAGE_PRESOLVING
421  * - \ref SCIP_STAGE_PRESOLVED
422  * - \ref SCIP_STAGE_INITSOLVE
423  * - \ref SCIP_STAGE_SOLVING
424  * - \ref SCIP_STAGE_SOLVED
425  * - \ref SCIP_STAGE_EXITSOLVE
426  * - \ref SCIP_STAGE_FREETRANS
427  */
428 SCIP_EXPORT
430  SCIP* scip, /**< SCIP data structure */
431  SCIP_SOL* sol /**< primal solution */
432  );
433 
434 /** sets value of variable in primal CIP solution
435  *
436  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
437  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
438  *
439  * @pre This method can be called if SCIP is in one of the following stages:
440  * - \ref SCIP_STAGE_PROBLEM
441  * - \ref SCIP_STAGE_TRANSFORMING
442  * - \ref SCIP_STAGE_TRANSFORMED
443  * - \ref SCIP_STAGE_INITPRESOLVE
444  * - \ref SCIP_STAGE_PRESOLVING
445  * - \ref SCIP_STAGE_EXITPRESOLVE
446  * - \ref SCIP_STAGE_PRESOLVED
447  * - \ref SCIP_STAGE_INITSOLVE
448  * - \ref SCIP_STAGE_SOLVING
449  * - \ref SCIP_STAGE_SOLVED
450  * - \ref SCIP_STAGE_EXITSOLVE
451  * - \ref SCIP_STAGE_FREETRANS
452  */
453 SCIP_EXPORT
455  SCIP* scip, /**< SCIP data structure */
456  SCIP_SOL* sol, /**< primal solution */
457  SCIP_VAR* var, /**< variable to add to solution */
458  SCIP_Real val /**< solution value of variable */
459  );
460 
461 /** sets values of multiple variables in primal CIP solution
462  *
463  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
464  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
465  *
466  * @pre This method can be called if SCIP is in one of the following stages:
467  * - \ref SCIP_STAGE_PROBLEM
468  * - \ref SCIP_STAGE_TRANSFORMING
469  * - \ref SCIP_STAGE_TRANSFORMED
470  * - \ref SCIP_STAGE_INITPRESOLVE
471  * - \ref SCIP_STAGE_PRESOLVING
472  * - \ref SCIP_STAGE_EXITPRESOLVE
473  * - \ref SCIP_STAGE_PRESOLVED
474  * - \ref SCIP_STAGE_INITSOLVE
475  * - \ref SCIP_STAGE_SOLVING
476  * - \ref SCIP_STAGE_SOLVED
477  * - \ref SCIP_STAGE_EXITSOLVE
478  * - \ref SCIP_STAGE_FREETRANS
479  */
480 SCIP_EXPORT
482  SCIP* scip, /**< SCIP data structure */
483  SCIP_SOL* sol, /**< primal solution */
484  int nvars, /**< number of variables to set solution value for */
485  SCIP_VAR** vars, /**< array with variables to add to solution */
486  SCIP_Real* vals /**< array with solution values of variables */
487  );
488 
489 /** increases value of variable in primal CIP solution
490  *
491  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
492  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
493  *
494  * @pre This method can be called if SCIP is in one of the following stages:
495  * - \ref SCIP_STAGE_PROBLEM
496  * - \ref SCIP_STAGE_TRANSFORMING
497  * - \ref SCIP_STAGE_TRANSFORMED
498  * - \ref SCIP_STAGE_INITPRESOLVE
499  * - \ref SCIP_STAGE_PRESOLVING
500  * - \ref SCIP_STAGE_EXITPRESOLVE
501  * - \ref SCIP_STAGE_PRESOLVED
502  * - \ref SCIP_STAGE_INITSOLVE
503  * - \ref SCIP_STAGE_SOLVING
504  * - \ref SCIP_STAGE_SOLVED
505  * - \ref SCIP_STAGE_EXITSOLVE
506  * - \ref SCIP_STAGE_FREETRANS
507  */
508 SCIP_EXPORT
510  SCIP* scip, /**< SCIP data structure */
511  SCIP_SOL* sol, /**< primal solution */
512  SCIP_VAR* var, /**< variable to increase solution value for */
513  SCIP_Real incval /**< increment for solution value of variable */
514  );
515 
516 /** returns value of variable in primal CIP solution, or in current LP/pseudo solution
517  *
518  * @return value of variable in primal CIP solution, or in current LP/pseudo solution
519  *
520  * @pre In case the solution pointer @p sol is @b NULL, that means it is asked for the LP or pseudo solution, this method
521  * can only be called if @p scip is in the solving stage \ref SCIP_STAGE_SOLVING. In any other case, this method
522  * can be called if @p scip is in one of the following stages:
523  * - \ref SCIP_STAGE_PROBLEM
524  * - \ref SCIP_STAGE_TRANSFORMING
525  * - \ref SCIP_STAGE_TRANSFORMED
526  * - \ref SCIP_STAGE_INITPRESOLVE
527  * - \ref SCIP_STAGE_PRESOLVING
528  * - \ref SCIP_STAGE_EXITPRESOLVE
529  * - \ref SCIP_STAGE_PRESOLVED
530  * - \ref SCIP_STAGE_INITSOLVE
531  * - \ref SCIP_STAGE_SOLVING
532  * - \ref SCIP_STAGE_SOLVED
533  * - \ref SCIP_STAGE_EXITSOLVE
534  * - \ref SCIP_STAGE_FREETRANS
535  */
536 SCIP_EXPORT
538  SCIP* scip, /**< SCIP data structure */
539  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
540  SCIP_VAR* var /**< variable to get value for */
541  );
542 
543 /** gets values of multiple variables in primal CIP solution
544  *
545  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
546  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
547  *
548  * @pre This method can be called if SCIP is in one of the following stages:
549  * - \ref SCIP_STAGE_PROBLEM
550  * - \ref SCIP_STAGE_TRANSFORMING
551  * - \ref SCIP_STAGE_TRANSFORMED
552  * - \ref SCIP_STAGE_INITPRESOLVE
553  * - \ref SCIP_STAGE_PRESOLVING
554  * - \ref SCIP_STAGE_EXITPRESOLVE
555  * - \ref SCIP_STAGE_PRESOLVED
556  * - \ref SCIP_STAGE_INITSOLVE
557  * - \ref SCIP_STAGE_SOLVING
558  * - \ref SCIP_STAGE_SOLVED
559  * - \ref SCIP_STAGE_EXITSOLVE
560  * - \ref SCIP_STAGE_FREETRANS
561  */
562 SCIP_EXPORT
564  SCIP* scip, /**< SCIP data structure */
565  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
566  int nvars, /**< number of variables to get solution value for */
567  SCIP_VAR** vars, /**< array with variables to get value for */
568  SCIP_Real* vals /**< array to store solution values of variables */
569  );
570 
571 /** returns objective value of primal CIP solution w.r.t. original problem, or current LP/pseudo objective value
572  *
573  * @return objective value of primal CIP solution w.r.t. original problem, or current LP/pseudo objective value
574  *
575  * @pre This method can be called if SCIP is in one of the following stages:
576  * - \ref SCIP_STAGE_PROBLEM
577  * - \ref SCIP_STAGE_TRANSFORMING
578  * - \ref SCIP_STAGE_TRANSFORMED
579  * - \ref SCIP_STAGE_INITPRESOLVE
580  * - \ref SCIP_STAGE_PRESOLVING
581  * - \ref SCIP_STAGE_EXITPRESOLVE
582  * - \ref SCIP_STAGE_PRESOLVED
583  * - \ref SCIP_STAGE_INITSOLVE
584  * - \ref SCIP_STAGE_SOLVING
585  * - \ref SCIP_STAGE_SOLVED
586  * - \ref SCIP_STAGE_EXITSOLVE
587  * - \ref SCIP_STAGE_FREETRANS
588  */
589 SCIP_EXPORT
591  SCIP* scip, /**< SCIP data structure */
592  SCIP_SOL* sol /**< primal solution, or NULL for current LP/pseudo objective value */
593  );
594 
595 /** returns transformed objective value of primal CIP solution, or transformed current LP/pseudo objective value
596  *
597  * @return transformed objective value of primal CIP solution, or transformed current LP/pseudo objective value
598  *
599  * @pre This method can be called if SCIP is in one of the following stages:
600  * - \ref SCIP_STAGE_TRANSFORMING
601  * - \ref SCIP_STAGE_TRANSFORMED
602  * - \ref SCIP_STAGE_INITPRESOLVE
603  * - \ref SCIP_STAGE_PRESOLVING
604  * - \ref SCIP_STAGE_EXITPRESOLVE
605  * - \ref SCIP_STAGE_PRESOLVED
606  * - \ref SCIP_STAGE_INITSOLVE
607  * - \ref SCIP_STAGE_SOLVING
608  * - \ref SCIP_STAGE_SOLVED
609  * - \ref SCIP_STAGE_EXITSOLVE
610  * - \ref SCIP_STAGE_FREETRANS
611  */
612 SCIP_EXPORT
614  SCIP* scip, /**< SCIP data structure */
615  SCIP_SOL* sol /**< primal solution, or NULL for current LP/pseudo objective value */
616  );
617 
618 /** recomputes the objective value of an original solution, e.g., when transferring solutions
619  * from the solution pool (objective coefficients might have changed in the meantime)
620  *
621  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
622  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
623  *
624  * @pre This method can be called if SCIP is in one of the following stages:
625  * - \ref SCIP_STAGE_PRESOLVING
626  * - \ref SCIP_STAGE_SOLVING
627  *
628  */
629 SCIP_EXPORT
631  SCIP* scip,
632  SCIP_SOL* sol
633  );
634 
635 /** maps original space objective value into transformed objective value
636  *
637  * @return transformed objective value
638  *
639  * @pre This method can be called if SCIP is in one of the following stages:
640  * - \ref SCIP_STAGE_TRANSFORMING
641  * - \ref SCIP_STAGE_TRANSFORMED
642  * - \ref SCIP_STAGE_INITPRESOLVE
643  * - \ref SCIP_STAGE_PRESOLVING
644  * - \ref SCIP_STAGE_EXITPRESOLVE
645  * - \ref SCIP_STAGE_PRESOLVED
646  * - \ref SCIP_STAGE_INITSOLVE
647  * - \ref SCIP_STAGE_SOLVING
648  * - \ref SCIP_STAGE_SOLVED
649  */
650 SCIP_EXPORT
652  SCIP* scip, /**< SCIP data structure */
653  SCIP_Real obj /**< original space objective value to transform */
654  );
655 
656 /** maps transformed objective value into original space
657  *
658  * @return objective value into original space
659  *
660  * @pre This method can be called if SCIP is in one of the following stages:
661  * - \ref SCIP_STAGE_TRANSFORMING
662  * - \ref SCIP_STAGE_TRANSFORMED
663  * - \ref SCIP_STAGE_INITPRESOLVE
664  * - \ref SCIP_STAGE_PRESOLVING
665  * - \ref SCIP_STAGE_EXITPRESOLVE
666  * - \ref SCIP_STAGE_PRESOLVED
667  * - \ref SCIP_STAGE_INITSOLVE
668  * - \ref SCIP_STAGE_SOLVING
669  * - \ref SCIP_STAGE_SOLVED
670  */
671 SCIP_EXPORT
673  SCIP* scip, /**< SCIP data structure */
674  SCIP_Real obj /**< transformed objective value to retransform in original space */
675  );
676 
677 /** gets clock time, when this solution was found
678  *
679  * @return clock time, when this solution was found
680  *
681  * @pre This method can be called if SCIP is in one of the following stages:
682  * - \ref SCIP_STAGE_TRANSFORMING
683  * - \ref SCIP_STAGE_TRANSFORMED
684  * - \ref SCIP_STAGE_INITPRESOLVE
685  * - \ref SCIP_STAGE_PRESOLVING
686  * - \ref SCIP_STAGE_EXITPRESOLVE
687  * - \ref SCIP_STAGE_PRESOLVED
688  * - \ref SCIP_STAGE_INITSOLVE
689  * - \ref SCIP_STAGE_SOLVING
690  * - \ref SCIP_STAGE_SOLVED
691  * - \ref SCIP_STAGE_EXITSOLVE
692  * - \ref SCIP_STAGE_FREETRANS
693  */
694 SCIP_EXPORT
696  SCIP* scip, /**< SCIP data structure */
697  SCIP_SOL* sol /**< primal solution */
698  );
699 
700 /** gets branch and bound run number, where this solution was found
701  *
702  * @return branch and bound run number, where this solution was found
703  *
704  * @pre This method can be called if SCIP is in one of the following stages:
705  * - \ref SCIP_STAGE_TRANSFORMING
706  * - \ref SCIP_STAGE_TRANSFORMED
707  * - \ref SCIP_STAGE_INITPRESOLVE
708  * - \ref SCIP_STAGE_PRESOLVING
709  * - \ref SCIP_STAGE_EXITPRESOLVE
710  * - \ref SCIP_STAGE_PRESOLVED
711  * - \ref SCIP_STAGE_INITSOLVE
712  * - \ref SCIP_STAGE_SOLVING
713  * - \ref SCIP_STAGE_SOLVED
714  * - \ref SCIP_STAGE_EXITSOLVE
715  * - \ref SCIP_STAGE_FREETRANS
716  */
717 SCIP_EXPORT
718 int SCIPgetSolRunnum(
719  SCIP* scip, /**< SCIP data structure */
720  SCIP_SOL* sol /**< primal solution */
721  );
722 
723 /** gets node number of the specific branch and bound run, where this solution was found
724  *
725  * @return node number of the specific branch and bound run, where this solution was found
726  *
727  * @pre This method can be called if SCIP is in one of the following stages:
728  * - \ref SCIP_STAGE_TRANSFORMING
729  * - \ref SCIP_STAGE_TRANSFORMED
730  * - \ref SCIP_STAGE_INITPRESOLVE
731  * - \ref SCIP_STAGE_PRESOLVING
732  * - \ref SCIP_STAGE_EXITPRESOLVE
733  * - \ref SCIP_STAGE_PRESOLVED
734  * - \ref SCIP_STAGE_INITSOLVE
735  * - \ref SCIP_STAGE_SOLVING
736  * - \ref SCIP_STAGE_SOLVED
737  * - \ref SCIP_STAGE_EXITSOLVE
738  * - \ref SCIP_STAGE_FREETRANS
739  */
740 SCIP_EXPORT
742  SCIP* scip, /**< SCIP data structure */
743  SCIP_SOL* sol /**< primal solution */
744  );
745 
746 /** gets heuristic, that found this solution (or NULL if it's from the tree)
747  *
748  * @return heuristic, that found this solution (or NULL if it's from the tree)
749  *
750  * @pre This method can be called if SCIP is in one of the following stages:
751  * - \ref SCIP_STAGE_TRANSFORMING
752  * - \ref SCIP_STAGE_TRANSFORMED
753  * - \ref SCIP_STAGE_INITPRESOLVE
754  * - \ref SCIP_STAGE_PRESOLVING
755  * - \ref SCIP_STAGE_EXITPRESOLVE
756  * - \ref SCIP_STAGE_PRESOLVED
757  * - \ref SCIP_STAGE_INITSOLVE
758  * - \ref SCIP_STAGE_SOLVING
759  * - \ref SCIP_STAGE_SOLVED
760  * - \ref SCIP_STAGE_EXITSOLVE
761  * - \ref SCIP_STAGE_FREETRANS
762  */
763 SCIP_EXPORT
765  SCIP* scip, /**< SCIP data structure */
766  SCIP_SOL* sol /**< primal solution */
767  );
768 
769 /** returns whether two given solutions are exactly equal
770  *
771  * @return returns whether two given solutions are exactly equal
772  *
773  * @pre This method can be called if SCIP is in one of the following stages:
774  * - \ref SCIP_STAGE_PROBLEM
775  * - \ref SCIP_STAGE_TRANSFORMING
776  * - \ref SCIP_STAGE_TRANSFORMED
777  * - \ref SCIP_STAGE_INITPRESOLVE
778  * - \ref SCIP_STAGE_PRESOLVING
779  * - \ref SCIP_STAGE_EXITPRESOLVE
780  * - \ref SCIP_STAGE_PRESOLVED
781  * - \ref SCIP_STAGE_INITSOLVE
782  * - \ref SCIP_STAGE_SOLVING
783  * - \ref SCIP_STAGE_SOLVED
784  * - \ref SCIP_STAGE_EXITSOLVE
785  * - \ref SCIP_STAGE_FREETRANS
786  */
787 SCIP_EXPORT
789  SCIP* scip, /**< SCIP data structure */
790  SCIP_SOL* sol1, /**< first primal CIP solution */
791  SCIP_SOL* sol2 /**< second primal CIP solution */
792  );
793 
794 /** adjusts solution values of implicit integer variables in handed solution. Solution objective value is not
795  * deteriorated by this method.
796  *
797  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
798  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
799  *
800  * @pre This method can be called if SCIP is in one of the following stages:
801  * - \ref SCIP_STAGE_SOLVING
802  */
803 SCIP_EXPORT
805  SCIP* scip, /**< SCIP data structure */
806  SCIP_SOL* sol, /**< primal CIP solution */
807  SCIP_Bool uselprows /**< should LP row information be considered for none-objective variables */
808  );
809 
810 /** outputs non-zero variables of solution in original problem space to the given file stream
811  *
812  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
813  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
814  *
815  * @pre In case the solution pointer @p sol is NULL (askinking for the current LP/pseudo solution), this method can be
816  * called if @p scip is in one of the following stages:
817  * - \ref SCIP_STAGE_PRESOLVING
818  * - \ref SCIP_STAGE_EXITPRESOLVE
819  * - \ref SCIP_STAGE_PRESOLVED
820  * - \ref SCIP_STAGE_INITSOLVE
821  * - \ref SCIP_STAGE_SOLVING
822  * - \ref SCIP_STAGE_SOLVED
823  * - \ref SCIP_STAGE_EXITSOLVE
824  *
825  * @pre In case the solution pointer @p sol is @b not NULL, this method can be called if @p scip is in one of the
826  * following stages:
827  * - \ref SCIP_STAGE_PROBLEM
828  * - \ref SCIP_STAGE_TRANSFORMED
829  * - \ref SCIP_STAGE_INITPRESOLVE
830  * - \ref SCIP_STAGE_PRESOLVING
831  * - \ref SCIP_STAGE_EXITPRESOLVE
832  * - \ref SCIP_STAGE_PRESOLVED
833  * - \ref SCIP_STAGE_INITSOLVE
834  * - \ref SCIP_STAGE_SOLVING
835  * - \ref SCIP_STAGE_SOLVED
836  * - \ref SCIP_STAGE_EXITSOLVE
837  */
838 SCIP_EXPORT
840  SCIP* scip, /**< SCIP data structure */
841  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
842  FILE* file, /**< output file (or NULL for standard output) */
843  SCIP_Bool printzeros /**< should variables set to zero be printed? */
844  );
845 
846 /** outputs non-zero variables of solution in transformed problem space to file stream
847  *
848  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
849  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
850  *
851  * @pre This method can be called if SCIP is in one of the following stages:
852  * - \ref SCIP_STAGE_TRANSFORMED
853  * - \ref SCIP_STAGE_INITPRESOLVE
854  * - \ref SCIP_STAGE_PRESOLVING
855  * - \ref SCIP_STAGE_EXITPRESOLVE
856  * - \ref SCIP_STAGE_PRESOLVED
857  * - \ref SCIP_STAGE_INITSOLVE
858  * - \ref SCIP_STAGE_SOLVING
859  * - \ref SCIP_STAGE_SOLVED
860  * - \ref SCIP_STAGE_EXITSOLVE
861  */
862 SCIP_EXPORT
864  SCIP* scip, /**< SCIP data structure */
865  SCIP_SOL* sol, /**< primal solution, or NULL for current LP/pseudo solution */
866  FILE* file, /**< output file (or NULL for standard output) */
867  SCIP_Bool printzeros /**< should variables set to zero be printed? */
868  );
869 
870 /** outputs discrete variables of solution in original problem space to the given file stream
871  *
872  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
873  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
874  *
875  * @pre This method can be called if @p scip is in one of the following stages:
876  * - \ref SCIP_STAGE_PROBLEM
877  * - \ref SCIP_STAGE_TRANSFORMED
878  * - \ref SCIP_STAGE_INITPRESOLVE
879  * - \ref SCIP_STAGE_PRESOLVING
880  * - \ref SCIP_STAGE_EXITPRESOLVE
881  * - \ref SCIP_STAGE_PRESOLVED
882  * - \ref SCIP_STAGE_INITSOLVE
883  * - \ref SCIP_STAGE_SOLVING
884  * - \ref SCIP_STAGE_SOLVED
885  * - \ref SCIP_STAGE_EXITSOLVE
886  */
887 SCIP_EXPORT
889  SCIP* scip, /**< SCIP data structure */
890  SCIP_SOL* sol, /**< primal solution */
891  FILE* file /**< output file (or NULL for standard output) */
892  );
893 
894 /** returns dual solution value of a constraint */
895 SCIP_EXPORT
897  SCIP* scip, /**< SCIP data structure */
898  SCIP_CONS* cons, /**< constraint for which the dual solution should be returned */
899  SCIP_Real* dualsolval, /**< pointer to store the dual solution value */
900  SCIP_Bool* boundconstraint /**< pointer to store whether the constraint is a bound constraint (or NULL) */
901  );
902 
903 /** check whether the dual solution is available
904  *
905  * @note This is used when calling \ref SCIPprintDualSol()
906  *
907  * @return is dual solution available?
908  *
909  * @pre This method can be called if SCIP is in one of the following stages:
910  * - \ref SCIP_STAGE_SOLVED
911  */
912 SCIP_EXPORT
914  SCIP* scip, /**< SCIP data structure */
915  SCIP_Bool printreason /**< print warning message if dualsol is not available? */
916  );
917 
918 /** outputs dual solution from LP solver to file stream
919  *
920  * @note This only works if no presolving has been performed, which can be checked by calling method \ref
921  * SCIPhasPerformedPresolve().
922  *
923  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
924  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
925  *
926  * @pre This method can be called if SCIP is in one of the following stages:
927  * - \ref SCIP_STAGE_SOLVED
928  */
929 SCIP_EXPORT
931  SCIP* scip, /**< SCIP data structure */
932  FILE* file, /**< output file (or NULL for standard output) */
933  SCIP_Bool printzeros /**< should variables set to zero be printed? */
934  );
935 
936 
937 /** outputs non-zero variables of solution representing a ray in original problem space to file stream
938  *
939  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
940  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
941  *
942  * @pre This method can be called if SCIP is in one of the following stages:
943  * - \ref SCIP_STAGE_PROBLEM
944  * - \ref SCIP_STAGE_TRANSFORMED
945  * - \ref SCIP_STAGE_INITPRESOLVE
946  * - \ref SCIP_STAGE_PRESOLVING
947  * - \ref SCIP_STAGE_EXITPRESOLVE
948  * - \ref SCIP_STAGE_PRESOLVED
949  * - \ref SCIP_STAGE_INITSOLVE
950  * - \ref SCIP_STAGE_SOLVING
951  * - \ref SCIP_STAGE_SOLVED
952  * - \ref SCIP_STAGE_EXITSOLVE
953  */
954 SCIP_EXPORT
956  SCIP* scip, /**< SCIP data structure */
957  SCIP_SOL* sol, /**< primal solution representing ray */
958  FILE* file, /**< output file (or NULL for standard output) */
959  SCIP_Bool printzeros /**< should variables set to zero be printed? */
960  );
961 
962 /** gets number of feasible primal solutions stored in the solution storage in case the problem is transformed;
963  * in case the problem stage is SCIP_STAGE_PROBLEM, the number of solution in the original solution candidate
964  * storage is returned
965  *
966  * @return number of feasible primal solutions stored in the solution storage in case the problem is transformed; or
967  * number of solution in the original solution candidate storage if the problem stage is SCIP_STAGE_PROBLEM
968  *
969  * @pre This method can be called if SCIP is in one of the following stages:
970  * - \ref SCIP_STAGE_PROBLEM
971  * - \ref SCIP_STAGE_TRANSFORMED
972  * - \ref SCIP_STAGE_INITPRESOLVE
973  * - \ref SCIP_STAGE_PRESOLVING
974  * - \ref SCIP_STAGE_EXITPRESOLVE
975  * - \ref SCIP_STAGE_PRESOLVED
976  * - \ref SCIP_STAGE_INITSOLVE
977  * - \ref SCIP_STAGE_SOLVING
978  * - \ref SCIP_STAGE_SOLVED
979  * - \ref SCIP_STAGE_EXITSOLVE
980  */
981 SCIP_EXPORT
982 int SCIPgetNSols(
983  SCIP* scip /**< SCIP data structure */
984  );
985 
986 /** gets array of feasible primal solutions stored in the solution storage in case the problem is transformed; in case
987  * if the problem stage is in SCIP_STAGE_PROBLEM, it returns the number array of solution candidate stored
988  *
989  * @return array of feasible primal solutions
990  *
991  * @pre This method can be called if SCIP is in one of the following stages:
992  * - \ref SCIP_STAGE_PROBLEM
993  * - \ref SCIP_STAGE_TRANSFORMED
994  * - \ref SCIP_STAGE_INITPRESOLVE
995  * - \ref SCIP_STAGE_PRESOLVING
996  * - \ref SCIP_STAGE_EXITPRESOLVE
997  * - \ref SCIP_STAGE_PRESOLVED
998  * - \ref SCIP_STAGE_INITSOLVE
999  * - \ref SCIP_STAGE_SOLVING
1000  * - \ref SCIP_STAGE_SOLVED
1001  * - \ref SCIP_STAGE_EXITSOLVE
1002  */
1003 SCIP_EXPORT
1005  SCIP* scip /**< SCIP data structure */
1006  );
1007 
1008 /** gets best feasible primal solution found so far if the problem is transformed; in case the problem is in
1009  * SCIP_STAGE_PROBLEM it returns the best solution candidate, or NULL if no solution has been found or the candidate
1010  * store is empty;
1011  *
1012  * @return best feasible primal solution so far
1013  *
1014  * @pre This method can be called if SCIP is in one of the following stages:
1015  * - \ref SCIP_STAGE_PROBLEM
1016  * - \ref SCIP_STAGE_TRANSFORMED
1017  * - \ref SCIP_STAGE_INITPRESOLVE
1018  * - \ref SCIP_STAGE_PRESOLVING
1019  * - \ref SCIP_STAGE_EXITPRESOLVE
1020  * - \ref SCIP_STAGE_PRESOLVED
1021  * - \ref SCIP_STAGE_INITSOLVE
1022  * - \ref SCIP_STAGE_SOLVING
1023  * - \ref SCIP_STAGE_SOLVED
1024  * - \ref SCIP_STAGE_EXITSOLVE
1025  */
1026 SCIP_EXPORT
1028  SCIP* scip /**< SCIP data structure */
1029  );
1030 
1031 /** outputs best feasible primal solution found so far to file stream
1032  *
1033  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1034  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1035  *
1036  * @pre This method can be called if SCIP is in one of the following stages:
1037  * - \ref SCIP_STAGE_INIT
1038  * - \ref SCIP_STAGE_PROBLEM
1039  * - \ref SCIP_STAGE_TRANSFORMING
1040  * - \ref SCIP_STAGE_TRANSFORMED
1041  * - \ref SCIP_STAGE_INITPRESOLVE
1042  * - \ref SCIP_STAGE_PRESOLVING
1043  * - \ref SCIP_STAGE_EXITPRESOLVE
1044  * - \ref SCIP_STAGE_PRESOLVED
1045  * - \ref SCIP_STAGE_INITSOLVE
1046  * - \ref SCIP_STAGE_SOLVING
1047  * - \ref SCIP_STAGE_SOLVED
1048  * - \ref SCIP_STAGE_EXITSOLVE
1049  * - \ref SCIP_STAGE_FREE
1050  */
1051 SCIP_EXPORT
1053  SCIP* scip, /**< SCIP data structure */
1054  FILE* file, /**< output file (or NULL for standard output) */
1055  SCIP_Bool printzeros /**< should variables set to zero be printed? */
1056  );
1057 
1058 /** outputs best feasible primal solution found so far in transformed variables to file stream
1059  *
1060  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1061  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1062  *
1063  * @pre This method can be called if SCIP is in one of the following stages:
1064  * - \ref SCIP_STAGE_INIT
1065  * - \ref SCIP_STAGE_PROBLEM
1066  * - \ref SCIP_STAGE_TRANSFORMING
1067  * - \ref SCIP_STAGE_TRANSFORMED
1068  * - \ref SCIP_STAGE_INITPRESOLVE
1069  * - \ref SCIP_STAGE_PRESOLVING
1070  * - \ref SCIP_STAGE_EXITPRESOLVE
1071  * - \ref SCIP_STAGE_PRESOLVED
1072  * - \ref SCIP_STAGE_INITSOLVE
1073  * - \ref SCIP_STAGE_SOLVING
1074  * - \ref SCIP_STAGE_SOLVED
1075  * - \ref SCIP_STAGE_EXITSOLVE
1076  * - \ref SCIP_STAGE_FREE
1077  */
1078 SCIP_EXPORT
1080  SCIP* scip, /**< SCIP data structure */
1081  FILE* file, /**< output file (or NULL for standard output) */
1082  SCIP_Bool printzeros /**< should variables set to zero be printed? */
1083  );
1084 
1085 /** try to round given solution
1086  *
1087  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1088  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1089  *
1090  * @pre This method can be called if SCIP is in one of the following stages:
1091  * - \ref SCIP_STAGE_SOLVING
1092  */
1093 SCIP_EXPORT
1095  SCIP* scip, /**< SCIP data structure */
1096  SCIP_SOL* sol, /**< primal solution */
1097  SCIP_Bool* success /**< pointer to store whether rounding was successful */
1098  );
1099 
1100 /** retransforms solution to original problem space
1101  *
1102  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1103  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1104  *
1105  * @pre This method can be called if SCIP is in one of the following stages:
1106  * - \ref SCIP_STAGE_PROBLEM
1107  * - \ref SCIP_STAGE_TRANSFORMING
1108  * - \ref SCIP_STAGE_TRANSFORMED
1109  * - \ref SCIP_STAGE_INITPRESOLVE
1110  * - \ref SCIP_STAGE_PRESOLVING
1111  * - \ref SCIP_STAGE_EXITPRESOLVE
1112  * - \ref SCIP_STAGE_PRESOLVED
1113  * - \ref SCIP_STAGE_INITSOLVE
1114  * - \ref SCIP_STAGE_SOLVING
1115  * - \ref SCIP_STAGE_SOLVED
1116  * - \ref SCIP_STAGE_EXITSOLVE
1117  * - \ref SCIP_STAGE_FREETRANS
1118  */
1119 SCIP_EXPORT
1121  SCIP* scip, /**< SCIP data structure */
1122  SCIP_SOL* sol /**< primal CIP solution */
1123  );
1124 
1125 /** reads a given solution file
1126  *
1127  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1128  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1129  *
1130  * @pre This method can be called if SCIP is in one of the following stages:
1131  * - \ref SCIP_STAGE_PROBLEM
1132  * - \ref SCIP_STAGE_TRANSFORMED
1133  * - \ref SCIP_STAGE_INITPRESOLVE
1134  * - \ref SCIP_STAGE_PRESOLVING
1135  * - \ref SCIP_STAGE_EXITPRESOLVE
1136  * - \ref SCIP_STAGE_PRESOLVED
1137  * - \ref SCIP_STAGE_INITSOLVE
1138  * - \ref SCIP_STAGE_SOLVING
1139  */
1140 SCIP_EXPORT
1142  SCIP* scip, /**< SCIP data structure */
1143  const char* filename /**< name of the input file */
1144  );
1145 
1146 /** reads a given solution file and store the solution values in the given solution pointer
1147  *
1148  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1149  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1150  *
1151  * @pre This method can be called if SCIP is in one of the following stages:
1152  * - \ref SCIP_STAGE_PROBLEM
1153  * - \ref SCIP_STAGE_TRANSFORMED
1154  * - \ref SCIP_STAGE_INITPRESOLVE
1155  * - \ref SCIP_STAGE_PRESOLVING
1156  * - \ref SCIP_STAGE_EXITPRESOLVE
1157  * - \ref SCIP_STAGE_PRESOLVED
1158  * - \ref SCIP_STAGE_INITSOLVE
1159  * - \ref SCIP_STAGE_SOLVING
1160  */
1161 SCIP_EXPORT
1163  SCIP* scip, /**< SCIP data structure */
1164  const char* filename, /**< name of the input file */
1165  SCIP_SOL* sol, /**< solution pointer */
1166  SCIP_Bool xml, /**< true, iff the given solution in written in XML */
1167  SCIP_Bool* partial, /**< pointer to store if the solution is partial */
1168  SCIP_Bool* error /**< pointer store if an error occured */
1169  );
1170 
1171 /** adds feasible primal solution to solution storage by copying it
1172  *
1173  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1174  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1175  *
1176  * @pre This method can be called if SCIP is in one of the following stages:
1177  * - \ref SCIP_STAGE_PROBLEM
1178  * - \ref SCIP_STAGE_TRANSFORMED
1179  * - \ref SCIP_STAGE_INITPRESOLVE
1180  * - \ref SCIP_STAGE_PRESOLVING
1181  * - \ref SCIP_STAGE_EXITPRESOLVE
1182  * - \ref SCIP_STAGE_PRESOLVED
1183  * - \ref SCIP_STAGE_SOLVING
1184  * - \ref SCIP_STAGE_FREETRANS
1185  *
1186  * @note Do not call during propagation, use heur_trysol instead.
1187  */
1188 SCIP_EXPORT
1190  SCIP* scip, /**< SCIP data structure */
1191  SCIP_SOL* sol, /**< primal CIP solution */
1192  SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
1193  );
1194 
1195 /** adds primal solution to solution storage, frees the solution afterwards
1196  *
1197  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1198  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1199  *
1200  * @pre This method can be called if SCIP is in one of the following stages:
1201  * - \ref SCIP_STAGE_PROBLEM
1202  * - \ref SCIP_STAGE_TRANSFORMED
1203  * - \ref SCIP_STAGE_INITPRESOLVE
1204  * - \ref SCIP_STAGE_PRESOLVING
1205  * - \ref SCIP_STAGE_EXITPRESOLVE
1206  * - \ref SCIP_STAGE_PRESOLVED
1207  * - \ref SCIP_STAGE_SOLVING
1208  * - \ref SCIP_STAGE_FREETRANS
1209  *
1210  * @note Do not call during propagation, use heur_trysol instead.
1211  */
1212 SCIP_EXPORT
1214  SCIP* scip, /**< SCIP data structure */
1215  SCIP_SOL** sol, /**< pointer to primal CIP solution; is cleared in function call */
1216  SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
1217  );
1218 
1219 /** adds current LP/pseudo solution to solution storage
1220  *
1221  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1222  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1223  *
1224  * @pre This method can be called if SCIP is in one of the following stages:
1225  * - \ref SCIP_STAGE_PRESOLVED
1226  * - \ref SCIP_STAGE_SOLVING
1227  */
1228 SCIP_EXPORT
1230  SCIP* scip, /**< SCIP data structure */
1231  SCIP_HEUR* heur, /**< heuristic that found the solution */
1232  SCIP_Bool* stored /**< stores whether given solution was good enough to keep */
1233  );
1234 
1235 /** checks solution for feasibility; if possible, adds it to storage by copying
1236  *
1237  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1238  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1239  *
1240  * @pre This method can be called if SCIP is in one of the following stages:
1241  * - \ref SCIP_STAGE_TRANSFORMED
1242  * - \ref SCIP_STAGE_INITPRESOLVE
1243  * - \ref SCIP_STAGE_PRESOLVING
1244  * - \ref SCIP_STAGE_EXITPRESOLVE
1245  * - \ref SCIP_STAGE_PRESOLVED
1246  * - \ref SCIP_STAGE_SOLVING
1247  *
1248  * @note Do not call during propagation, use heur_trysol instead.
1249  */
1250 SCIP_EXPORT
1252  SCIP* scip, /**< SCIP data structure */
1253  SCIP_SOL* sol, /**< primal CIP solution */
1254  SCIP_Bool printreason, /**< Should all reasons of violations be printed? */
1255  SCIP_Bool completely, /**< Should all violations be checked if printreason is true? */
1256  SCIP_Bool checkbounds, /**< Should the bounds of the variables be checked? */
1257  SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
1258  SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
1259  SCIP_Bool* stored /**< stores whether given solution was feasible and good enough to keep */
1260  );
1261 
1262 /** checks primal solution; if feasible, adds it to storage; solution is freed afterwards
1263  *
1264  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1265  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1266  *
1267  * @pre This method can be called if SCIP is in one of the following stages:
1268  * - \ref SCIP_STAGE_TRANSFORMED
1269  * - \ref SCIP_STAGE_INITPRESOLVE
1270  * - \ref SCIP_STAGE_PRESOLVING
1271  * - \ref SCIP_STAGE_EXITPRESOLVE
1272  * - \ref SCIP_STAGE_PRESOLVED
1273  * - \ref SCIP_STAGE_SOLVING
1274  *
1275  * @note Do not call during propagation, use heur_trysol instead.
1276  */
1277 SCIP_EXPORT
1279  SCIP* scip, /**< SCIP data structure */
1280  SCIP_SOL** sol, /**< pointer to primal CIP solution; is cleared in function call */
1281  SCIP_Bool printreason, /**< Should all reasons of violations be printed? */
1282  SCIP_Bool completely, /**< Should all violations be checked if printreason is true? */
1283  SCIP_Bool checkbounds, /**< Should the bounds of the variables be checked? */
1284  SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
1285  SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
1286  SCIP_Bool* stored /**< stores whether solution was feasible and good enough to keep */
1287  );
1288 
1289 /** checks current LP/pseudo solution for feasibility; if possible, adds it to storage
1290  *
1291  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1292  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1293  *
1294  * @pre This method can be called if SCIP is in one of the following stages:
1295  * - \ref SCIP_STAGE_PRESOLVED
1296  * - \ref SCIP_STAGE_SOLVING
1297  */
1298 SCIP_EXPORT
1300  SCIP* scip, /**< SCIP data structure */
1301  SCIP_HEUR* heur, /**< heuristic that found the solution */
1302  SCIP_Bool printreason, /**< Should all reasons of violations be printed? */
1303  SCIP_Bool completely, /**< Should all violations be checked if printreason is true? */
1304  SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
1305  SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
1306  SCIP_Bool* stored /**< stores whether given solution was feasible and good enough to keep */
1307  );
1308 
1309 /** returns all partial solutions
1310  *
1311  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1312  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1313  *
1314  * @pre This method can be called if SCIP is in one of the following stages:
1315  * - \ref SCIP_STAGE_PROBLEM
1316  * - \ref SCIP_STAGE_PRESOLVING
1317  * - \ref SCIP_STAGE_SOLVING
1318  * - \ref SCIP_STAGE_SOLVED
1319  */
1320 SCIP_EXPORT
1322  SCIP* scip /**< SCIP data structure */
1323  );
1324 
1325 /** returns number of partial solutions
1326  *
1327  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1328  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1329  *
1330  * @pre This method can be called if SCIP is in one of the following stages:
1331  * - \ref SCIP_STAGE_PROBLEM
1332  * - \ref SCIP_STAGE_PRESOLVING
1333  * - \ref SCIP_STAGE_SOLVING
1334  * - \ref SCIP_STAGE_SOLVED
1335  */
1337  SCIP* scip /**< SCIP data structure */
1338  );
1339 
1340 /** checks solution for feasibility without adding it to the solution store
1341  *
1342  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1343  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1344  *
1345  * @pre This method can be called if SCIP is in one of the following stages:
1346  * - \ref SCIP_STAGE_PROBLEM
1347  * - \ref SCIP_STAGE_TRANSFORMED
1348  * - \ref SCIP_STAGE_INITPRESOLVE
1349  * - \ref SCIP_STAGE_PRESOLVING
1350  * - \ref SCIP_STAGE_EXITPRESOLVE
1351  * - \ref SCIP_STAGE_PRESOLVED
1352  * - \ref SCIP_STAGE_INITSOLVE
1353  * - \ref SCIP_STAGE_SOLVING
1354  * - \ref SCIP_STAGE_SOLVED
1355  */
1356 SCIP_EXPORT
1358  SCIP* scip, /**< SCIP data structure */
1359  SCIP_SOL* sol, /**< primal CIP solution */
1360  SCIP_Bool printreason, /**< Should all reasons of violations be printed? */
1361  SCIP_Bool completely, /**< Should all violations be checked if printreason is true? */
1362  SCIP_Bool checkbounds, /**< Should the bounds of the variables be checked? */
1363  SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
1364  SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
1365  SCIP_Bool* feasible /**< stores whether given solution is feasible */
1366  );
1367 
1368 /** checks solution for feasibility in original problem without adding it to the solution store;
1369  * this method is used to double check a solution in order to validate the presolving process
1370  *
1371  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1372  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1373  *
1374  * @pre This method can be called if SCIP is in one of the following stages:
1375  * - \ref SCIP_STAGE_PROBLEM
1376  * - \ref SCIP_STAGE_TRANSFORMED
1377  * - \ref SCIP_STAGE_INITPRESOLVE
1378  * - \ref SCIP_STAGE_PRESOLVING
1379  * - \ref SCIP_STAGE_EXITPRESOLVE
1380  * - \ref SCIP_STAGE_PRESOLVED
1381  * - \ref SCIP_STAGE_INITSOLVE
1382  * - \ref SCIP_STAGE_SOLVING
1383  * - \ref SCIP_STAGE_SOLVED
1384  */
1385 SCIP_EXPORT
1387  SCIP* scip, /**< SCIP data structure */
1388  SCIP_SOL* sol, /**< primal CIP solution */
1389  SCIP_Bool* feasible, /**< stores whether given solution is feasible */
1390  SCIP_Bool printreason, /**< should the reason for the violation be printed? */
1391  SCIP_Bool completely /**< Should all violations be checked if printreason is true? */
1392  );
1393 
1394 /** update integrality violation of a solution */
1395 SCIP_EXPORT
1397  SCIP* scip, /**< SCIP data structure */
1398  SCIP_SOL* sol, /**< primal CIP solution */
1399  SCIP_Real absviol /**< absolute violation */
1400  );
1401 
1402 /** update bound violation of a solution */
1403 SCIP_EXPORT
1405  SCIP* scip, /**< SCIP data structure */
1406  SCIP_SOL* sol, /**< primal CIP solution */
1407  SCIP_Real absviol, /**< absolute violation */
1408  SCIP_Real relviol /**< relative violation */
1409  );
1410 
1411 /** update LP row violation of a solution */
1412 SCIP_EXPORT
1414  SCIP* scip, /**< SCIP data structure */
1415  SCIP_SOL* sol, /**< primal CIP solution */
1416  SCIP_Real absviol, /**< absolute violation */
1417  SCIP_Real relviol /**< relative violation */
1418  );
1419 
1420 /** update constraint violation of a solution */
1421 SCIP_EXPORT
1423  SCIP* scip, /**< SCIP data structure */
1424  SCIP_SOL* sol, /**< primal CIP solution */
1425  SCIP_Real absviol, /**< absolute violation */
1426  SCIP_Real relviol /**< relative violation */
1427  );
1428 
1429 /** update LP row and constraint violations of a solution */
1430 SCIP_EXPORT
1432  SCIP* scip, /**< SCIP data structure */
1433  SCIP_SOL* sol, /**< primal CIP solution */
1434  SCIP_Real absviol, /**< absolute violation */
1435  SCIP_Real relviol /**< relative violation */
1436  );
1437 
1438 /** allow violation updates */
1439 SCIP_EXPORT
1441  SCIP* scip /**< SCIP data structure */
1442  );
1443 
1444 /** disallow violation updates */
1445 SCIP_EXPORT
1447  SCIP* scip /**< SCIP data structure */
1448  );
1449 
1450 /** return whether a primal ray is stored that proves unboundedness of the LP relaxation
1451  *
1452  * @return return whether a primal ray is stored that proves unboundedness of the LP relaxation
1453  *
1454  * @pre This method can be called if SCIP is in one of the following stages:
1455  * - \ref SCIP_STAGE_SOLVING
1456  * - \ref SCIP_STAGE_SOLVED
1457  */
1458 SCIP_EXPORT
1460  SCIP* scip /**< SCIP data structure */
1461  );
1462 
1463 /** gets value of given variable in primal ray causing unboundedness of the LP relaxation;
1464  * should only be called if such a ray is stored (check with SCIPhasPrimalRay())
1465  *
1466  * @return value of given variable in primal ray causing unboundedness of the LP relaxation
1467  *
1468  * @pre This method can be called if SCIP is in one of the following stages:
1469  * - \ref SCIP_STAGE_SOLVING
1470  * - \ref SCIP_STAGE_SOLVED
1471  */
1472 SCIP_EXPORT
1474  SCIP* scip, /**< SCIP data structure */
1475  SCIP_VAR* var /**< variable to get value for */
1476  );
1477 
1478 /** updates the primal ray thats proves unboundedness
1479  *
1480  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1481  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1482  *
1483  * @pre This method can be called if @p scip is in one of the following stages:
1484  * - \ref SCIP_STAGE_PRESOLVING
1485  * - \ref SCIP_STAGE_PRESOLVED
1486  * - \ref SCIP_STAGE_SOLVING
1487  * - \ref SCIP_STAGE_SOLVED
1488  *
1489  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
1490  */
1491 SCIP_EXPORT
1493  SCIP* scip, /**< SCIP data structure */
1494  SCIP_SOL* primalray /**< the new primal ray */
1495  );
1496 
1497 /**@} */
1498 
1499 #ifdef __cplusplus
1500 }
1501 #endif
1502 
1503 #endif
SCIP_RETCODE SCIPcreatePartialSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
Definition: scip_sol.c:496
SCIP_RETCODE SCIPprintBestSol(SCIP *scip, FILE *file, SCIP_Bool printzeros)
Definition: scip_sol.c:2370
SCIP_RETCODE SCIPlinkLPSol(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1017
SCIP_RETCODE SCIPlinkCurrentSol(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1122
int SCIPgetSolRunnum(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1621
SCIP_RETCODE SCIPincSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real incval)
Definition: scip_sol.c:1309
SCIP_RETCODE SCIPadjustImplicitSolVals(SCIP *scip, SCIP_SOL *sol, SCIP_Bool uselprows)
Definition: scip_sol.c:1723
SCIP_RETCODE SCIPaddSolFree(SCIP *scip, SCIP_SOL **sol, SCIP_Bool *stored)
Definition: scip_sol.c:3015
SCIP_RETCODE SCIPrecomputeSolObj(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1513
void SCIPdeactivateSolViolationUpdates(SCIP *scip)
Definition: scip_sol.c:296
SCIP_SOL ** SCIPgetSols(SCIP *scip)
Definition: scip_sol.c:2254
int SCIPgetNPartialSols(SCIP *scip)
Definition: scip_sol.c:3413
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
SCIP_Real SCIPgetSolTime(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1594
type definitions for return codes for SCIP methods
SCIP_RETCODE SCIPcreateLPSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
Definition: scip_sol.c:361
SCIP_RETCODE SCIPaddCurrentSol(SCIP *scip, SCIP_HEUR *heur, SCIP_Bool *stored)
Definition: scip_sol.c:3085
SCIP_SOL ** SCIPgetPartialSols(SCIP *scip)
Definition: scip_sol.c:3391
SCIP_RETCODE SCIPcreateOrigSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
Definition: scip_sol.c:556
void SCIPupdateSolBoundViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
Definition: scip_sol.c:240
SCIP_RETCODE SCIPlinkNLPSol(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1043
SCIP_RETCODE SCIPcreateSolCopy(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol)
Definition: scip_sol.c:609
void SCIPupdateSolLPRowViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
Definition: scip_sol.c:252
type definitions for primal heuristics
SCIP_RETCODE SCIPtryCurrentSol(SCIP *scip, SCIP_HEUR *heur, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
Definition: scip_sol.c:3336
SCIP_RETCODE SCIPgetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
Definition: scip_sol.c:1389
SCIP_RETCODE SCIPreadSol(SCIP *scip, const char *filename)
Definition: scip_sol.c:2540
SCIP_RETCODE SCIPlinkPseudoSol(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1102
type definitions for SCIP&#39;s main datastructure
SCIP_Bool SCIPisDualSolAvailable(SCIP *scip, SCIP_Bool printreason)
Definition: scip_sol.c:2073
SCIP_RETCODE SCIPprintTransSol(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)
Definition: scip_sol.c:1848
SCIP_RETCODE SCIPcheckSolOrig(SCIP *scip, SCIP_SOL *sol, SCIP_Bool *feasible, SCIP_Bool printreason, SCIP_Bool completely)
Definition: scip_sol.c:3497
void SCIPupdateSolIntegralityViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol)
Definition: scip_sol.c:229
SCIP_Real SCIPgetSolTransObj(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1482
SCIP_Bool SCIPareSolsEqual(SCIP *scip, SCIP_SOL *sol1, SCIP_SOL *sol2)
Definition: scip_sol.c:1703
type definitions for problem variables
void SCIPupdateSolLPConsViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
Definition: scip_sol.c:276
SCIP_Bool SCIPhasPrimalRay(SCIP *scip)
Definition: scip_sol.c:3535
SCIP_RETCODE SCIPsetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var, SCIP_Real val)
Definition: scip_sol.c:1212
SCIP_RETCODE SCIPclearSol(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1153
SCIP_RETCODE SCIPcheckSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *feasible)
Definition: scip_sol.c:3440
#define SCIP_Bool
Definition: def.h:84
SCIP_RETCODE SCIPcreateSolCopyOrig(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol)
Definition: scip_sol.c:649
SCIP_RETCODE SCIPprintRay(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)
Definition: scip_sol.c:2169
SCIP_RETCODE SCIPprintBestTransSol(SCIP *scip, FILE *file, SCIP_Bool printzeros)
Definition: scip_sol.c:2410
SCIP_RETCODE SCIProundSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool *success)
Definition: scip_sol.c:2446
SCIP_RETCODE SCIPtrySolFree(SCIP *scip, SCIP_SOL **sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
Definition: scip_sol.c:3231
void SCIPactivateSolViolationUpdates(SCIP *scip)
Definition: scip_sol.c:288
SCIP_RETCODE SCIPfreeSol(SCIP *scip, SCIP_SOL **sol)
Definition: scip_sol.c:976
SCIP_RETCODE SCIPprintDualSol(SCIP *scip, FILE *file, SCIP_Bool printzeros)
Definition: scip_sol.c:2136
int SCIPgetNSols(SCIP *scip)
Definition: scip_sol.c:2205
SCIP_RETCODE SCIPgetDualSolVal(SCIP *scip, SCIP_CONS *cons, SCIP_Real *dualsolval, SCIP_Bool *boundconstraint)
Definition: scip_sol.c:1947
SCIP_RETCODE SCIPretransformSol(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:2482
SCIP_Real SCIPgetSolOrigObj(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1435
SCIP_RETCODE SCIPcreateUnknownSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
Definition: scip_sol.c:524
SCIP_RETCODE SCIPcreateRelaxSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
Definition: scip_sol.c:424
SCIP_RETCODE SCIPtrySol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool printreason, SCIP_Bool completely, SCIP_Bool checkbounds, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool *stored)
Definition: scip_sol.c:3125
type definitions for storing primal CIP solutions
SCIP_RETCODE SCIPcreatePseudoSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
Definition: scip_sol.c:451
SCIP_RETCODE SCIPaddSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool *stored)
Definition: scip_sol.c:2925
SCIP_RETCODE SCIPreadSolFile(SCIP *scip, const char *filename, SCIP_SOL *sol, SCIP_Bool xml, SCIP_Bool *partial, SCIP_Bool *error)
Definition: scip_sol.c:2885
SCIP_RETCODE SCIPcreateNLPSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
Definition: scip_sol.c:389
SCIP_SOL * SCIPgetBestSol(SCIP *scip)
Definition: scip_sol.c:2304
SCIP_RETCODE SCIPprintMIPStart(SCIP *scip, SCIP_SOL *sol, FILE *file)
Definition: scip_sol.c:1905
SCIP_Real SCIPtransformObj(SCIP *scip, SCIP_Real obj)
Definition: scip_sol.c:1542
void SCIPupdateSolConsViolation(SCIP *scip, SCIP_SOL *sol, SCIP_Real absviol, SCIP_Real relviol)
Definition: scip_sol.c:264
SCIP_Real SCIPretransformObj(SCIP *scip, SCIP_Real obj)
Definition: scip_sol.c:1567
SCIP_HEUR * SCIPgetSolHeur(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1675
SCIP_RETCODE SCIPupdatePrimalRay(SCIP *scip, SCIP_SOL *primalray)
Definition: scip_sol.c:3580
#define SCIP_Real
Definition: def.h:177
SCIP_RETCODE SCIPlinkRelaxSol(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1075
#define SCIP_Longint
Definition: def.h:162
SCIP_RETCODE SCIPcreateCurrentSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
Definition: scip_sol.c:474
SCIP_RETCODE SCIPunlinkSol(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1181
SCIP_RETCODE SCIPsetSolVals(SCIP *scip, SCIP_SOL *sol, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
Definition: scip_sol.c:1254
common defines and data types used in all packages of SCIP
SCIP_Real SCIPgetSolVal(SCIP *scip, SCIP_SOL *sol, SCIP_VAR *var)
Definition: scip_sol.c:1352
SCIP_Real SCIPgetPrimalRayVal(SCIP *scip, SCIP_VAR *var)
Definition: scip_sol.c:3553
type definitions for constraints and constraint handlers
SCIP_RETCODE SCIPcreateFiniteSolCopy(SCIP *scip, SCIP_SOL **sol, SCIP_SOL *sourcesol, SCIP_Bool *success)
Definition: scip_sol.c:840
SCIP_RETCODE SCIPcreateSol(SCIP *scip, SCIP_SOL **sol, SCIP_HEUR *heur)
Definition: scip_sol.c:319
SCIP_Longint SCIPgetSolNodenum(SCIP *scip, SCIP_SOL *sol)
Definition: scip_sol.c:1648
SCIP_RETCODE SCIPprintSol(SCIP *scip, SCIP_SOL *sol, FILE *file, SCIP_Bool printzeros)
Definition: scip_sol.c:1766