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