Scippy

GCG

Branch-and-Price & Column Generation for Everyone

pub_gcgvar.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program */
4 /* GCG --- Generic Column Generation */
5 /* a Dantzig-Wolfe decomposition based extension */
6 /* of the branch-cut-and-price framework */
7 /* SCIP --- Solving Constraint Integer Programs */
8 /* */
9 /* Copyright (C) 2010-2021 Operations Research, RWTH Aachen University */
10 /* Zuse Institute Berlin (ZIB) */
11 /* */
12 /* This program is free software; you can redistribute it and/or */
13 /* modify it under the terms of the GNU Lesser General Public License */
14 /* as published by the Free Software Foundation; either version 3 */
15 /* of the License, or (at your option) any later version. */
16 /* */
17 /* This program is distributed in the hope that it will be useful, */
18 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
19 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
20 /* GNU Lesser General Public License for more details. */
21 /* */
22 /* You should have received a copy of the GNU Lesser General Public License */
23 /* along with this program; if not, write to the Free Software */
24 /* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.*/
25 /* */
26 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
27 
28 /**@file pub_gcgvar.h
29  * @ingroup PUBLICCOREAPI
30  * @brief public methods for GCG variables
31  * @author Martin Bergner
32  * @author Christian Puchert
33  */
34 
35 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
36 
37 #ifndef GCG_PUB_GCGVAR_H__
38 #define GCG_PUB_GCGVAR_H__
39 
40 #include "type_decomp.h"
41 #include "scip/scip.h"
42 #include "struct_vardata.h"
43 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47 
48 /**
49  * @ingroup TYPEDEFINITIONS
50  *
51  * @{
52  */
53 
54 /** returns TRUE or FALSE whether variable is a pricing variable or not */
55 extern
56 SCIP_Bool GCGvarIsPricing(
57  SCIP_VAR* var /**< SCIP variable structure */
58  );
59 
60 #ifdef NDEBUG
61 #define GCGvarIsOriginal(var) (SCIPvarGetData(var)->vartype == GCG_VARTYPE_ORIGINAL)
62 #else
63 /** returns TRUE or FALSE whether variable is a original variable or not */
64 extern
65 SCIP_Bool GCGvarIsOriginal(
66  SCIP_VAR* var /**< SCIP variable structure */
67  );
68 #endif
69 
70 #ifdef NDEBUG
71 #define GCGvarIsMaster(var) (SCIPvarGetData(var)->vartype == GCG_VARTYPE_MASTER)
72 #else
73 /** returns TRUE or FALSE whether variable is a master variable or not */
74 extern
75 SCIP_Bool GCGvarIsMaster(
76  SCIP_VAR* var /**< SCIP variable structure */
77  );
78 #endif
79 
80 #ifdef NDEBUG
81 #define GCGoriginalVarIsLinking(var) (SCIPvarGetData(var)->blocknr == -2)
82 #else
83 /** returns TRUE or FALSE whether variable is a linking variable or not */
84 extern
85 SCIP_Bool GCGoriginalVarIsLinking(
86  SCIP_VAR* var /**< SCIP variable structure */
87  );
88 #endif
89 
90 #ifdef NDEBUG
91 #define GCGoriginalVarIsTransVar(var) (SCIPvarGetData(var)->blocknr == -1)
92 #else
93 /** returns TRUE or FALSE whether variable is a directly transferred variable or not */
94 extern
95 SCIP_Bool GCGoriginalVarIsTransVar(
96  SCIP_VAR* var /**< SCIP variable structure */
97  );
98 #endif
99 
100 #ifdef NDEBUG
101 #define GCGpricingVarGetOriginalVar(var) (SCIPvarGetData(var)->data.pricingvardata.origvars[0])
102 #else
103 /** returns the original var of a pricing variable */
104 extern
106  SCIP_VAR* var /**< SCIP variable structure */
107  );
108 #endif
109 
110 /** adds the original var to the pricing variable */
111 extern
112 SCIP_RETCODE GCGpricingVarAddOrigVar(
113  SCIP* scip, /**< SCIP variable structure */
114  SCIP_VAR* pricingvar, /**< pricing variable */
115  SCIP_VAR* origvar /**< original pricing variable */
116  );
117 
118 #ifdef NDEBUG
119 #define GCGoriginalVarGetPricingVar(var) (SCIPvarGetData(var)->data.origvardata.pricingvar)
120 #else
121 /** returns the pricing var of an original variable */
122 extern
124  SCIP_VAR* var /**< variable data structure */
125  );
126 #endif
127 
128 /** returns the pricing var of an original variable */
129 extern
131  SCIP_VAR* var, /**< SCIP variable structure */
132  SCIP_VAR* pricingvar /**< SCIP variable structure */
133  );
134 
135 /** copies the pricing variable data to a master problem variable. This is used in the Benders' decomposition mode when
136  * subproblems are merged into the master problem.
137  */
138 extern
140  SCIP* scip, /**< master SCIP data structure */
141  SCIP_VAR* pricingvar, /**< the pricing problem variable is copied from */
142  SCIP_VAR* mastervar /**< the master variable that the vardata is copied to */
143  );
144 
145 #ifdef NDEBUG
146 #define GCGlinkingVarGetPricingVars(var) (SCIPvarGetData(var)->data.origvardata.linkingvardata->pricingvars)
147 #else
148 /** returns the pricing variables of an linking variable */
149 extern
150 SCIP_VAR** GCGlinkingVarGetPricingVars(
151  SCIP_VAR* var /**< SCIP variable structure */
152  );
153 #endif
154 
155 /** sets the pricing var of the corresponding linking variable at the specified position */
156 extern
158  SCIP_VAR* origvar, /**< original variable */
159  int pricingprobnr, /**< number of pricing problem */
160  SCIP_VAR* var /**< pricing variable */
161  );
162 
163 #ifdef NDEBUG
164 #define GCGoriginalVarGetNMastervars(var) (SCIPvarGetData(var)->data.origvardata.nmastervars)
165 #else
166 /** returns the number of master variables the original variable is contained in */
167 extern
169  SCIP_VAR* var /**< variable data structure */
170  );
171 #endif
172 
173 #ifdef NDEBUG
174 #define GCGoriginalVarGetMastervars(var) (SCIPvarGetData(var)->data.origvardata.mastervars)
175 #else
176 /** returns the master variables the original variable is contained in */
177 extern
178 SCIP_VAR** GCGoriginalVarGetMastervars(
179  SCIP_VAR* var /**< variable data structure */
180  );
181 #endif
182 
183 #ifdef NDEBUG
184 #define GCGoriginalVarGetMastervals(var) (SCIPvarGetData(var)->data.origvardata.mastervals)
185 #else
186 /** returns the fraction of master variables the original variable is contained in */
187 extern
188 SCIP_Real* GCGoriginalVarGetMastervals(
189  SCIP_VAR* var /**< variable data structure */
190  );
191 #endif
192 
193 #ifdef NDEBUG
194 #define GCGoriginalVarGetCoefs(var) (SCIPvarGetData(var)->data.origvardata.coefs)
195 #else
196 /** returns the fraction of master variables the original variable is contained in */
197 extern
198 SCIP_Real* GCGoriginalVarGetCoefs(
199  SCIP_VAR* var /**< variable data structure */
200  );
201 #endif
202 
203 #ifdef NDEBUG
204 #define GCGoriginalVarGetMasterconss(var) (SCIPvarGetData(var)->data.origvardata.masterconss)
205 #else
206 /** returns the fraction of master variables the original variable is contained in */
207 extern
208 SCIP_CONS** GCGoriginalVarGetMasterconss(
209  SCIP_VAR* var /**< variable data structure */
210  );
211 #endif
212 
213 /** adds a coefficient of the master variable to the coefs array for the resp. constraint */
214 extern
215 SCIP_RETCODE GCGoriginalVarAddCoef(
216  SCIP* scip, /**< SCIP data structure */
217  SCIP_VAR* var, /**< variable to add coef */
218  SCIP_Real val, /**< coefficent to set */
219  SCIP_CONS* cons /**< constraint the variable is in */
220  );
221 
222 /** adds variable to a new block, making a linkingvariable out of it, if necessary */
223 extern
224 SCIP_RETCODE GCGoriginalVarAddBlock(
225  SCIP* scip, /**< SCIP data structure */
226  SCIP_VAR* var, /**< var that is added to a block */
227  int newblock, /**< the new block the variable will be in */
228  int nblocks, /**< total number of pricing problems */
229  DEC_DECMODE mode /**< the decomposition mode */
230  );
231 
232 #ifdef NDEBUG
233 #define GCGlinkingVarGetLinkingConss(var) (SCIPvarGetData(var)->data.origvardata.linkingvardata->linkconss)
234 #else
235 /** returns the linking constraints */
236 extern
237 SCIP_CONS** GCGlinkingVarGetLinkingConss(
238  SCIP_VAR* var /**< variable data structure */
239  );
240 #endif
241 
242 /** sets the linking constraints*/
243 extern
245  SCIP_VAR* var, /**< variable data structure */
246  SCIP_CONS* cons, /**< linking constraint */
247  int index /**< index of pricing problem */
248  );
249 
250 /** returns the blocks the linking variable is in */
251 extern
252 SCIP_RETCODE GCGlinkingVarGetBlocks(
253  SCIP_VAR* var, /**< SCIP variable structure */
254  int nblocks, /**< number of blocks the linking variable is in */
255  int* blocks /**< array to store the blocks of the linking variable */
256  );
257 
258 #ifdef NDEBUG
259 #define GCGlinkingVarGetNBlocks(var) (SCIPvarGetData(var)->data.origvardata.linkingvardata->nblocks)
260 #else
261 /** returns the number of blocks the linking variable is in */
262 extern
264  SCIP_VAR* var /**< SCIP variable structure */
265  );
266 #endif
267 
268 #ifdef NDEBUG
269 #define GCGoriginalVarGetNCoefs(var) (SCIPvarGetData(var)->data.origvardata.ncoefs)
270 #else
271 /** returns the number of coefficients of master constraints the original variable is contained in */
272 extern
274  SCIP_VAR* var /**< SCIP variable structure */
275  );
276 #endif
277 
278 /** sets the number of master variables the original variable is contained in */
279 extern
281  SCIP_VAR* var, /**< SCIP variable structure */
282  int coef /**< number of coefficient to set */
283  );
284 
285 /** returns TRUE or FALSE whether a master variable is a direct copy of a linking variable or not */
286 extern
287 SCIP_Bool GCGmasterVarIsLinking(
288  SCIP_VAR* var /**< variable data structure */
289  );
290 
291 /** returns scip instance corresponding to master variable */
292 extern
293 SCIP* GCGmasterVarGetProb(
294  SCIP_VAR* var /**< variable data structure */
295  );
296 
297 #ifdef NDEBUG
298 #define GCGmasterVarIsRay(var) (SCIPvarGetData(var)->data.mastervardata.isray)
299 #else
300 /** returns whether the master variable is a ray */
301 extern
302 SCIP_Bool GCGmasterVarIsRay(
303  SCIP_VAR* var /**< variable data structure */
304  );
305 #endif
306 
307 #ifdef NDEBUG
308 #define GCGmasterVarIsArtificial(var) (SCIPvarGetData(var)->data.mastervardata.isartificial)
309 #else
310 /** returns TRUE or FALSE whether a master variable is an artificial variable */
311 extern
312 SCIP_Bool GCGmasterVarIsArtificial(
313  SCIP_VAR* var /**< variable data structure */
314  );
315 #endif
316 
317 #ifdef NDEBUG
318 #define GCGmasterVarGetNOrigvars(var) (SCIPvarGetData(var)->data.mastervardata.norigvars)
319 #else
320 /** returns the number of original variables the master variable is contained in */
321 extern
323  SCIP_VAR* var /**< variable data structure */
324  );
325 #endif
326 
327 #ifdef NDEBUG
328 #define GCGmasterVarGetOrigvars(var) (SCIPvarGetData(var)->data.mastervardata.origvars)
329 #else
330 /** returns the original variables the master variable is contained in */
331 extern
332 SCIP_VAR** GCGmasterVarGetOrigvars(
333  SCIP_VAR* var /**< variable data structure */
334  );
335 #endif
336 
337 #ifdef NDEBUG
338 #define GCGmasterVarGetOrigvals(var) (SCIPvarGetData(var)->data.mastervardata.origvals)
339 #else
340 /** returns the fraction of original variables the master variable is contained in */
341 extern
342 SCIP_Real* GCGmasterVarGetOrigvals(
343  SCIP_VAR* var /**< variable data structure */
344  );
345 #endif
346 
347 /** returns the fraction of the original variable the master variable is contained in */
348 extern
349 SCIP_Real GCGmasterVarGetOrigval(
350  SCIP_VAR* mastervar, /**< master variable data structure */
351  SCIP_VAR* origvar /**< original variable data structure */
352 );
353 
354 #ifdef NDEBUG
355 #define GCGmasterVarGetOrigvalmap(var) (SCIPvarGetData(var)->data.mastervardata.origvar2val)
356 #else
357 /** returns a hash map that stores the fraction of original variables the master variable is contained in */
358 extern
359 SCIP_HASHMAP* GCGmasterVarGetOrigvalmap(
360  SCIP_VAR* var /**< master variable data structure */
361 );
362 #endif
363 
364 #ifdef NDEBUG
365 #define GCGpricingVarGetNOrigvars(var) (SCIPvarGetData(var)->data.pricingvardata.norigvars)
366 #else
367 /** returns the number of original variables the pricing variable is contained in */
368 extern
370  SCIP_VAR* var /**< variable data structure */
371  );
372 #endif
373 
374 #ifdef NDEBUG
375 #define GCGpricingVarGetOrigvars(var) (SCIPvarGetData(var)->data.pricingvardata.origvars)
376 #else
377 /** returns the original variables the pricing variable is contained in */
378 extern
379 SCIP_VAR** GCGpricingVarGetOrigvars(
380  SCIP_VAR* var /**< variable data structure */
381  );
382 #endif
383 
384 #ifdef NDEBUG
385 #define GCGvarGetBlock(var) (SCIPvarGetData(var)->blocknr)
386 #else
387 /** returns the block of the variable */
388 extern
389 int GCGvarGetBlock(
390  SCIP_VAR* var /**< variable data structure */
391  );
392 #endif
393 
394 /** sets the block of the variable */
395 extern
396 void GCGvarSetBlock(
397  SCIP_VAR* var, /**< variable to set block for */
398  int block /**< block to set */
399  );
400 
401 /** creates the data for all variables of the original program */
402 extern
403 SCIP_RETCODE GCGcreateOrigVarsData(
404  SCIP* scip /**< SCIP data structure */
405  );
406 
407 /** frees the data for all variables of the original program */
408 extern
409 SCIP_RETCODE GCGfreeOrigVarsData(
410  SCIP* scip /**< SCIP data structure */
411  );
412 
413 /** creates the data for a variable of the original program */
414 extern
415 SCIP_RETCODE GCGorigVarCreateData(
416  SCIP* scip, /**< SCIP data structure */
417  SCIP_VAR* var /**< pointer to variable object */
418  );
419 
420 #ifdef NDEBUG
421 #define GCGisLinkingVarInBlock(var, block) (GCGlinkingVarGetPricingVars(var)[block] != NULL)
422 #else
423 /** returns TRUE if the linking variable is in the block, FALSE otherwise */
424 extern
425 SCIP_Bool GCGisLinkingVarInBlock(
426  SCIP_VAR* var, /**< variable data structure */
427  int block /**< pricing problem number */
428  );
429 #endif
430 
431 /** determines if the master variable is in the given block */
432 extern
433 SCIP_Bool GCGisMasterVarInBlock(
434  SCIP_VAR* mastervar, /**< master variable */
435  int blocknr /**< block number to check */
436  );
437 
438 /** informs an original variable, that a variable in the master problem was created,
439  * that contains a part of the original variable.
440  * Saves this information in the original variable's data
441  */
442 extern
443 SCIP_RETCODE GCGoriginalVarAddMasterVar(
444  SCIP* scip, /**< SCIP data structure */
445  SCIP_VAR* origvar, /**< original variable */
446  SCIP_VAR* var, /**< master variable */
447  SCIP_Real val /**< fraction of the original variable */
448  );
449 
450 /* informs an original variable, that a variable in the master problem was deleted,
451  * that contains a part of the original variable.
452  * Update the information in the original variable's data
453  */
454 extern
455 SCIP_RETCODE GCGoriginalVarRemoveMasterVar(
456  SCIP* scip, /**< SCIP data structure */
457  SCIP_VAR* origvar, /**< original variable */
458  SCIP_VAR* var /**< master variable */
459  );
460 
461 
462 /** creates the corresponding pricing variable for the given original variable */
463 extern
464 SCIP_RETCODE GCGoriginalVarCreatePricingVar(
465  SCIP* scip, /**< SCIP data structure */
466  SCIP_VAR* origvar, /**< original variable */
467  SCIP_VAR** var /**< pricing variable */
468  );
469 
470 /** creates the corresponding pricing variable for the given original variable */
471 extern
472 SCIP_RETCODE GCGlinkingVarCreatePricingVar(
473  SCIP* pricingscip, /**< pricing problem SCIP data structure */
474  int pricingprobnr, /**< number of the pricing problem */
475  SCIP_VAR* origvar, /**< original variable */
476  SCIP_VAR** var /**< pointer to store new pricing variable */
477  );
478 
479 /** creates the corresponding constraint in the master problem for the linking variable */
480 extern
481 SCIP_RETCODE GCGlinkingVarCreateMasterCons(
482  SCIP* masterscip, /**< master problem SCIP data structure */
483  int pricingprobnr, /**< number of the pricing problem */
484  SCIP_VAR* origvar, /**< original variable */
485  SCIP_CONS** linkcons /**< constraint linking pricing variables */
486  );
487 
488 /** creates the master var and initializes the vardata */
489 extern
490 SCIP_RETCODE GCGcreateMasterVar(
491  SCIP* scip, /**< SCIP data structure */
492  SCIP* origscip, /**< original SCIP data structure */
493  SCIP* pricingscip, /**< pricing problem SCIP data structure */
494  SCIP_VAR** newvar, /**< pointer to store new master variable */
495  const char* varname, /**< new variable name */
496  SCIP_Real objcoeff, /**< new objective coeffient */
497  SCIP_VARTYPE vartype, /**< new variable type */
498  SCIP_Bool solisray, /**< indicates whether new variable is a ray */
499  int prob, /**< number of pricing problem that created this variable */
500  int nsolvars, /**< number of variables in the solution */
501  SCIP_Real* solvals, /**< values of variables in the solution */
502  SCIP_VAR** solvars, /**< variables with non zero coefficient in the solution */
503  SCIP_Bool auxiliaryvar /**< is new variable an Benders' auxiliary variables? */
504  );
505 
506 /** creates initial master variables and the vardata */
507 SCIP_RETCODE GCGcreateInitialMasterVar(
508  SCIP* scip, /**< SCIP data structure */
509  SCIP_VAR* var, /**< original variable */
510  SCIP_VAR** newvar /**< pointer to store new variable */
511  );
512 
513 /** creates artificial variable and the vardata */
514 SCIP_RETCODE GCGcreateArtificialVar(
515  SCIP* scip, /**< SCIP data structure */
516  SCIP_VAR** newvar, /**< pointer to store new variable */
517  const char* name, /**< name of variable, or NULL for automatic name creation */
518  SCIP_Real objcoef /**< objective coefficient of artificial variable */
519  );
520 
521 /* adds the vardata to the auxiliary variable */
522 extern
523 SCIP_RETCODE GCGaddDataAuxiliaryVar(
524  SCIP* scip, /**< SCIP data structure */
525  SCIP_VAR* auxiliaryvar, /**< the auxiliary variable */
526  int probnumber /**< the subproblem number */
527  );
528 
529 /** sets the creation node of this var */
530 extern
531 void GCGsetCreationNode(
532  SCIP_VAR* var, /**< created variable */
533  SCIP_Longint creationNode /**< node */
534  );
535 
536 #ifdef NDEBUG
537 #define GCGgetCreationNode(var) (SCIPvarGetData(var)->creationnode)
538 #else
539 /** returns the creation node of this var */
540 extern
541 long long int GCGgetCreationNode(
542  SCIP_VAR* var /**< created variable */
543  );
544 #endif
545 
546 /** sets the creation time of this var */
547 extern
548 void GCGsetCreationTime(
549  SCIP_VAR* var, /**< created variable */
550  SCIP_Real time /**< creation time */
551  );
552 
553 #ifdef NDEBUG
554 #define GCGgetCreationTime(var) (SCIPvarGetData(var)->creationtime)
555 #else
556 /** returns the creation time of this var */
557 extern
558 SCIP_Real GCGgetCreationTime(
559  SCIP_VAR* var /**< created variable */
560  );
561 #endif
562 
563 /** store pricing reduced cost call */
564 extern
566  SCIP_VAR* var, /**< variable data structure */
567  SCIP_Longint rootredcostcall /**< iteration at which the variable is created */
568  );
569 
570 #ifdef NDEBUG
571 #define GCGgetRootRedcostCall(var) (SCIPvarGetData(var)->rootredcostcall)
572 #else
573 /** return stored pricing reduced cost call */
574 extern
575 SCIP_Longint GCGgetRootRedcostCall(
576  SCIP_VAR* var /**< variable data structure */
577  );
578 #endif
579 
580 #ifdef NDEBUG
581 #define GCGgetIteration(var) (SCIPvarGetData(var)->iteration)
582 #else
583 /** returns the iteration when the var was created */
584 extern
585 SCIP_Longint GCGgetIteration(
586  SCIP_VAR* var /**< created variable */
587  );
588 #endif
589 
590 /** sets the iteration when the var was created */
591 extern
592 void GCGsetIteration(
593  SCIP_VAR* var, /**< created variable */
594  SCIP_Longint iteration /**< iteration that this var was created */
595  );
596 
597 /** store gap */
598 void GCGsetVarGap(
599  SCIP_VAR* var, /**< variable data structure */
600  SCIP_Real gap /**< present gap when variable is created */
601  );
602 
603 #ifdef NDEBUG
604 #define GCGgetVarGap(var) (SCIPvarGetData(var)->gap)
605 #else
606 /** return stored gap */
607 SCIP_Real GCGgetVarGap(
608  SCIP_VAR* var /**< variable data structure */
609  );
610 #endif
611 
612 /** store reduced cost */
613 void GCGsetRedcost(
614  SCIP* scip, /**< SCIP data structure */
615  SCIP_VAR* var, /**< variable data structure */
616  SCIP_Real redcost /**< reduced cost of the variable at creation */
617  );
618 
619 #ifdef NDEBUG
620 #define GCGgetRedcost(var) (SCIPvarGetData(var)->redcost)
621 #else
622 /** return stored reduced cost */
623 SCIP_Real GCGgetRedcost(
624  SCIP_VAR* var /**< variable data structure */
625  );
626 #endif
627 
628 /** updates the statistics part of the variable */
630  SCIP* scip, /**< master SCIP data structure */
631  SCIP* origprob, /**< original SCIP data structure */
632  SCIP_VAR* newvar, /**< new variable for statistic update */
633  SCIP_Real redcost /**< reduced cost of the variable */
634  );
635 
636 /** prints the given variable: name, type (original, master or pricing) block number,
637  * and the list of all variables related to the given variable */
638 extern
639 void GCGprintVar(
640  SCIP* scip, /**< SCIP data structure */
641  FILE* file, /**< File to write information to, or NULL for stdout */
642  SCIP_VAR* var /**< variable that should be printed */
643  );
644 
645 #ifdef NDEBUG
646 #define GCGmasterVarGetIndex(var) (SCIPvarGetData(var)->data.mastervardata.index)
647 #else
648 /** returns the index of the mater variable */
649 extern
651  SCIP_VAR* var /**< SCIP variable structure */
652  );
653 #endif
654 
655 /** sets the index of the master variable */
656 extern
658  SCIP_VAR* var, /**< SCIP variable structure */
659  int index /**< index */
660  );
661 
662 #ifdef __cplusplus
663 }
664 
665 
666 #endif
667 /** @} */
668 #endif
void GCGupdateVarStatistics(SCIP *scip, SCIP *origprob, SCIP_VAR *newvar, SCIP_Real redcost)
Definition: gcgvar.c:1761
SCIP_VAR * GCGpricingVarGetOriginalVar(SCIP_VAR *var)
Definition: gcgvar.c:511
SCIP_RETCODE GCGoriginalVarAddMasterVar(SCIP *scip, SCIP_VAR *origvar, SCIP_VAR *var, SCIP_Real val)
Definition: gcgvar.c:1121
SCIP_RETCODE GCGlinkingVarCreatePricingVar(SCIP *pricingscip, int pricingprobnr, SCIP_VAR *origvar, SCIP_VAR **var)
Definition: gcgvar.c:1250
void GCGlinkingVarSetPricingVar(SCIP_VAR *origvar, int pricingprobnr, SCIP_VAR *var)
Definition: gcgvar.c:427
SCIP_Real GCGmasterVarGetOrigval(SCIP_VAR *mastervar, SCIP_VAR *origvar)
Definition: gcgvar.c:949
SCIP_RETCODE GCGpricingVarAddOrigVar(SCIP *scip, SCIP_VAR *pricingvar, SCIP_VAR *origvar)
Definition: gcgvar.c:531
SCIP_Bool GCGmasterVarIsArtificial(SCIP_VAR *var)
Definition: gcgvar.c:869
SCIP_RETCODE GCGoriginalVarAddCoef(SCIP *scip, SCIP_VAR *var, SCIP_Real val, SCIP_CONS *cons)
Definition: gcgvar.c:679
int GCGvarGetBlock(SCIP_VAR *var)
Definition: gcgvar.c:1033
void GCGsetVarGap(SCIP_VAR *var, SCIP_Real gap)
Definition: gcgvar.c:1703
void GCGsetCreationTime(SCIP_VAR *var, SCIP_Real time)
Definition: gcgvar.c:1619
SCIP_Bool GCGvarIsPricing(SCIP_VAR *var)
Definition: gcgvar.c:134
void GCGoriginalVarSetPricingVar(SCIP_VAR *var, SCIP_VAR *pricingvar)
Definition: gcgvar.c:235
SCIP_VAR ** GCGlinkingVarGetPricingVars(SCIP_VAR *var)
Definition: gcgvar.c:409
int GCGoriginalVarGetNMastervars(SCIP_VAR *var)
Definition: gcgvar.c:569
SCIP_Bool GCGvarIsMaster(SCIP_VAR *var)
Definition: gcgvar.c:150
SCIP_Longint GCGgetIteration(SCIP_VAR *var)
Definition: gcgvar.c:1690
SCIP_VAR ** GCGpricingVarGetOrigvars(SCIP_VAR *var)
Definition: gcgvar.c:1015
int GCGlinkingVarGetNBlocks(SCIP_VAR *var)
Definition: gcgvar.c:493
int GCGpricingVarGetNOrigvars(SCIP_VAR *var)
Definition: gcgvar.c:997
SCIP_RETCODE GCGlinkingVarCreateMasterCons(SCIP *masterscip, int pricingprobnr, SCIP_VAR *origvar, SCIP_CONS **linkcons)
Definition: gcgvar.c:1285
SCIP_Real * GCGoriginalVarGetCoefs(SCIP_VAR *var)
Definition: gcgvar.c:623
void GCGvarSetBlock(SCIP_VAR *var, int block)
Definition: gcgvar.c:1048
SCIP_Bool GCGoriginalVarIsLinking(SCIP_VAR *var)
Definition: gcgvar.c:182
int GCGoriginalVarGetNCoefs(SCIP_VAR *var)
Definition: gcgvar.c:641
void GCGprintVar(SCIP *scip, FILE *file, SCIP_VAR *var)
Definition: gcgvar.c:1789
SCIP_RETCODE GCGcreateOrigVarsData(SCIP *scip)
Definition: gcgvar.c:255
void GCGoriginalVarSetNCoefs(SCIP_VAR *var, int coef)
Definition: gcgvar.c:658
SCIP_Real * GCGmasterVarGetOrigvals(SCIP_VAR *var)
Definition: gcgvar.c:932
SCIP_Real GCGgetCreationTime(SCIP_VAR *var)
Definition: gcgvar.c:1634
void GCGmasterVarSetIndex(SCIP_VAR *var, int index)
Definition: gcgvar.c:1891
SCIP_RETCODE GCGoriginalVarAddBlock(SCIP *scip, SCIP_VAR *var, int newblock, int nblocks, DEC_DECMODE mode)
Definition: gcgvar.c:726
SCIP_Bool GCGvarIsOriginal(SCIP_VAR *var)
Definition: gcgvar.c:166
long long int GCGgetCreationNode(SCIP_VAR *var)
Definition: gcgvar.c:1606
enum Decmode DEC_DECMODE
Definition: type_decomp.h:68
void GCGsetRootRedcostCall(SCIP_VAR *var, SCIP_Longint rootredcostcall)
Definition: gcgvar.c:1647
void GCGsetRedcost(SCIP *scip, SCIP_VAR *var, SCIP_Real redcost)
Definition: gcgvar.c:1731
SCIP_Bool GCGmasterVarIsRay(SCIP_VAR *var)
Definition: gcgvar.c:852
SCIP_RETCODE GCGcopyPricingvarDataToMastervar(SCIP *scip, SCIP_VAR *pricingvar, SCIP_VAR *mastervar)
Definition: gcgvar.c:367
SCIP * GCGmasterVarGetProb(SCIP_VAR *var)
SCIP_VAR ** GCGoriginalVarGetMastervars(SCIP_VAR *var)
Definition: gcgvar.c:587
SCIP_Bool GCGisMasterVarInBlock(SCIP_VAR *mastervar, int blocknr)
Definition: gcgvar.c:1084
SCIP_RETCODE GCGaddDataAuxiliaryVar(SCIP *scip, SCIP_VAR *auxiliaryvar, int probnumber)
Definition: gcgvar.c:1554
SCIP_Real * GCGoriginalVarGetMastervals(SCIP_VAR *var)
Definition: gcgvar.c:605
SCIP_VAR * GCGoriginalVarGetPricingVar(SCIP_VAR *var)
Definition: gcgvar.c:216
void GCGsetIteration(SCIP_VAR *var, SCIP_Longint iteration)
Definition: gcgvar.c:1675
SCIP_RETCODE GCGfreeOrigVarsData(SCIP *scip)
Definition: gcgvar.c:279
void GCGsetCreationNode(SCIP_VAR *var, SCIP_Longint creationNode)
Definition: gcgvar.c:1591
SCIP_RETCODE GCGcreateMasterVar(SCIP *scip, SCIP *origscip, SCIP *pricingscip, SCIP_VAR **newvar, const char *varname, SCIP_Real objcoeff, SCIP_VARTYPE vartype, SCIP_Bool solisray, int prob, int nsolvars, SCIP_Real *solvals, SCIP_VAR **solvars, SCIP_Bool auxiliaryvar)
Definition: gcgvar.c:1309
SCIP_Real GCGgetVarGap(SCIP_VAR *var)
Definition: gcgvar.c:1718
SCIP_RETCODE GCGcreateArtificialVar(SCIP *scip, SCIP_VAR **newvar, const char *name, SCIP_Real objcoef)
Definition: gcgvar.c:1522
SCIP_Bool GCGoriginalVarIsTransVar(SCIP_VAR *var)
Definition: gcgvar.c:199
SCIP_RETCODE GCGoriginalVarCreatePricingVar(SCIP *scip, SCIP_VAR *origvar, SCIP_VAR **var)
Definition: gcgvar.c:1213
SCIP_RETCODE GCGlinkingVarGetBlocks(SCIP_VAR *var, int nblocks, int *blocks)
Definition: gcgvar.c:450
int GCGmasterVarGetNOrigvars(SCIP_VAR *var)
Definition: gcgvar.c:886
int GCGmasterVarGetIndex(SCIP_VAR *var)
Definition: gcgvar.c:1878
SCIP_CONS ** GCGlinkingVarGetLinkingConss(SCIP_VAR *var)
Definition: gcgvar.c:787
SCIP_HASHMAP * GCGmasterVarGetOrigvalmap(SCIP_VAR *var)
Definition: gcgvar.c:979
SCIP_VAR ** GCGmasterVarGetOrigvars(SCIP_VAR *var)
Definition: gcgvar.c:908
SCIP_Longint GCGgetRootRedcostCall(SCIP_VAR *var)
Definition: gcgvar.c:1662
SCIP_CONS ** GCGoriginalVarGetMasterconss(SCIP_VAR *var)
Definition: gcgvar.c:710
SCIP_Bool GCGmasterVarIsLinking(SCIP_VAR *var)
Definition: gcgvar.c:828
SCIP_RETCODE GCGoriginalVarRemoveMasterVar(SCIP *scip, SCIP_VAR *origvar, SCIP_VAR *var)
Definition: gcgvar.c:1168
data structures for GCG variable data
type definitions for decomposition information in GCG projects
SCIP_Bool GCGisLinkingVarInBlock(SCIP_VAR *var, int block)
Definition: gcgvar.c:1064
SCIP_RETCODE GCGcreateInitialMasterVar(SCIP *scip, SCIP_VAR *var, SCIP_VAR **newvar)
Definition: gcgvar.c:1472
void GCGlinkingVarSetLinkingCons(SCIP_VAR *var, SCIP_CONS *cons, int index)
Definition: gcgvar.c:806
SCIP_Real GCGgetRedcost(SCIP_VAR *var)
Definition: gcgvar.c:1748
SCIP_RETCODE GCGorigVarCreateData(SCIP *scip, SCIP_VAR *var)
Definition: gcgvar.c:313