Go to the documentation of this file.
15 #ifndef _BB_CONSTANTS_H
16 #define _BB_CONSTANTS_H
20 #define BB_BUNCH 127 * sizeof(double)
23 #define ERROR__NO_BRANCHING_CANDIDATE -101
24 #define ERROR__ILLEGAL_RETURN_CODE -102
25 #define ERROR__NUMERICAL_INSTABILITY -103
26 #define ERROR__ILLEGAL_BRANCHING -104
27 #define ERROR__COMM_ERROR -105
28 #define ERROR__DUAL_INFEASIBLE -106
30 #define ZERO_ONE_PROBLEM 0
31 #define INTEGER_PROBLEM 1
32 #define MIXED_INTEGER_PROBLEM 2
41 #define EXPLICIT_LIST 1
42 #define NO_DATA_STORED 2
45 #define NODE_STATUS__CANDIDATE 0
46 #define NODE_STATUS__BRANCHED_ON 1
47 #define NODE_STATUS__HELD 2
48 #define NODE_STATUS__ROOT 3
49 #define NODE_STATUS__PRUNED 4
50 #define NODE_STATUS__TIME_LIMIT 5
51 #define NODE_STATUS__ITERATION_LIMIT 6
52 #define NODE_STATUS__WARM_STARTED 7
53 #define NODE_STATUS__WSPRUNED 8
55 #define NF_CHECK_ALL 0x00
56 #define NF_CHECK_AFTER_LAST 0x01
57 #define NF_CHECK_UNTIL_LAST 0x02
58 #define NF_CHECK_NOTHING 0x04
63 #define CHECK_BEFORE_DIVE 2
67 #define NODE_BRANCHED_ON 1
68 #define INFEASIBLE_HOLD_FOR_NEXT_PHASE 2
69 #define OVER_UB_HOLD_FOR_NEXT_PHASE 3
70 #define INFEASIBLE_PRUNED 4
71 #define FEASIBLE_PRUNED 5
72 #define OVER_UB_PRUNED 6
73 #define DISCARDED_NODE 7
75 #define ITERATION_LIMIT 9
76 #define REPRICED_NODE 10
77 #define MC_FEASIBLE_PRUNED 11
79 #define PRUNED_HAS_CAN_SOLUTION 12
80 #define NOT_PRUNED_HAS_CAN_SOLUTION 13
83 #define VBC_INTERIOR_NODE 1
85 #define VBC_ACTIVE_NODE 3
86 #define VBC_CAND_NODE 4
87 #define VBC_FEAS_SOL_FOUND 5
88 #define VBC_PRUNED_INFEASIBLE 6
89 #define VBC_PRUNED_FATHOMED 7
95 #define KEEP_ON_DISK_FULL 1
96 #define KEEP_ON_DISK_VBC_TOOL 2
97 #define KEEP_IN_MEMORY 3
101 #define FULL_LOGGING 1
117 # define INVALID_BASIS_STATUS 255
123 # define SLACK_AT_LB 0
124 # define SLACK_BASIC 1
125 # define SLACK_AT_UB 2
126 # define SLACK_FREE 3
127 # define SLACK_FIXED 4
131 #define LP_D_INFEASIBLE 1
132 #define LP_D_UNBOUNDED 2
134 #define LP_D_OBJLIM 4
135 #define LP_OPT_FEASIBLE 5
136 #define LP_OPT_FEASIBLE_BUT_CONTINUE 6
137 #define LP_TIME_LIMIT 7
138 #define LP_ABANDONED 8
143 #define LOWER_THAN_LB 0
144 #define HIGHER_THAN_UB 1
147 #define LP_HAS_BEEN_ABANDONED 0
148 #define LP_HAS_NOT_BEEN_MODIFIED 1
149 #define LP_HAS_BEEN_MODIFIED 2
152 #define COLIND_ORDERED 0
153 #define USERIND_ORDERED 1
154 #define COLIND_AND_USERIND_ORDERED 2
158 #define TDF_NOT_ALL 1
159 #define TDF_HAS_ALL 2
162 #define DO_NOT_BRANCH_ON_THIS_ROW 0x01
163 #define ALLOWED_TO_BRANCH_ON 0x02
164 #define CANDIDATE_FOR_BRANCH 0x04
165 #define SWITCH_CANDIDATE_ALLOWED 0x06
166 #define CUT_BRANCHED_ON 0x08
169 #define NO_CONSTRAINT_IS_INEFFECTIVE 0
170 #define NONZERO_SLACKS_ARE_INEFFECTIVE 1
171 #define BASIC_SLACKS_ARE_INEFFECTIVE 2
172 #define ZERO_DUAL_VALUES_ARE_INEFFECTIVE 3
175 #define CUT__DO_NOT_SEND_TO_CP -1
176 #define CUT__SEND_TO_CP -2
177 #define BASE_CONSTRAINT -3
181 #define INTERNAL_CUT_POOL -1
182 #define EXTERNAL_CUT_POOL -2
183 #define INTERNAL_CUT_GEN -3
184 #define EXTERNAL_CUT_GEN -4
188 #define CGL_PROBING_GENERATOR 0
189 #define CGL_KNAPSACK_GENERATOR 1
190 #define CGL_CLIQUE_GENERATOR 2
191 #define CGL_GOMORY_GENERATOR 3
192 #define CGL_TWOMIR_GENERATOR 4
193 #define CGL_FLOWCOVER_GENERATOR 5
194 #define CGL_ODDHOLE_GENERATOR 6
195 #define CGL_MIR_GENERATOR 7
196 #define CGL_NUM_GENERATORS 7
200 #define CGL_CHAIN_START 0
201 #define CGL_CHAIN_CONTINUE 1
202 #define CGL_CHAIN_CHECK 2
203 #define CGL_CHAIN_PAUSE 3
204 #define CGL_CHAIN_STOP 4
207 #define VIOLATED_ROW 0
214 #define NOT_FIXED 0x01
216 #define TEMP_FIXED_TO_LB 0x02
217 #define PERM_FIXED_TO_LB 0x04
218 #define TEMP_PERM_LB__SWITCH 0x06
219 #define NOT_FIXED__TEMP_LB__SWITCH 0x03
220 #define NOT_FIXED__PERM_LB__SWITCH 0x05
222 #define TEMP_FIXED_TO_UB 0x08
223 #define PERM_FIXED_TO_UB 0x10
224 #define TEMP_PERM_UB__SWITCH 0x18
225 #define NOT_FIXED__TEMP_UB__SWITCH 0x09
226 #define NOT_FIXED__PERM_UB__SWITCH 0x11
228 #define BASE_VARIABLE 0x20
229 #define VARIABLE_BRANCHED_ON 0x40
231 #define NOT_REMOVABLE 0x60
240 #define FATHOM__DO_NOT_GENERATE_COLS__DISCARD 0x00
241 #define FATHOM__DO_NOT_GENERATE_COLS__SEND 0x01
242 #define FATHOM__GENERATE_COLS__RESOLVE 0x02
243 #define COLGEN__FATHOM 0x03
245 #define BEFORE_BRANCH__DO_NOT_GENERATE_COLS 0x04
246 #define BEFORE_BRANCH__GENERATE_COLS__RESOLVE 0x08
248 #define COLGEN_REPRICING 0x10
251 #define GENERATE_NEXTIND 0
252 #define GENERATE_REAL_NEXTIND 1
255 #define CUT_FROM_CG 0
256 #define CUT_FROM_CP 1
257 #define CUT_FROM_TM 2
258 #define CUT_LEFTOVER 3
259 #define CUT_NOT_IN_MATRIX_SLACK 5
261 #define CUT_VIOLATED_SLACK 4
265 #define UNPACK_CUTS_MULTIPLE 0
266 #define UNPACK_CUTS_SINGLE 1
269 #define EXPLICIT_ROW 100
270 #define OPTIMALITY_CUT_FIRST 101
271 #define OPTIMALITY_CUT_SECOND 102
272 #define ORIGINAL_CONSTRAINT 103
275 #define CANDIDATE_VARIABLE 0
276 #define CANDIDATE_CUT_IN_MATRIX 1
277 #define CANDIDATE_CUT_NOT_IN_MATRIX 2
278 #define VIOLATED_SLACK 3
279 #define SLACK_TO_BE_DISCARDED 4
282 #define BRANCHING_VARIABLE 0
283 #define BRANCHING_CUT 1
284 #define SOS1_IMPLICIT 2
288 #define DO_NOT_BRANCH 1
289 #define DO_NOT_BRANCH__FATHOMED 2
290 #define DO_NOT_BRANCH__FEAS_SOL 3
294 #define FATHOMED_NODE -2
295 #define FEAS_SOL_FOUND -3
298 #define BRANCHING_INF_NODE -4
309 #define DISCARD_SLACKS_BEFORE_NEW_ITERATION 0
310 #define DISCARD_SLACKS_WHEN_STARTING_NEW_NODE 1
313 #define DISP_FEAS_SOLUTION 0
314 #define DISP_RELAXED_SOLUTION 1
315 #define DISP_FINAL_RELAXED_SOLUTION 2
322 #define COLGEN_STR_SIZE 5
323 #define COLGEN_STR_ARRAY { \
324 { "FATHOM__DO_NOT_GENERATE_COLS__DISCARD", \
325 FATHOM__DO_NOT_GENERATE_COLS__DISCARD }, \
326 { "FATHOM__DO_NOT_GENERATE_COLS__SEND", \
327 FATHOM__DO_NOT_GENERATE_COLS__SEND }, \
328 { "FATHOM__GENERATE_COLS__RESOLVE", \
329 FATHOM__GENERATE_COLS__RESOLVE }, \
330 { "BEFORE_BRANCH__DO_NOT_GENERATE_COLS", \
331 BEFORE_BRANCH__DO_NOT_GENERATE_COLS }, \
332 { "BEFORE_BRANCH__GENERATE_COLS__RESOLVE", \
333 BEFORE_BRANCH__GENERATE_COLS__RESOLVE } \
337 #ifdef COMPILE_FRAC_BRANCHING
338 #define COMPARE_CAN_STR_SIZE 9
339 #define COMPARE_CAN_STR_ARRAY { \
340 { "LOWEST_LOW_FRAC", LOWEST_LOW_FRAC }, \
341 { "HIGHEST_LOW_FRAC", HIGHEST_LOW_FRAC }, \
342 { "LOWEST_HIGH_FRAC", LOWEST_HIGH_FRAC }, \
343 { "HIGHEST_HIGH_FRAC", HIGHEST_HIGH_FRAC }, \
344 { "BIGGEST_DIFFERENCE_OBJ", BIGGEST_DIFFERENCE_OBJ }, \
345 { "LOWEST_LOW_OBJ", LOWEST_LOW_OBJ }, \
346 { "HIGHEST_LOW_OBJ", HIGHEST_LOW_OBJ }, \
347 { "LOWEST_HIGH_OBJ", LOWEST_HIGH_OBJ }, \
348 { "HIGHEST_HIGH_OBJ", HIGHEST_HIGH_OBJ } \
351 #define COMPARE_CAN_STR_SIZE 5
352 #define COMPARE_CAN_STR_ARRAY { \
353 { "BIGGEST_DIFFERENCE_OBJ", BIGGEST_DIFFERENCE_OBJ }, \
354 { "LOWEST_LOW_OBJ", LOWEST_LOW_OBJ }, \
355 { "HIGHEST_LOW_OBJ", HIGHEST_LOW_OBJ }, \
356 { "LOWEST_HIGH_OBJ", LOWEST_HIGH_OBJ }, \
357 { "HIGHEST_HIGH_OBJ", HIGHEST_HIGH_OBJ } \
364 #define DIFFERENT_CUTS 1
366 #define FIRST_CUT_BETTER 3
367 #define SECOND_CUT_BETTER 4
370 #define TEST_ZERO_ONE 0
371 #define TEST_INTEGRALITY 1
373 #define IP_INFEASIBLE 0
374 #define IP_FEASIBLE 1
375 #define IP_FEASIBLE_BUT_CONTINUE 2
376 #define IP_ALMOST_FEASIBLE 3
377 #define IP_FEASIBILITY_NOT_KNOWN 4
378 #define IP_HEUR_FEASIBLE 5
381 #define DISP_NOTHING 0
382 #define DISP_NZ_INT 1
383 #define DISP_NZ_HEXA 2
384 #define DISP_FRAC_INT 3
385 #define DISP_FRAC_HEXA 4
393 #define SEND_NONZEROS 0
394 #define SEND_FRACTIONS 1
396 #define LP_SOL_TO_CG 0
397 #define LP_SOL_TO_CP 1
398 #define LP_SOL_WITHIN_LP 2
402 #define NO_VBC_EMULATION 0
403 #define VBC_EMULATION_FILE 1
404 #define VBC_EMULATION_LIVE 2
405 #define VBC_EMULATION_FILE_NEW 3
408 #ifdef COMPILE_FRAC_BRANCHING
409 #define HIGHEST_LOW_FRAC 5
410 #define LOWEST_LOW_FRAC 6
411 #define HIGHEST_HIGH_FRAC 7
412 #define LOWEST_HIGH_FRAC 8
415 #define FIRST_CANDIDATE_BETTER 0
416 #define FIRST_CANDIDATE_BETTER_AND_BRANCH_ON_IT 1
417 #define SECOND_CANDIDATE_BETTER 2
418 #define SECOND_CANDIDATE_BETTER_AND_BRANCH_ON_IT 3
419 #define BRANCH_ON_IT 1
422 #ifdef COMPILE_FRAC_BRANCHING
423 #define PREFER_MORE_FRACTIONAL 2
424 #define PREFER_LESS_FRACTIONAL 3
427 #define PRUNE_THIS_CHILD 0
428 #define RETURN_THIS_CHILD 1
429 #define KEEP_THIS_CHILD 2
430 #define PRUNE_THIS_CHILD_FATHOMABLE 3
433 #define PRUNE_THIS_CHILD_INFEASIBLE 4
436 #define USER__DO_NOT_BRANCH 0
437 #define USER__DO_BRANCH 1
438 #define USER__BRANCH_IF_MUST 2
439 #define USER__BRANCH_IF_TAILOFF 3
442 #define USER__CLOSE_TO_HALF 10
443 #define USER__CLOSE_TO_HALF_AND_EXPENSIVE 11
444 #define USER__CLOSE_TO_ONE_AND_CHEAP 12
455 #define NEW_NODE__NONE -1
456 #define NEW_NODE__STARTED -2
457 #define NEW_NODE__ERROR -3
458 #define NEW_NODE__STOP -4
469 #define NO_WARM_START 0
470 #define READ_CP_LIST 1
471 #define READ_TM_LIST 2
474 #define CHECK_ALL_CUTS 0
475 #define CHECK_LEVEL 1
476 #define CHECK_TOUCHES 2
477 #define CHECK_LEVEL_AND_TOUCHES 3
480 #define DELETE_BY_QUALITY 1
481 #define DELETE_BY_TOUCHES 2
483 #define DELETE_DUPLICATES 2
484 #define DELETE_DUPLICATE_AND_INEFFECTIVE 2
488 #define NOTHING_CHANGED 0
489 #define RHS_CHANGED 1
490 #define OBJ_COEFF_CHANGED 2
491 #define CONSTRAINT_MATRIX_CHANGED 3
492 #define COL_BOUNDS_CHANGED 4
493 #define OBJ_SENSE_CHANGED 5
494 #define RHS_SENSE_CHANGED 6
498 #define DO_NOT_TRIM 0
501 #define ON_CRU_VARS 3
505 #define MAT_ROW_ORDERED 0
506 #define MAT_COL_ORDERED 1
514 #define PREP_UNMODIFIED 0
516 #define PREP_MODIFIED 1
518 #define PREP_INFEAS 2
520 #define PREP_SOLVED 3
522 #define PREP_UNBOUNDED 4
523 #define PREP_NUMERIC_ERROR -1
524 #define PREP_OTHER_ERROR -2
529 #define CONTINUOUS_TYPE 0
530 #define BINARY_TYPE 1
531 #define INTEGER_TYPE 2
534 #define BIN_CONT_TYPE 3
535 #define BIN_INT_TYPE 4
536 #define INT_CONT_TYPE 5
537 #define ALL_MIXED_TYPE 6
541 #define CONTINUOUS_ROW 0
543 #define INTEGER_ROW 2
544 #define BIN_CONT_ROW 3
545 #define BIN_INT_ROW 4
546 #define INT_CONT_ROW 5
547 #define ALL_MIXED_ROW 6
552 #define ALL_BOUNDED_ROW 1
553 #define MIXED_BOUNDED_ROW 2
556 #define ALL_INTEGER_VEC 0
557 #define ALL_BINARY_VEC 1
558 #define FRACTIONAL_VEC 2
561 #define MIXED_TYPE_VEC 0
562 #define ALL_POS_VEC 1
563 #define ALL_NEG_VEC 2
568 #define VLENGTH_FIX_DIVING 0
569 #define GUIDED_FIX_DIVING 1
570 #define CROSSOVER_FIX_DIVING 2
571 #define EUC_FIX_DIVING 3
572 #define RANK_FIX_DIVING 4
573 #define FRAC_FIX_DIVING 5
574 #define VLENGTH_DIVING 6
575 #define GUIDED_DIVING 7
576 #define CROSSOVER_DIVING 8
578 #define RANK_DIVING 10
579 #define FRAC_DIVING 11
580 #define DIVING_HEURS_CNT 12
581 #define ROOT_DIVING 20
582 #define COEFF_DIVING 21
587 #define RINS_SEARCH 1