00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef _BB_CONSTANTS_H
00016 #define _BB_CONSTANTS_H
00017
00018 #include "symphony.h"
00019
00020 #define BB_BUNCH 127 * sizeof(double)
00021
00022
00023 #define ERROR__NO_BRANCHING_CANDIDATE -101
00024 #define ERROR__ILLEGAL_RETURN_CODE -102
00025 #define ERROR__NUMERICAL_INSTABILITY -103
00026 #define ERROR__ILLEGAL_BRANCHING -104
00027 #define ERROR__COMM_ERROR -105
00028
00029
00030 #define ZERO_ONE_PROBLEM 0
00031 #define INTEGER_PROBLEM 1
00032 #define MIXED_INTEGER_PROBLEM 2
00033
00034
00035 #define MPS_FORMAT 0
00036 #define LP_FORMAT 1
00037 #define GMPL_FORMAT 2
00038
00039
00040 #define WRT_PARENT 0
00041 #define EXPLICIT_LIST 1
00042 #define NO_DATA_STORED 2
00043
00044
00045 #define NODE_STATUS__CANDIDATE 0
00046 #define NODE_STATUS__BRANCHED_ON 1
00047 #define NODE_STATUS__HELD 2
00048 #define NODE_STATUS__ROOT 3
00049 #define NODE_STATUS__PRUNED 4
00050 #define NODE_STATUS__INTERRUPTED 5
00051 #define NODE_STATUS__WARM_STARTED 6
00052
00053 #define NF_CHECK_ALL 0x00
00054 #define NF_CHECK_AFTER_LAST 0x01
00055 #define NF_CHECK_UNTIL_LAST 0x02
00056 #define NF_CHECK_NOTHING 0x04
00057
00058
00059 #define DO_NOT_DIVE 0
00060 #define DO_DIVE 1
00061 #define CHECK_BEFORE_DIVE 2
00062
00063
00064 #define ROOT_NODE 0
00065 #define NODE_BRANCHED_ON 1
00066 #define INFEASIBLE_HOLD_FOR_NEXT_PHASE 2
00067 #define OVER_UB_HOLD_FOR_NEXT_PHASE 3
00068 #define INFEASIBLE_PRUNED 4
00069 #define FEASIBLE_PRUNED 5
00070 #define OVER_UB_PRUNED 6
00071 #define DISCARDED_NODE 7
00072 #define INTERRUPTED_NODE 8
00073 #define REPRICED_NODE 9
00074 #define MC_FEASIBLE_PRUNED 10
00075
00076 #define PRUNED_HAS_CAN_SOLUTION 11
00077 #define NOT_PRUNED_HAS_CAN_SOLUTION 12
00078
00079
00080 #define VBC_INTERIOR_NODE 1
00081 #define VBC_PRUNED 2
00082 #define VBC_ACTIVE_NODE 3
00083 #define VBC_CAND_NODE 4
00084 #define VBC_FEAS_SOL_FOUND 5
00085
00086
00087
00088 #define DISCARD 0
00089 #define KEEP_ON_DISK_FULL 1
00090 #define KEEP_ON_DISK_VBC_TOOL 2
00091 #define KEEP_IN_MEMORY 3
00092
00093
00094 #define NO_LOGGING 0
00095 #define FULL_LOGGING 1
00096 #define VBC_TOOL 2
00097
00098
00099 #define NO_VBC_EMULATION 0
00100 #define VBC_EMULATION_FILE 1
00101 #define VBC_EMULATION_LIVE 2
00102
00103
00104 #define MC_FIFO 0
00105 #define MC_LIFO 1
00106
00107
00108 #define MC_WS_UTOPIA_FIRST 0
00109 #define MC_WS_UTOPIA_BOTH_FIXED 1
00110 #define MC_WS_UTOPIA_BOTH 2
00111 #define MC_WS_BEST_CLOSE 3
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126 # define INVALID_BASIS_STATUS 255
00127 # define VAR_AT_LB 0
00128 # define VAR_BASIC 1
00129 # define VAR_AT_UB 2
00130 # define VAR_FREE 3
00131 # define VAR_FIXED 4
00132 # define SLACK_AT_LB 0
00133 # define SLACK_BASIC 1
00134 # define SLACK_AT_UB 2
00135 # define SLACK_FREE 3
00136 # define SLACK_FIXED 4
00137
00138
00139 #define LP_OPTIMAL 0
00140 #define LP_D_INFEASIBLE 1
00141 #define LP_D_UNBOUNDED 2
00142 #define LP_D_ITLIM 3
00143 #define LP_D_OBJLIM 4
00144 #define LP_OPT_FEASIBLE 5
00145 #define LP_OPT_FEASIBLE_BUT_CONTINUE 6
00146 #define LP_ABANDONED 7
00147
00148 #define MOVE_TO_LB 0
00149 #define MOVE_TO_UB 1
00150
00151 #define LOWER_THAN_LB 0
00152 #define HIGHER_THAN_UB 1
00153
00154
00155 #define LP_HAS_BEEN_ABANDONED 0
00156 #define LP_HAS_NOT_BEEN_MODIFIED 1
00157 #define LP_HAS_BEEN_MODIFIED 2
00158
00159
00160 #define COLIND_ORDERED 0
00161 #define USERIND_ORDERED 1
00162 #define COLIND_AND_USERIND_ORDERED 2
00163
00164
00165 #define NOT_TDF 0
00166 #define TDF_NOT_ALL 1
00167 #define TDF_HAS_ALL 2
00168
00169
00170 #define DO_NOT_BRANCH_ON_THIS_ROW 0x01
00171 #define ALLOWED_TO_BRANCH_ON 0x02
00172 #define CANDIDATE_FOR_BRANCH 0x04
00173 #define SWITCH_CANDIDATE_ALLOWED 0x06
00174 #define CUT_BRANCHED_ON 0x08
00175
00176
00177 #define NO_CONSTRAINT_IS_INEFFECTIVE 0
00178 #define NONZERO_SLACKS_ARE_INEFFECTIVE 1
00179 #define BASIC_SLACKS_ARE_INEFFECTIVE 2
00180 #define ZERO_DUAL_VALUES_ARE_INEFFECTIVE 3
00181
00182
00183 #define CUT__DO_NOT_SEND_TO_CP -1
00184 #define CUT__SEND_TO_CP -2
00185 #define BASE_CONSTRAINT -3
00186
00187
00188 #define LEFTOVER 0
00189 #define INTERNAL_CUT_POOL -1
00190 #define EXTERNAL_CUT_POOL -2
00191 #define INTERNAL_CUT_GEN -3
00192 #define EXTERNAL_CUT_GEN -4
00193
00194
00195 #define VIOLATED_ROW 0
00196 #define TIGHT_ROW 1
00197 #define SLACK_ROW 2
00198
00199
00200
00201
00202 #define NOT_FIXED 0x01
00203
00204 #define TEMP_FIXED_TO_LB 0x02
00205 #define PERM_FIXED_TO_LB 0x04
00206 #define TEMP_PERM_LB__SWITCH 0x06
00207 #define NOT_FIXED__TEMP_LB__SWITCH 0x03
00208 #define NOT_FIXED__PERM_LB__SWITCH 0x05
00209
00210 #define TEMP_FIXED_TO_UB 0x08
00211 #define PERM_FIXED_TO_UB 0x10
00212 #define TEMP_PERM_UB__SWITCH 0x18
00213 #define NOT_FIXED__TEMP_UB__SWITCH 0x09
00214 #define NOT_FIXED__PERM_UB__SWITCH 0x11
00215
00216 #define BASE_VARIABLE 0x20
00217 #define VARIABLE_BRANCHED_ON 0x40
00218
00219 #define NOT_REMOVABLE 0x60
00220
00221
00222
00223
00224
00225
00226
00227
00228 #define FATHOM__DO_NOT_GENERATE_COLS__DISCARD 0x00
00229 #define FATHOM__DO_NOT_GENERATE_COLS__SEND 0x01
00230 #define FATHOM__GENERATE_COLS__RESOLVE 0x02
00231 #define COLGEN__FATHOM 0x03
00232
00233 #define BEFORE_BRANCH__DO_NOT_GENERATE_COLS 0x04
00234 #define BEFORE_BRANCH__GENERATE_COLS__RESOLVE 0x08
00235
00236 #define COLGEN_REPRICING 0x10
00237
00238
00239 #define GENERATE_NEXTIND 0
00240 #define GENERATE_REAL_NEXTIND 1
00241
00242
00243 #define CUT_FROM_CG 0
00244 #define CUT_FROM_CP 1
00245 #define CUT_FROM_TM 2
00246 #define CUT_LEFTOVER 3
00247 #define CUT_NOT_IN_MATRIX_SLACK 5
00248 #if 0
00249 #define CUT_VIOLATED_SLACK 4
00250 #endif
00251
00252
00253 #define UNPACK_CUTS_MULTIPLE 0
00254 #define UNPACK_CUTS_SINGLE 1
00255
00256
00257 #define EXPLICIT_ROW 100
00258 #define OPTIMALITY_CUT_FIRST 101
00259 #define OPTIMALITY_CUT_SECOND 102
00260 #define ORIGINAL_CONSTRAINT 103
00261
00262
00263 #define CANDIDATE_VARIABLE 0
00264 #define CANDIDATE_CUT_IN_MATRIX 1
00265 #define CANDIDATE_CUT_NOT_IN_MATRIX 2
00266 #define VIOLATED_SLACK 3
00267 #define SLACK_TO_BE_DISCARDED 4
00268
00269
00270 #define BRANCHING_VARIABLE 0
00271 #define BRANCHING_CUT 1
00272
00273
00274 #define DO_BRANCH 0
00275 #define DO_NOT_BRANCH 1
00276 #define DO_NOT_BRANCH__FATHOMED 2
00277
00278
00279 #define NEW_NODE -1
00280 #define FATHOMED_NODE -2
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291 #define DISCARD_SLACKS_BEFORE_NEW_ITERATION 0
00292 #define DISCARD_SLACKS_WHEN_STARTING_NEW_NODE 1
00293
00294
00295 #define DISP_FEAS_SOLUTION 0
00296 #define DISP_RELAXED_SOLUTION 1
00297 #define DISP_FINAL_RELAXED_SOLUTION 2
00298
00299
00300
00301
00302
00303
00304 #define COLGEN_STR_SIZE 5
00305 #define COLGEN_STR_ARRAY { \
00306 { "FATHOM__DO_NOT_GENERATE_COLS__DISCARD", \
00307 FATHOM__DO_NOT_GENERATE_COLS__DISCARD }, \
00308 { "FATHOM__DO_NOT_GENERATE_COLS__SEND", \
00309 FATHOM__DO_NOT_GENERATE_COLS__SEND }, \
00310 { "FATHOM__GENERATE_COLS__RESOLVE", \
00311 FATHOM__GENERATE_COLS__RESOLVE }, \
00312 { "BEFORE_BRANCH__DO_NOT_GENERATE_COLS", \
00313 BEFORE_BRANCH__DO_NOT_GENERATE_COLS }, \
00314 { "BEFORE_BRANCH__GENERATE_COLS__RESOLVE", \
00315 BEFORE_BRANCH__GENERATE_COLS__RESOLVE } \
00316 }
00317
00318
00319 #ifdef COMPILE_FRAC_BRANCHING
00320 #define COMPARE_CAN_STR_SIZE 9
00321 #define COMPARE_CAN_STR_ARRAY { \
00322 { "LOWEST_LOW_FRAC", LOWEST_LOW_FRAC }, \
00323 { "HIGHEST_LOW_FRAC", HIGHEST_LOW_FRAC }, \
00324 { "LOWEST_HIGH_FRAC", LOWEST_HIGH_FRAC }, \
00325 { "HIGHEST_HIGH_FRAC", HIGHEST_HIGH_FRAC }, \
00326 { "BIGGEST_DIFFERENCE_OBJ", BIGGEST_DIFFERENCE_OBJ }, \
00327 { "LOWEST_LOW_OBJ", LOWEST_LOW_OBJ }, \
00328 { "HIGHEST_LOW_OBJ", HIGHEST_LOW_OBJ }, \
00329 { "LOWEST_HIGH_OBJ", LOWEST_HIGH_OBJ }, \
00330 { "HIGHEST_HIGH_OBJ", HIGHEST_HIGH_OBJ } \
00331 }
00332 #else
00333 #define COMPARE_CAN_STR_SIZE 5
00334 #define COMPARE_CAN_STR_ARRAY { \
00335 { "BIGGEST_DIFFERENCE_OBJ", BIGGEST_DIFFERENCE_OBJ }, \
00336 { "LOWEST_LOW_OBJ", LOWEST_LOW_OBJ }, \
00337 { "HIGHEST_LOW_OBJ", HIGHEST_LOW_OBJ }, \
00338 { "LOWEST_HIGH_OBJ", LOWEST_HIGH_OBJ }, \
00339 { "HIGHEST_HIGH_OBJ", HIGHEST_HIGH_OBJ } \
00340 }
00341 #endif
00342
00343
00344
00345
00346 #define DIFFERENT_CUTS 1
00347 #define SAME_CUTS 2
00348 #define FIRST_CUT_BETTER 3
00349 #define SECOND_CUT_BETTER 4
00350
00351
00352 #define TEST_ZERO_ONE 0
00353 #define TEST_INTEGRALITY 1
00354
00355 #define IP_INFEASIBLE 0
00356 #define IP_FEASIBLE 1
00357 #define IP_FEASIBLE_BUT_CONTINUE 2
00358 #define IP_ALMOST_FEASIBLE 3
00359 #define IP_FEASIBILITY_NOT_KNOWN 4
00360 #define IP_HEUR_FEASIBLE 5
00361
00362
00363 #define DISP_NOTHING 0
00364 #define DISP_NZ_INT 1
00365 #define DISP_NZ_HEXA 2
00366 #define DISP_FRAC_INT 3
00367 #define DISP_FRAC_HEXA 4
00368
00369
00370
00371
00372
00373
00374
00375 #define SEND_NONZEROS 0
00376 #define SEND_FRACTIONS 1
00377
00378 #define LP_SOL_TO_CG 0
00379 #define LP_SOL_TO_CP 1
00380 #define LP_SOL_WITHIN_LP 2
00381
00382
00383
00384 #define BIGGEST_DIFFERENCE_OBJ 0
00385 #define LOWEST_LOW_OBJ 1
00386 #define HIGHEST_LOW_OBJ 2
00387 #define LOWEST_HIGH_OBJ 3
00388 #define HIGHEST_HIGH_OBJ 4
00389 #ifdef COMPILE_FRAC_BRANCHING
00390 #define HIGHEST_LOW_FRAC 5
00391 #define LOWEST_LOW_FRAC 6
00392 #define HIGHEST_HIGH_FRAC 7
00393 #define LOWEST_HIGH_FRAC 8
00394 #endif
00395
00396 #define FIRST_CANDIDATE_BETTER 0
00397 #define FIRST_CANDIDATE_BETTER_AND_BRANCH_ON_IT 1
00398 #define SECOND_CANDIDATE_BETTER 2
00399 #define SECOND_CANDIDATE_BETTER_AND_BRANCH_ON_IT 3
00400 #define BRANCH_ON_IT 1
00401
00402
00403 #define PREFER_LOWER_OBJ_VALUE 0
00404 #define PREFER_HIGHER_OBJ_VALUE 1
00405 #ifdef COMPILE_FRAC_BRANCHING
00406 #define PREFER_MORE_FRACTIONAL 2
00407 #define PREFER_LESS_FRACTIONAL 3
00408 #endif
00409
00410 #define PRUNE_THIS_CHILD 0
00411 #define RETURN_THIS_CHILD 1
00412 #define KEEP_THIS_CHILD 2
00413 #define PRUNE_THIS_CHILD_FATHOMABLE 3
00414
00415
00416 #define PRUNE_THIS_CHILD_INFEASIBLE 4
00417
00418
00419 #define USER__DO_NOT_BRANCH 0
00420 #define USER__DO_BRANCH 1
00421 #define USER__BRANCH_IF_MUST 2
00422 #define USER__BRANCH_IF_TAILOFF 3
00423
00424
00425 #define USER__CLOSE_TO_HALF 10
00426 #define USER__CLOSE_TO_HALF_AND_EXPENSIVE 11
00427 #define USER__CLOSE_TO_ONE_AND_CHEAP 12
00428
00429
00430 #define GENERATE_CGL_CUTS 20
00431 #define DO_NOT_GENERATE_CGL_CUTS 21
00432
00433
00434 #define DO_NOT_GENERATE -1
00435 #define GENERATE_DEFAULT 0
00436 #define GENERATE_ONLY_IN_ROOT 1
00437 #define GENERATE_IF_IN_ROOT 2
00438 #define GENERATE_ALWAYS 3
00439 #define GENERATE_PERIODICALLY 4
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449
00450 #define NEW_NODE__NONE -1
00451 #define NEW_NODE__STARTED -2
00452 #define NEW_NODE__ERROR -3
00453
00454
00455 #define LOWEST_LP_FIRST 0
00456 #define HIGHEST_LP_FIRST 1
00457 #define BREADTH_FIRST_SEARCH 2
00458 #define DEPTH_FIRST_SEARCH 3
00459 #define BEST_FIRST_SEARCH 4
00460 #define DEPTH_FIRST_THEN_BEST_FIRST 5
00461
00462
00463 #define BEST_ESTIMATE 0
00464 #define COMP_BEST_K 1
00465 #define COMP_BEST_K_GAP 2
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476 #define NO_WARM_START 0
00477 #define READ_CP_LIST 1
00478 #define READ_TM_LIST 2
00479
00480
00481 #define CHECK_ALL_CUTS 0
00482 #define CHECK_LEVEL 1
00483 #define CHECK_TOUCHES 2
00484 #define CHECK_LEVEL_AND_TOUCHES 3
00485
00486
00487 #define DELETE_BY_QUALITY 1
00488 #define DELETE_BY_TOUCHES 2
00489
00490 #define DELETE_DUPLICATES 2
00491 #define DELETE_DUPLICATE_AND_INEFFECTIVE 2
00492
00493
00494
00495
00496
00497 #define NOTHING_CHANGED 0
00498 #define RHS_CHANGED 1
00499 #define OBJ_COEFF_CHANGED 2
00500 #define CONSTRAINT_MATRIX_CHANGED 3
00501 #define COL_BOUNDS_CHANGED 4
00502 #define OBJ_SENSE_CHANGED 5
00503 #define RHS_SENSE_CHANGED 6
00504 #endif