1 /*===========================================================================*/ 2 /* */ 3 /* This file is part of the SYMPHONY MILP Solver Framework. */ 4 /* */ 5 /* SYMPHONY was jointly developed by Ted Ralphs (ted@lehigh.edu) and */ 6 /* Laci Ladanyi (ladanyi@us.ibm.com). */ 7 /* */ 8 /* (c) Copyright 2000-2019 Ted Ralphs. All Rights Reserved. */ 9 /* */ 10 /* This software is licensed under the Eclipse Public License. Please see */ 11 /* accompanying file for terms. */ 12 /* */ 13 /*===========================================================================*/ 14 15 #ifndef _BB_CONSTANTS_H 16 #define _BB_CONSTANTS_H 17 18 #include "symphony.h" 19 20 #define BB_BUNCH 127 * sizeof(double) 21 22 /*----------------- Error codes for process_chain() ------------------------*/ 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 29 /*---------------------------- type of the problem --------------------------*/ 30 #define ZERO_ONE_PROBLEM 0 31 #define INTEGER_PROBLEM 1 32 #define MIXED_INTEGER_PROBLEM 2 33 34 /*---------------------------- input format ---------------------------------*/ 35 #define MPS_FORMAT 0 36 #define LP_FORMAT 1 37 #define GMPL_FORMAT 2 38 39 /*--------------------------- modes of giving a list ------------------------*/ 40 #define WRT_PARENT 0 41 #define EXPLICIT_LIST 1 42 #define NO_DATA_STORED 2 43 44 /*----------------- possible stati of a node in the search tree -------------*/ 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 54 /*------------------------------ not_fixed stati ----------------------------*/ 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 59 60 /*------------------- options on whether to dive or not ---------------------*/ 61 #define DO_NOT_DIVE 0 62 #define DO_DIVE 1 63 #define CHECK_BEFORE_DIVE 2 64 65 /*-------------- possible node types when sending a node to TM --------------*/ 66 #define ROOT_NODE 0 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 74 #define TIME_LIMIT 8 75 #define ITERATION_LIMIT 9 76 #define REPRICED_NODE 10 77 #define MC_FEASIBLE_PRUNED 11 78 /*to be used when warm_started*/ 79 #define PRUNED_HAS_CAN_SOLUTION 12 80 #define NOT_PRUNED_HAS_CAN_SOLUTION 13 81 82 /*------------------- possible node types for VBC Tool ----------------------*/ 83 #define VBC_INTERIOR_NODE 1 /*Dark Red*/ 84 #define VBC_PRUNED 2 /*Green*/ 85 #define VBC_ACTIVE_NODE 3 /*White*/ 86 #define VBC_CAND_NODE 4 /*Light Red*/ 87 #define VBC_FEAS_SOL_FOUND 5 /*Blue*/ 88 #define VBC_PRUNED_INFEASIBLE 6 /*color ??, used only when vbc_emulation = 3*/ 89 #define VBC_PRUNED_FATHOMED 7 /*do*/ 90 #define VBC_IGNORE 8 /*do*/ 91 92 93 /*------------------ what to do with pruned nodes in the TM -----------------*/ 94 #define DISCARD 0 95 #define KEEP_ON_DISK_FULL 1 96 #define KEEP_ON_DISK_VBC_TOOL 2 97 #define KEEP_IN_MEMORY 3 98 99 /*---------------------- logging options in the TM --------------------------*/ 100 #define NO_LOGGING 0 101 #define FULL_LOGGING 1 102 #define VBC_TOOL 2 103 104 /***************************************************************************** 105 ***************************************************************************** 106 ************* ********** 107 ************* Constants related to the LP process ********** 108 ************* ********** 109 ***************************************************************************** 110 *****************************************************************************/ 111 112 /*****************************************************************************/ 113 /******* Constants related to solving of an lp *******/ 114 /*****************************************************************************/ 115 116 /*--------------------- Constants related to the basis ----------------------*/ 117 # define INVALID_BASIS_STATUS 255 118 # define VAR_AT_LB 0 119 # define VAR_BASIC 1 120 # define VAR_AT_UB 2 121 # define VAR_FREE 3 122 # define VAR_FIXED 4 /* OSLLIB uses this */ 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 /* OSLLIB uses this for 'E' rows */ 128 129 /*----------------- LP Solver return codes (dual simplex) -------------------*/ 130 #define LP_OPTIMAL 0 131 #define LP_D_INFEASIBLE 1 132 #define LP_D_UNBOUNDED 2 133 #define LP_D_ITLIM 3 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 139 140 #define MOVE_TO_LB 0 141 #define MOVE_TO_UB 1 142 143 #define LOWER_THAN_LB 0 144 #define HIGHER_THAN_UB 1 145 146 /*----------------------------- LP status -----------------------------------*/ 147 #define LP_HAS_BEEN_ABANDONED 0 148 #define LP_HAS_NOT_BEEN_MODIFIED 1 149 #define LP_HAS_BEEN_MODIFIED 2 150 151 /*--------------------- how the variables are ordered -----------------------*/ 152 #define COLIND_ORDERED 0 153 #define USERIND_ORDERED 1 154 #define COLIND_AND_USERIND_ORDERED 2 155 156 /*---------------- The possible total dual feasibility stati ----------------*/ 157 #define NOT_TDF 0 158 #define TDF_NOT_ALL 1 159 #define TDF_HAS_ALL 2 160 161 /*----- for marking an lp_cut that it was copied to slack_cuts already ------*/ 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 167 168 /*------ which constraints considered ineffective (ineffective_constraints) -*/ 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 173 174 /*------ whether a cut should be sent to CP if effective for long enough ----*/ 175 #define CUT__DO_NOT_SEND_TO_CP -1 176 #define CUT__SEND_TO_CP -2 177 #define BASE_CONSTRAINT -3 178 179 /*---------------- source of cut --------------------------------------------*/ 180 #define LEFTOVER 0 181 #define INTERNAL_CUT_POOL -1 182 #define EXTERNAL_CUT_POOL -2 183 #define INTERNAL_CUT_GEN -3 184 #define EXTERNAL_CUT_GEN -4 185 186 187 /* --------------- type of cgl cut generator --------------------------------*/ 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 197 198 199 /* --------------- the status of cut generation on the chain ----------------*/ 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 205 206 /*---------------- what is the status of a particular constraint ------------*/ 207 #define VIOLATED_ROW 0 208 #define TIGHT_ROW 1 209 #define SLACK_ROW 2 210 211 /*--------------------- flags in the lp_data->status ------------------------*/ 212 /************* variables NOT_REMOVABLE always remain in the LP ***************/ 213 214 #define NOT_FIXED 0x01 215 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 221 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 227 228 #define BASE_VARIABLE 0x20 229 #define VARIABLE_BRANCHED_ON 0x40 230 231 #define NOT_REMOVABLE 0x60 232 233 /*----------------------- col_gen -------------------------------------------* 234 * last 2 digits refer to what to do when we would fathom: 235 * DO_NOT_GENERATE__COLS_DISCARD 236 * DO_NOT_GENERATE_COLS_SEND (for next phase) 237 * GENERATE_COLS__RESOLVE 238 * next 2 digits refer to what to do right before branching 239 ----------------------------------------------------------------------------*/ 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 244 245 #define BEFORE_BRANCH__DO_NOT_GENERATE_COLS 0x04 246 #define BEFORE_BRANCH__GENERATE_COLS__RESOLVE 0x08 247 248 #define COLGEN_REPRICING 0x10 249 250 /*-------------------- argument for generate_column_u -----------------------*/ 251 #define GENERATE_NEXTIND 0 252 #define GENERATE_REAL_NEXTIND 1 253 254 /*---------------- Where the unpack_cuts routine is called from -------------*/ 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 260 #if 0 261 #define CUT_VIOLATED_SLACK 4 262 #endif 263 264 /*--------------------- how should a cut be unpacked ------------------------*/ 265 #define UNPACK_CUTS_MULTIPLE 0 266 #define UNPACK_CUTS_SINGLE 1 267 268 /*------------------------- built-in cut types ------------------------------*/ 269 #define EXPLICIT_ROW 100 270 #define OPTIMALITY_CUT_FIRST 101 271 #define OPTIMALITY_CUT_SECOND 102 272 #define ORIGINAL_CONSTRAINT 103 273 274 /*----------------- possible types of candidate objects ---------------------*/ 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 280 281 /*----------------- possible types of branching objects ---------------------*/ 282 #define BRANCHING_VARIABLE 0 283 #define BRANCHING_CUT 1 284 #define SOS1_IMPLICIT 2 285 286 /*------------ possible return values of select_candidates_u() --------------*/ 287 #define DO_BRANCH 0 288 #define DO_NOT_BRANCH 1 289 #define DO_NOT_BRANCH__FATHOMED 2 290 #define DO_NOT_BRANCH__FEAS_SOL 3 291 292 /*---------------- possible return values of branch() -----------------------*/ 293 #define NEW_NODE -1 294 #define FATHOMED_NODE -2 295 #define FEAS_SOL_FOUND -3 296 /* asm4: added this return code for the case when the node can be pruned by 297 * branching */ 298 #define BRANCHING_INF_NODE -4 299 300 /*------------- normal return value of various functions --------------------*/ 301 302 /*---------------------------------------------------------------------------*\ 303 * anything non-negative means continue the node and the value is the 304 * number of cuts added. if there were vars added then that fact has already 305 * been printed out 306 \*---------------------------------------------------------------------------*/ 307 308 /*----------------------- discard_slack_cuts --------------------------------*/ 309 #define DISCARD_SLACKS_BEFORE_NEW_ITERATION 0 310 #define DISCARD_SLACKS_WHEN_STARTING_NEW_NODE 1 311 312 /*---------------- What is the solution to be displayed ---------------------*/ 313 #define DISP_FEAS_SOLUTION 0 314 #define DISP_RELAXED_SOLUTION 1 315 #define DISP_FINAL_RELAXED_SOLUTION 2 316 317 /*****************************************************************************/ 318 /************ Default options and results of user defined functions **********/ 319 /*****************************************************************************/ 320 321 /*---------------------------- colgen_strat ---------------------------------*/ 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 } \ 334 } 335 336 /*------------------------- candidate selection -----------------------------*/ 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 } \ 349 } 350 #else 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 } \ 358 } 359 #endif 360 361 /*---------------------------- same_cuts ------------------------------------*/ 362 /* only default is to compare byte by byte */ 363 364 #define DIFFERENT_CUTS 1 365 #define SAME_CUTS 2 366 #define FIRST_CUT_BETTER 3 367 #define SECOND_CUT_BETTER 4 368 369 /*--------------------------- is_feasible -----------------------------------*/ 370 #define TEST_ZERO_ONE 0 371 #define TEST_INTEGRALITY 1 372 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 379 380 /*------------------------- display_solution --------------------------------*/ 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 386 /* no result */ 387 388 /*--------------------- pack_feasible_solution ------------------------------*/ 389 /* #define SEND_NONZEROS 0*/ 390 /* no result */ 391 392 /*------------------------- pack_lp_solution --------------------------------*/ 393 #define SEND_NONZEROS 0 394 #define SEND_FRACTIONS 1 395 396 #define LP_SOL_TO_CG 0 397 #define LP_SOL_TO_CP 1 398 #define LP_SOL_WITHIN_LP 2 399 /* no result */ 400 401 /*-------------------- emulation options for vbctool ------------------------*/ 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 406 407 /*------------------------ compare_candidates -------------------------------*/ 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 413 #endif 414 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 420 421 /*--------------------------- select_child ----------------------------------*/ 422 #ifdef COMPILE_FRAC_BRANCHING 423 #define PREFER_MORE_FRACTIONAL 2 424 #define PREFER_LESS_FRACTIONAL 3 425 #endif 426 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 431 432 /*to be used to differentiate the fathomed nodes */ 433 #define PRUNE_THIS_CHILD_INFEASIBLE 4 434 435 /*--------------------- shall_we_branch defaults ----------------------------*/ 436 #define USER__DO_NOT_BRANCH 0 437 #define USER__DO_BRANCH 1 438 #define USER__BRANCH_IF_MUST 2 /*default*/ 439 #define USER__BRANCH_IF_TAILOFF 3 440 441 /*--------------------- select_candidates defaults --------------------------*/ 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 445 446 /***************************************************************************** 447 ***************************************************************************** 448 ************* ********** 449 ************* Constants related to the Tree Manager ********** 450 ************* ********** 451 ***************************************************************************** 452 *****************************************************************************/ 453 454 /*--------------------------- tree manager ----------------------------------*/ 455 #define NEW_NODE__NONE -1 456 #define NEW_NODE__STARTED -2 457 #define NEW_NODE__ERROR -3 458 #define NEW_NODE__STOP -4 459 460 /***************************************************************************** 461 ***************************************************************************** 462 ************* ********** 463 ************* Constants related to the Cut Pool ********** 464 ************* ********** 465 ***************************************************************************** 466 *****************************************************************************/ 467 468 /*----------------------- cut pool warm start -------------------------------*/ 469 #define NO_WARM_START 0 470 #define READ_CP_LIST 1 471 #define READ_TM_LIST 2 472 473 /*--------------- parameter values for "check_which_cuts" -------------------*/ 474 #define CHECK_ALL_CUTS 0 475 #define CHECK_LEVEL 1 476 #define CHECK_TOUCHES 2 477 #define CHECK_LEVEL_AND_TOUCHES 3 478 479 /*--------------- parameter values for "delete_which_cuts" ------------------*/ 480 #define DELETE_BY_QUALITY 1 481 #define DELETE_BY_TOUCHES 2 482 /*These are for backward compatibility -- they default to the old style*/ 483 #define DELETE_DUPLICATES 2 484 #define DELETE_DUPLICATE_AND_INEFFECTIVE 2 485 486 /*--------------- parameter values for restart/sens analysis ----------------*/ 487 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 495 #define COLS_ADDED 7 496 497 /*--------------- parameter values for restart/sens analysis ----------------*/ 498 #define DO_NOT_TRIM 0 499 #define TRIM_LEVEL 1 500 #define TRIM_INDEX 2 501 #define ON_CRU_VARS 3 502 503 504 /*--------------------- order type of a matrix -----------------------------*/ 505 #define MAT_ROW_ORDERED 0 506 #define MAT_COL_ORDERED 1 507 508 /*---------------------- type of an implication -----------------------------*/ 509 #define IMP_ROW 0 510 #define IMP_COL 1 511 512 /*----------------- return codes for presolve functions --------------------*/ 513 /* preprocessor exited without modifying the MIP in any way */ 514 #define PREP_UNMODIFIED 0 515 /* preprocessor modified the MIP in some way */ 516 #define PREP_MODIFIED 1 517 /* preprocessor found the MIP infeasible */ 518 #define PREP_INFEAS 2 519 /* preprocessor found the MIP unbounded */ 520 #define PREP_SOLVED 3 521 /* preprocessor solved the MIP */ 522 #define PREP_UNBOUNDED 4 523 #define PREP_NUMERIC_ERROR -1 524 #define PREP_OTHER_ERROR -2 525 526 /*--------------- types used for collecting info about the problem ----*/ 527 528 /* used to define prob type and/or row type */ 529 #define CONTINUOUS_TYPE 0 530 #define BINARY_TYPE 1 531 #define INTEGER_TYPE 2 532 //#define INTEGER_PROBLEM 1 533 //#define MIXED_INTEGER_PROBLEM 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 538 539 #if 0 540 /* row type */ 541 #define CONTINUOUS_ROW 0 542 #define BINARY_ROW 1 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 548 #endif 549 550 /* row bound type*/ 551 #define OPEN_ROW 0 552 #define ALL_BOUNDED_ROW 1 553 #define MIXED_BOUNDED_ROW 2 554 555 /* vec coefs type*/ 556 #define ALL_INTEGER_VEC 0 557 #define ALL_BINARY_VEC 1 558 #define FRACTIONAL_VEC 2 559 560 /* vec sign type */ 561 #define MIXED_TYPE_VEC 0 562 #define ALL_POS_VEC 1 563 #define ALL_NEG_VEC 2 564 565 #endif 566 567 /*--------------- types used for diving heuristic -------------------------*/ 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 577 #define EUC_DIVING 9 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 583 #define PC_DIVING 22 584 585 /*--------------- types used for diving heuristic -------------------------*/ 586 #define FR_SEARCH 0 587 #define RINS_SEARCH 1 588 589