Dip  0.92.4
sym_constants.h
Go to the documentation of this file.
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