Dip  0.92.4
sym_types.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_TYPES_H
16 #define _BB_TYPES_H
17 
18 #define MAX_CHILDREN_NUM 4
19 #define MAX_CHANGE_NUM 6
20 
21 /*===========================================================================*\
22  * This file contains those type definitions which are used in more than one
23  * process of the black box model.
24 \*===========================================================================*/
25 
26 #if !defined (_MSC_VER)
27 #include <unistd.h> /* this defines sleep() */
28 #endif
29 
30 #include "sym_proto.h"
31 #include "sym_constants.h"
32 
33 typedef struct LP_SOL{
34  int lp; /* the tid of the lp process asssociated with
35  the current solution */
36  int has_sol; /* indicates whether a feasible solution
37  found*/
38  int xlength; /* the number of nonzeros in the lp solution
39  currently being processed*/
40  int xlevel; /* the level at which the current solution was
41  generated*/
42  int xindex;
43  int xiter_num;
45  int *xind; /* the indices of the nonzeros in the current
46  solution*/
47  double *xval; /* the values of the nonzeros in the current
48  solution*/
49  double objval; /* the objective function value of the current
50  relaxation*/
51  double lpetol;
52 }lp_sol;
53 
54 typedef struct BASE_DESC{
55  int varnum;
56  int *userind;
57 #if 0
58  double *lb; /* even if there are global lb and ub, we */
59  double *ub; /* fill these arrays out */
60 #endif
61  int cutnum;
62 }base_desc;
63 
64 /*===========================================================================*\
65  * Stores the data corresponding to a particular cut
66 \*===========================================================================*/
67 
68 typedef struct CUT_DATA{
69  int size; /* the size of the coef array */
70  char *coef; /* an array which contains the data necessary to
71  construct the cut -- it is stored in a
72  packed form. The types of the cut tells how
73  to "unpack" it */
74  double rhs; /* the right hand side for the constraint*/
75  double range;
76  char type; /* the type of cut */
77  char sense; /* sense of the cut constraint */
78  char deletable; /* whether or not this cut should be removed
79  from the LP after being added */
80  int branch; /* shows whether we can branch on its cut if
81  this row becomes slack */
82  int name; /* internal to the BB. The identifier of the
83  cut. >=0 if exists, -1 if does not exist yet,
84  but the cuT is sent to the cutpool, -2 if
85  no name & no pool */
86 }cut_data;
87 
88 typedef struct ROW_DATA{
90  int ineff_cnt;
91  int eff_cnt;
92  char free;
93  char deletable;
94 }row_data;
95 
96 typedef struct WAITING_ROW{
99  int *matind;
100  double *matval;
101  int nzcnt;
102  double violation;
103 }waiting_row;
104 
105 /*===========================================================================*\
106  * The following three definitions are used to describe the search tree
107  * nodes.
108 \*===========================================================================*/
109 
110 typedef struct VAR_DESC{
111  int userind;
112  int colind;
113  double lb; /* lb on var before we start processing lp_prob */
114  double ub; /* ub on var before we start processing lp_prob */
115  double new_lb; /* lb may change due to rc fixing or cuts */
116  double new_ub; /* ub may change due to rc fixing or cuts */
117  char is_int; /* whether or not the variable is integer */
118 }var_desc;
119 
120 /*========================================================================*\
121  * changes in bounds of variables at a node are stored here.
122  * Only the changes pertaining to this node are stored here. changes in
123  * parents are not stored with children. Variable bounds can changed due to
124  * reduced cost fixing, cuts etc.
125  \*========================================================================*/
126 typedef struct BOUNDS_CHANGE_DESC{
127  int num_changes; /* how many bounds changed */
128  int *index; /* max size 2*n */
129  char *lbub; /* ub or lb? */
130  double *value; /* new bound value */
132 
133 
134 typedef struct BRANCH_DESC{
135  int name; /* the userind/cut name depending on the type */
136  char type; /* description of the child. All of them are
137  natural for branching cuts. For branching
138  variables they should be interpreted as if
139  we were adding a cut with a single variable
140  on the left hand side */
141  char sense;
142  double rhs;
143  double range;
144  int branch;
145  int sos_cnt;
146  int *sos_ind;
147 }branch_desc;
148 
149 typedef struct ARRAY_DESC{
150  char type; /* NO_DATA_STORED, EXPLICIT_LIST, WRT_PARENT */
151  int size;
152  int added;
153  int *list;
154 }array_desc;
155 
156 typedef struct DOUBLE_ARRAY_DESC{
157  char type; /* NO_DATA_STORED, EXPLICIT_LIST, WRT_PARENT */
158  int size; /* the size of list, stat */
159  int *list;
160  int *stat;
162 
163 typedef struct BASIS_DESC{
165 
166  /*========================================================================*\ * Notes:
167  * 1) for base...:
168  * if list is non-NULL then it refers to col/row inds, not userinds
169  * or cut names.
170  * 2) the stat field of extra... ponts into the stat field of base...
171  * 3) if extra... is EXPLICIT_LIST then the node_desc structure's
172  * cutind/uind fields should be used.
173  * 4) EXPLICIT_LIST in uind implies that extravars is explicit,
174  * EXPLICIT_LIST in cutind implies that extrarows is explicit.
175  \*========================================================================*/
180 }basis_desc;
181 
182 typedef struct NODE_DESC{
183  /*========================================================================*\
184  * The userindices of variables in this node (but not for the base
185  * variables); The basis header for this node; The not-yet-permanently-fixed
186  * variables (again, no base variable is listed here); and the cuts at
187  * this node
188  \*========================================================================*/
192  int nf_status; /* NF_CHECK_ALL, NF_CHECK_AFTER_LAST,
193  NF_CHECK_UNTIL_LAST, NF_CHECK_NOTHING */
195 #if defined(COMPILING_FOR_LP) || defined(COMPILING_FOR_MASTER) || defined(COMPILE_IN_LP)
196  cut_data **cuts; /* this is not used in TM anyway. */
197 #endif
198 
199  bounds_change_desc *bnd_change; /* changes in variable bounds that happen
200  during the processing of the node */
201 
202  /* Any additional info the user might want to pass */
204  char *desc;
205 
206  int frac_cnt;
207  int *frac_vars;
208 }node_desc;
209 
210 typedef struct BRANCH_OBJ{
211  char type; /* Type of the candidate */
212 #if defined(COMPILING_FOR_LP) || defined(COMPILE_IN_LP)
213  int position; /* The position of the candidate */
214  waiting_row *row; /* Description of the left hand side; makes
215  sense only for branching cuts */
216 #endif
217  int child_num; /* Number of kids */
218 #if defined(COMPILING_FOR_TM) || defined(COMPILING_FOR_MASTER) || defined(COMPILE_IN_LP)
219  int name; /* userind for VAR, the index for CUT */
220 #endif
221  double value; /* for evaluating pcost */
222 
223  /*========================================================================* \
224  * Description of the children.
225  * All of them are natural for branching cuts.
226  * For branching variables they should be interpreted as if we were adding
227  * a cut with a single variable on the left hand side
228  \*========================================================================*/
229  /* regarding implicit sos1 branching */
230 
231 #ifdef MAX_CHILDREN_NUM
238 #ifdef COMPILE_FRAC_BRANCHING
239  int frac_num[MAX_CHILDREN_NUM];
240  int *frac_ind[MAX_CHILDREN_NUM];
241  double *frac_val[MAX_CHILDREN_NUM];
242 #endif
243 #else
244  char *sense;
245  double *rhs;
246  double *range;
247  int *branch;
248  int *sos_cnt;
249  int **sos_ind;
250 #ifdef COMPILE_FRAC_BRANCHING
251  int *frac_num;
252  int **frac_ind;
253  double **frac_val;
254 #endif
255 #endif
256 
257 #if defined(COMPILING_FOR_LP) || defined(COMPILE_IN_LP)
258  double lhs; /* purely for the user */
259 
260 #ifdef MAX_CHILDREN_NUM
261  double objval[MAX_CHILDREN_NUM]; /* arrays of size 'number' */
262  int termcode[MAX_CHILDREN_NUM];
263  int iterd[MAX_CHILDREN_NUM];
264  int feasible[MAX_CHILDREN_NUM];
265  int is_est[MAX_CHILDREN_NUM];
266 
267 #else
268  double *objval; /* arrays of size 'number' */
269  int *termcode;
270  int *iterd;
271  int *feasible;
272 
273 #endif
274 
275 #endif
276  int *sol_sizes;
277  int **sol_inds;
278  double **solutions;
279 #ifdef SENSITIVITY_ANALYSIS
280  double **duals;
281 #endif
282 
283 }branch_obj;
284 
285 /*===========================================================================*/
286 
287 typedef struct STR_INT{
289  int code;
290 }str_int;
291 
292 /*===========================================================================*\
293  * This is the time measurement structure for an LP node
294 \*===========================================================================*/
295 
296 typedef struct NODE_TIMES{
298  double lp;
299  double lp_setup;
300  double separation;
301  double fixing;
302  double pricing;
305  double ramp_up_tm;
306  double ramp_up_lp;
308  double idle_diving;
309  double idle_node;
310  double idle_names;
311  double idle_cuts;
312  double start_node;
313  double cut_pool;
314 
315  /* cuts */
316  double cuts;
317  double gomory_cuts;
319  double oddhole_cuts;
320  double clique_cuts;
321  double probing_cuts;
322  double mir_cuts;
323  double twomir_cuts;
327  double landp_cuts;
330 
331  double fp; /* feasibility pump */
332  double ls; /* local search */
333  double ds; /* diving search */
335  double rh; /* rounding */
336  double sh; /* shifting */
337  double fr; /* fix-and-relax */
338  double rs; /* rins */
339  double lb; /* local branching */
340  double primal_heur; /* all primal heuristics */
341 }node_times;
342 
343 /*===========================================================================*\
344  * Here we keep track of the computation time for each of the various
345  * parts of the computation
346 \*===========================================================================*/
347 
348 typedef struct PROB_TIMES{
349  double readtime; /* time spent reading in the problem*/
351  double ub_overhead; /* overhead time used doing the upper bounding */
352  double ub_heurtime; /* actual comp time doing the upper bounding */
353  double lb_overhead; /* overhead time doing the lower bounding */
354  double lb_heurtime; /* actual comp time doing the lower bounding */
355 }prob_times;
356 
357 /*===========================================================================*\
358  * The bc_node data structure stores the information needed to
359  * process a node in the branch and cut tree
360 \*===========================================================================*/
361 
362 typedef struct BC_NODE{
363  int bc_index; /* the identifier of the node */
364  int bc_level; /* the level in the tree of the node */
365  int iter_num; /* cuts/cgl iteration number */
366 
367  int lp; /* the tid of the lp processing the node */
368  int cg; /* the tid of the cut generator serving the node */
369  int cp; /* the tid of the cut pool assigned to the node */
370  double lower_bound; /* the current best objective function value
371  obtained in the subproblem */
372  int update_pc; /* whether the pseudo cost should be updated after
373  solving the LP */
374  double opt_estimate; /* an estimate of the value of the best feasible
375  solution that could be obtained in this node */
376  struct BC_NODE *parent;
377  struct BC_NODE **children;
379 
380  node_desc desc; /* the description of the node,
381  defined in "sym_types.h" */
383 
385  int sol_size;
386  int *sol_ind;
387  double *sol;
388 #ifdef SENSITIVITY_ANALYSIS
389  double *duals;
390  double C_LP;
391  double B_IP;
392 #endif
393 
394 #ifdef TRACE_PATH
395  char optimal_path;
396 #endif
397 
398  /* usage of different tools in process chain: fp, cuts, strong branching */
403  double start_objval;
404  double end_objval;
409  char used_str;
410  int t_cnt;
411 
413  int frac_cnt;
414  double frac_avg;
415 }bc_node;
416 
417 /*===========================================================================*\
418  * Keeps problem statistics
419 \*===========================================================================*/
420 
421 typedef struct PROBLEM_STAT{
422  double root_lb;
424  int max_depth; /* keeps track of the deepest level reached
425  in the tree so far */
426  int chains; /* the number of diving chains */
427  int diving_halts; /* how many times was an already started
428  dive stopped */
429  int tree_size; /* number of search tree nodes */
430  int created; /* the number of created nodes (not
431  necessarily the same as tree_size
432  (trimming...) */
433  int analyzed; /* the number of analyzed (i.e., CG-LP
434  iteration) nodes (not necessarily same
435  as created, leaves can be cut off
436  without analyzing; trimming) */
439  int vars_not_priced; /* How many variables did not price out
440  after the first phase */
441  int nf_status; /* nf_status of the root node after
442  repricing */
443  double max_vsize;
445 }problem_stat;
446 
447 /*===========================================================================*/
448 
449 typedef struct LP_STAT{
450  /* LP solver */
451  int lp_calls; /* total lp_calls */
452  int lp_node_calls; /* total lp_calls in node processing */
453  int lp_sols;
454  int ip_sols;
456  int lp_total_iter_num; /* number of total simplex iterations */
457  int lp_max_iter_num; /* max of lps' simplex iterations */
458  int str_br_lp_calls; /* no of calls from strong branching */
459  int str_br_bnd_changes; /* no of bounds changed due to strong br */
460  int str_br_nodes_pruned; /* no of nodes pruned by strong br */
461  int str_br_total_iter_num; /* number of total simplex iterations by
462  strong br*/
465 
472  /* cuts */
479  int mir_cuts;
486 
500 
506 
508  int gomory_nz;
520 
521  /* feasibility pump */
522  int fp_calls;
529 
530  /* rounding heuristic*/
531  int rh_calls;
534 
535  /* shifting heuristic*/
536  int sh_calls;
539 
540  /* local search */
541  int ls_calls;
544 
545  /* diving */
546  int ds_calls;
553 
554  /* fix-and-relax */
555  int fr_calls;
560 
561  /* rins search */
562  int rs_calls;
567 
568  /* local branching */
569  int lb_calls;
574 
575  /* usage of different tools in process chain: fp, cuts, strong branching */
580  double start_objval;
581  double end_objval;
584 
589 }lp_stat_desc;
590 
591 
592 typedef struct RC_DESC{
593  int size;
594  int num_rcs;
595  int **indices;
596  double **values;
597  double **ub;
598  double **lb;
599  double *obj;
600  int *cnt;
601 }rc_desc;
602 
603 /*===========================================================================*/
604 /* Implications */
605 /*===========================================================================*/
606 /*===========================================================================*/
607 typedef struct COL_IMP{
608 
609  int col_ind;
610  struct COL_IMP *c_next;
611 
612 }col_imp;
613 
614 typedef struct IMPVAR{
615 
616  int type; /* ROW, COL */
617  int ind;
618  int fix_type; /*'U', 'L, 'F'
619  for column: improve upper bound, lower bound or fix it
620  for row: all other variables need to be fixed to their
621  'U or 'L' or the row is infea'S'ible
622  however, right now it is same with fix_bounds */
623  double val; /* if it is a column impl*/
624  struct IMPVAR *right;
625  struct IMPVAR *left;
626 
627 }IMPvar;
628 
629 typedef struct IMPLIST{
630 
631  int size;
634 }IMPlist;
635 
636 /*===========================================================================*/
637 /* Data structure to keep relevant info of a column */
638 /*===========================================================================*/
639 typedef struct COLINFO{
640  int rank;
641  int coef_type; /* all integer, all binary, fractional
642  - considering the type of coefficients*/
643  int sign_type; /* same below */
644  char var_type; /* '*C'ontinuous,
645  *'B'inary,
646  *'general 'I'nteger,
647  *'F'ixed,
648  *'Z'-continous but can be integerized
649 
650  -those should only appear during preprocessor stage-
651  *negative bina'R'y,
652  *fixable to its 'U'pper bound,
653  *fixable to its 'L'ower bound,
654  -for the last two, need to use is_int to see if
655  they are integer or not-
656  *'T'emporarily fixed,
657  * binary variable and temprarily fixed to
658  its 'l'ower bound, simiarly,
659  temporarily fixed to its 'u'pper bound
660  */
661  int sos_num; /* #of sos rows that this var appears in */
662  int col_size; /* col size */
663  int nz; /* sum of row_sizes this var appears in */
664  int fix_row_ind; /* state which row caused to fix this variable during
665  basic preprocessor */
666 
667  IMPlist *ulist; /* for binary variables: keeps the list of variables
668  fixed or bounds improved if this variable is fixed to
669  its upper bound */
670  IMPlist *llist; /* same here - lower side */
671 
672 }COLinfo;
673 
674 /*===========================================================================*/
675 /* Data structure to keep relevant info of a row */
676 /*===========================================================================*/
677 typedef struct ROWINFO{
678  int type; /* all mixed, binary, pure(not binary), cont_binary... */
679  int bound_type; /* all_bounded, mixed
680  - considering the bounds of variables */
681  int coef_type; /* all integer, all binary, fractional
682  - considering the type of coefficients*/
683  int sign_type; /* all_pos, all_neg, mixed */
684 
686  char * sos_rep; /* compact representation of the sos row for bitwise
687  operations */
688 
689  /* for preprocessor */
690 
691  double fixed_obj_offset; /* obtained from fixed vars */
692  double fixed_lhs_offset; /* obtained from fixed vars */
693 
694  double ub; /* calculated using variable bounds */
695  double lb; /* same above */
696 
697  double sr_ub; /* calculated using sr relaxations + bounds*/
698  double sr_lb; /* same above */
699 
700  double orig_ub; /* for debugging purposes */
701  double orig_lb;
702 
704 
705  int ub_inf_var_num; /* number of variables in this row those cause
706  ub to be infinite */
707  int lb_inf_var_num; /* number of variables in this row those cause
708  lb to be infinite */
709  int size;
710  int fixed_var_num; /* number of fixed variables on this row*/
711  int fixable_var_num; /* number of fixable variables on this row*/
712  int bin_var_num; /*not fixed binary variables */
713  int cont_var_num; /*not fixed continuous variables */
714  int frac_coef_num; /* not fixed, frac coeffs on this row */
717 
721 
722 }ROWinfo;
723 
724 /*===========================================================================*/
725 /* Data structure to collect information about the model */
726 /*===========================================================================*/
727 
728 typedef struct MIPINFO{
729  int prob_type; /* mixed, pure(not binary), binary... */
737  int obj_size; /* number of nonzeros in objective function */
738 
739  char is_opt_val_integral; /*is the optimal
740  solution value required to be integral, if one
741  exists*/
742 
743  double sum_obj_offset; /* from fixed variables*/
744 
745  int binary_sos_row_num; /* sos rows with binary vars count*/
746  int binary_row_num; /* rows with binary vars*/
747  int cont_row_num; /* rows with cont vars */
748  int bin_cont_row_num; /* rows with both cont and bin vars */
749  int row_bin_den; /* binary nz / number of rows */
750  int col_bin_den; /* binary nz / number of binary columns */
751  int row_bin_den_mean; /* 2*row_bin_den*max_row_size/
752  row_bin_den+max_row_size */
753  int col_bin_den_mean; /* same here for cols */
754 
760  double mat_density;
761  double row_density;
762  double col_density;
765 
766  int e_row_num;
767  int l_row_num;
768  int g_row_num;
769  int r_row_num;
770 
773 
776  int *c_ind;
777  double *c_val;
778  int *c_beg;
779  char *c_sense;
780  double *c_rhs;
781  int c_num;
782  int c_nz;
783  int *c_tmp;
784  int prob_num;
785 
786 }MIPinfo;
787 
788 /*===========================================================================*/
789 
790 #if 0
791 /* not implemented yet */
792 /* to keep the differences with the original model */
793 typedef struct MIPDIFF
794 {
795  int rows_del_num;
796  int vars_fixed_num;
797  int coef_changed_num;
798  int bounds_tightened_num;
799  int bounds_integerized_num;
800  int *rows_deleted_ind;
801  int *vars_fixed_ind;
802  int *bounds_tightened_ind;
803  int *bounds_integerized_ind;
804  int *coef_changed_col_ind;
805  int *coef_changed_row_ind;
806 }MIPdiff;
807 
808 #endif
809 
810 /*===========================================================================*/
811 /* This structure stores the user's description of the model */
812 /*===========================================================================*/
813 typedef struct MIPDESC{
814  int n; /* number of columns */
815  int m; /* number of rows */
816  int nz; /* number of nonzeros */
817  char *is_int; /* indicates whether a given variables is integer */
818  int *matbeg; /* n */
819  int *matind; /* nz */
820  double *matval; /* nz */
821  double *obj; /* n */
822  double *obj1; /* n */ /* for bicriteria problems */
823  double *obj2; /* n */ /* for bicriteria problems */
824  double *rhs; /* m */
825  double *rngval; /* m */
826  char *sense; /* m */
827  double *lb; /* n */
828  double *ub; /* n */
829  char **colname; /* column names */
830  double obj_offset; /* constant to be added to the objective function.*/
831  char obj_sense; /* objective sense. */
832 
833  int alloc_n; /* allocated dims */
834  int alloc_m;
835  int alloc_nz;
836 
837  int fixed_zero; /* only used if preprocessor is used - fixed vars*/
838  int fixed_n; /* fixed vars to nonzero vals */
839  int *fixed_ind;
840  double *fixed_val;
841 
842  int subs_n; /* only used if preprocessor is used - substitutions*/
843  int *subs_ind;
844  double *subs_aval;
845  double *subs_rhs;
846 
848  int *subs_rbeg;
849  int *subs_rind;
850  double *subs_rval;
851 
852  int aggr_n; /* only used if preprocessor is used - aggregations*/
853  int *aggr_ind;
855 
856  /* Only to be allocated and used by SYMPHONY */
857 
858  int *col_lengths;
859  int *row_matbeg; /* m */ /* a row ordered desc for heuristics */
860  int *row_matind; /* nz */
861  double *row_matval; /* nz */
863  /* will keep the orig sense - if prep is used */
864  char *orig_sense;
865  int *orig_ind; /*mapping of indices of presolved model into orig one
866  */
867 
868  int var_type_modified; /* number of updates on the mip desc */
869  int change_num; /* number of updates on the mip desc */
870  int change_type[MAX_CHANGE_NUM]; /* type of the mip desc. changes */
871  int new_col_num; /* used only when new cols added */
873  int *cru_vars;
874  char is_modified;
875 
876  /* will be evaluated only if preprocessor is used */
877  /* it is here to be carried later for further use */
878  /* mip info */
880 
881  // MIPdiff *mip_diff;
882  double * opt_sol;
883 }MIPdesc;
884 
885 /*===========================================================================*\
886  * The warm start description contains all information needed to warm start
887  * the algorithm.
888 \*===========================================================================*/
889 
890 typedef struct WARM_START_DESC{
892  int cut_num;
897  int phase;
898  double lb;
899  int has_ub;
900  double ub;
902  char trim_tree;
906 
907 /*===========================================================================*/
908 /* solution pool */
909 
910 typedef struct SP_SOLUTION_DESC{
911  double objval;
912  int xlength;
913  int *xind;
914  double *xval;
915 
916  /* The bnb node where this solution was discoverd*/
918 
919  /* The level of the node in bnb tree where this solution was discovered */
921 }sp_solution;
922 
923 /*===========================================================================*/
924 
925 typedef struct SP_DESC{
926  /* max. no. of solutions in the pool */
928  /* no. of solutions in the pool */
931  /* array of those solutions */
933 }sp_desc;
934 #endif
int * c_ind
Definition: sym_types.h:776
int rank
Definition: sym_types.h:640
char * sos_rep
Definition: sym_types.h:686
double ds_type[DIVING_HEURS_CNT]
Definition: sym_types.h:334
int ds_type_num_iter[DIVING_HEURS_CNT]
Definition: sym_types.h:550
int redsplit_cuts
Definition: sym_types.h:485
int num_cut_iters_in_path
Definition: sym_types.h:576
char is_sos_row
Definition: sym_types.h:685
int type
Definition: sym_types.h:616
int col_ind
Definition: sym_types.h:609
int * subs_ind
Definition: sym_types.h:843
struct RC_DESC rc_desc
int * aggr_to_ind
Definition: sym_types.h:854
int m
Definition: sym_types.h:815
double separation
Definition: sym_types.h:300
int ds_type_calls[DIVING_HEURS_CNT]
Definition: sym_types.h:548
double sr_lb
Definition: sym_types.h:698
int num_solutions
Definition: sym_types.h:929
int cuts_in_pool
Definition: sym_types.h:423
double * rhs
Definition: sym_types.h:824
int clique_cuts_root
Definition: sym_types.h:491
struct IMPVAR * right
Definition: sym_types.h:624
int str_br_lp_calls
Definition: sym_types.h:458
int lb_last_sol_call
Definition: sym_types.h:573
int lp_total_iter_num
Definition: sym_types.h:456
double idle_names
Definition: sym_types.h:310
int sign_type
Definition: sym_types.h:643
int rh_calls
Definition: sym_types.h:531
int binary_var_num
Definition: sym_types.h:731
char used_str
Definition: sym_types.h:409
int size
Definition: sym_types.h:631
double * c_rhs
Definition: sym_types.h:780
IMPlist * llist
Definition: sym_types.h:670
int lp_max_iter_num
Definition: sym_types.h:457
int * row_lengths
Definition: sym_types.h:862
int userind
Definition: sym_types.h:111
char cuts_forced
Definition: sym_types.h:406
double * rngval
Definition: sym_types.h:825
char basis_exists
Definition: sym_types.h:164
int alloc_nz
Definition: sym_types.h:835
int oddhole_cuts
Definition: sym_types.h:476
double readtime
Definition: sym_types.h:349
double new_lb
Definition: sym_types.h:115
int fixable_var_num
Definition: sym_types.h:711
int ub_inf_var_num
Definition: sym_types.h:705
int num_str_br_cands_in_path
Definition: sym_types.h:582
struct BASIS_DESC basis_desc
int frac_coef_num
Definition: sym_types.h:714
double range
Definition: sym_types.h:75
int flowcover_cuts_root
Definition: sym_types.h:495
int xiter_num
Definition: sym_types.h:43
int subs_n
Definition: sym_types.h:842
double ramp_up_tm
Definition: sym_types.h:305
double * matval
Definition: sym_types.h:820
int flowcover_cuts
Definition: sym_types.h:481
int type
Definition: sym_types.h:678
double rounding_cuts
Definition: sym_types.h:325
int ls_calls
Definition: sym_types.h:541
char type
Definition: sym_types.h:76
double flowcover_cuts
Definition: sym_types.h:324
double * obj
Definition: sym_types.h:599
int binary_var_nz
Definition: sym_types.h:732
double col_density
Definition: sym_types.h:762
bc_node * rootnode
Definition: sym_types.h:891
double rhs
Definition: sym_types.h:74
int flowcover_calls
Definition: sym_types.h:515
lp_sol best_sol
Definition: sym_types.h:901
cut_data ** cuts
Definition: sym_types.h:196
int fix_type
Definition: sym_types.h:618
double ub
Definition: sym_types.h:694
double orig_lb
Definition: sym_types.h:701
int varnum
Definition: sym_types.h:55
int update_pc
Definition: sym_types.h:372
double * obj1
Definition: sym_types.h:822
double cuts
Definition: sym_types.h:316
int rounding_cuts_root
Definition: sym_types.h:496
int fixed_var_num
Definition: sym_types.h:710
int rh_last_call_ind
Definition: sym_types.h:533
int bc_index
Definition: sym_types.h:363
char vars_checked
Definition: sym_types.h:720
double val
Definition: sym_types.h:623
int g_row_num
Definition: sym_types.h:768
double rh
Definition: sym_types.h:335
double range[MAX_CHILDREN_NUM]
Definition: sym_types.h:234
int probing_calls
Definition: sym_types.h:512
branch_obj bobj
Definition: sym_types.h:378
int rel_br_impr_num
Definition: sym_types.h:471
struct BC_NODE ** children
Definition: sym_types.h:377
int probing_cuts_root
Definition: sym_types.h:492
double obj_offset
Definition: sym_types.h:830
int prep_bnd_changes
Definition: sym_types.h:463
int gomory_cuts_root
Definition: sym_types.h:488
node_desc desc
Definition: sym_types.h:380
double * row_matval
Definition: sym_types.h:861
double lb
Definition: sym_types.h:113
int * row_matind
Definition: sym_types.h:860
double * subs_rhs
Definition: sym_types.h:845
int rs_last_sol_call
Definition: sym_types.h:566
struct WAITING_ROW waiting_row
int binary_sos_row_num
Definition: sym_types.h:745
double lb_overhead
Definition: sym_types.h:353
int cont_var_num
Definition: sym_types.h:730
int fp_num_sols
Definition: sym_types.h:524
char deletable
Definition: sym_types.h:78
double lower_bound
Definition: sym_types.h:370
double avg_cuts_obj_impr_in_path
Definition: sym_types.h:402
#define DIVING_HEURS_CNT
double ** solutions
Definition: sym_types.h:278
int sh_num_sols
Definition: sym_types.h:537
int * matbeg
Definition: sym_types.h:818
int num_cuts_added_in_path
Definition: sym_types.h:577
double fixing
Definition: sym_types.h:301
int l_row_num
Definition: sym_types.h:767
double strong_branching
Definition: sym_types.h:303
double opt_estimate
Definition: sym_types.h:374
char * desc
Definition: sym_types.h:204
int fixed_n
Definition: sym_types.h:838
int lp_sols
Definition: sym_types.h:453
MIPinfo * mip_inf
Definition: sym_types.h:879
int fix_row_ind
Definition: sym_types.h:664
struct BRANCH_OBJ branch_obj
int sol_size
Definition: sym_types.h:385
int colind
Definition: sym_types.h:112
int bc_level
Definition: sym_types.h:364
int * orig_ind
Definition: sym_types.h:865
int * subs_rind
Definition: sym_types.h:849
int twomir_calls
Definition: sym_types.h:514
problem_stat stat
Definition: sym_types.h:895
struct IMPVAR IMPvar
char type
Definition: sym_types.h:150
int t_cnt
Definition: sym_types.h:410
double avg_br_obj_impr_in_path
Definition: sym_types.h:583
int knapsack_calls
Definition: sym_types.h:509
struct MIPDESC MIPdesc
int str_br_nodes_pruned
Definition: sym_types.h:460
int eff_cnt
Definition: sym_types.h:91
char sense
Definition: sym_types.h:141
char is_int
Definition: sym_types.h:117
int fp_calls
Definition: sym_types.h:522
int lp_iter_num
Definition: sym_types.h:455
int bound_type
Definition: sym_types.h:679
int num_unviolated_cuts
Definition: sym_types.h:503
char str[MAX_LINE_LENGTH+1]
Definition: sym_types.h:288
int * col_lengths
Definition: sym_types.h:858
int oddhole_calls
Definition: sym_types.h:510
int bin_var_num
Definition: sym_types.h:712
double * sol
Definition: sym_types.h:387
double ub
Definition: sym_types.h:114
double clique_cuts
Definition: sym_types.h:320
int lp
Definition: sym_types.h:34
int cuts_deleted_from_lps
Definition: sym_types.h:505
int has_sol
Definition: sym_types.h:36
int row_sign_pos_cnt
Definition: sym_types.h:716
double * xval
Definition: sym_types.h:914
double ** values
Definition: sym_types.h:596
int cru_vars_num
Definition: sym_types.h:872
int ** indices
Definition: sym_types.h:595
int fp_lp_total_iter_num
Definition: sym_types.h:526
int lb_inf_var_num
Definition: sym_types.h:707
double_array_desc extrarows
Definition: sym_types.h:179
int max_row_size
Definition: sym_types.h:735
char sense
Definition: sym_types.h:77
int nz
Definition: sym_types.h:816
double lb_heurtime
Definition: sym_types.h:354
int iter_num
Definition: sym_types.h:365
int sign_type
Definition: sym_types.h:683
int max_col_size
Definition: sym_types.h:736
int rs_num_sols
Definition: sym_types.h:563
int lb_num_sols
Definition: sym_types.h:570
int fp_last_call_ind
Definition: sym_types.h:528
double new_ub
Definition: sym_types.h:116
struct BC_NODE * parent
Definition: sym_types.h:376
int prep_nodes_pruned
Definition: sym_types.h:464
int node_cuts_forced
Definition: sym_types.h:588
double fr
Definition: sym_types.h:337
double row_density
Definition: sym_types.h:761
double root_lb
Definition: sym_types.h:422
int cg
Definition: sym_types.h:368
int coef_type
Definition: sym_types.h:641
double max_col_ratio
Definition: sym_types.h:759
double pricing
Definition: sym_types.h:302
int max_sol_length
Definition: sym_types.h:44
int col_bin_den
Definition: sym_types.h:750
int free_var_num
Definition: sym_types.h:703
char * is_int
Definition: sym_types.h:817
int bin_cont_row_num
Definition: sym_types.h:748
char obj_sense
Definition: sym_types.h:831
int alloc_m
Definition: sym_types.h:834
double mat_density
Definition: sym_types.h:760
int size
Definition: sym_types.h:593
double rhs
Definition: sym_types.h:142
int landp_cuts_root
Definition: sym_types.h:498
int ls_num_sols
Definition: sym_types.h:542
char cuts_tried
Definition: sym_types.h:405
int child_num
Definition: sym_types.h:217
int sos_cnt[MAX_CHILDREN_NUM]
Definition: sym_types.h:236
int lp
Definition: sym_types.h:367
int rounding_cuts
Definition: sym_types.h:482
cut_data * cut
Definition: sym_types.h:89
int source_pid
Definition: sym_types.h:97
int mir_cuts
Definition: sym_types.h:479
double lift_and_project_cuts
Definition: sym_types.h:326
double idle_diving
Definition: sym_types.h:308
node_times comp_times
Definition: sym_types.h:896
int sos_num
Definition: sym_types.h:661
double mir_cuts
Definition: sym_types.h:322
int * frac_vars
Definition: sym_types.h:207
int str_br_total_iter_num
Definition: sym_types.h:461
int num_fp_calls_in_path
Definition: sym_types.h:412
char * orig_sense
Definition: sym_types.h:864
int lift_and_project_cuts_root
Definition: sym_types.h:497
int nz
Definition: sym_types.h:663
int r_row_num
Definition: sym_types.h:769
double range
Definition: sym_types.h:143
int lp_node_calls
Definition: sym_types.h:452
int col_size
Definition: sym_types.h:662
double primal_heur
Definition: sym_types.h:340
double start_objval
Definition: sym_types.h:580
struct LP_STAT lp_stat_desc
double * fixed_val
Definition: sym_types.h:840
int num_duplicate_cuts
Definition: sym_types.h:502
double * subs_rval
Definition: sym_types.h:850
int e_row_num
Definition: sym_types.h:766
double rhs[MAX_CHILDREN_NUM]
Definition: sym_types.h:233
double cont_var_ratio
Definition: sym_types.h:756
struct VAR_DESC var_desc
int probing_cuts
Definition: sym_types.h:478
int landp_calls
Definition: sym_types.h:518
array_desc cutind
Definition: sym_types.h:194
double lp
Definition: sym_types.h:298
array_desc uind
Definition: sym_types.h:189
double * lb
Definition: sym_types.h:827
int ds_num_iter
Definition: sym_types.h:551
double * matval
Definition: sym_types.h:100
int subs_alloc_size
Definition: sym_types.h:847
int diving_halts
Definition: sym_types.h:427
int cuts_root
Definition: sym_types.h:487
struct NODE_DESC node_desc
int branch
Definition: sym_types.h:80
int rounding_calls
Definition: sym_types.h:516
double * obj2
Definition: sym_types.h:823
struct WARM_START_DESC warm_start_desc
double * opt_sol
Definition: sym_types.h:882
int lb_last_call_ind
Definition: sym_types.h:571
IMPlist * ulist
Definition: sym_types.h:667
int fr_analyzed_nodes
Definition: sym_types.h:558
char * c_sense
Definition: sym_types.h:779
double lb
Definition: sym_types.h:695
double dupes_and_bad_coeffs_in_cuts
Definition: sym_types.h:329
double orig_ub
Definition: sym_types.h:700
double lp_setup
Definition: sym_types.h:299
double lpetol
Definition: sym_types.h:51
int lb_calls
Definition: sym_types.h:569
double rs
Definition: sym_types.h:338
int lift_and_project_calls
Definition: sym_types.h:517
int num_cuts_slacked_out_in_path
Definition: sym_types.h:401
double sr_ub
Definition: sym_types.h:697
int num_rcs
Definition: sym_types.h:594
int fr_last_sol_call
Definition: sym_types.h:559
int rel_br_down_update
Definition: sym_types.h:470
int * sos_ind
Definition: sym_types.h:146
int name
Definition: sym_types.h:82
struct IMPLIST IMPlist
double bin_row_ratio
Definition: sym_types.h:764
struct STR_INT str_int
struct ARRAY_DESC array_desc
int frac_cnt
Definition: sym_types.h:413
double * c_val
Definition: sym_types.h:777
int * matind
Definition: sym_types.h:99
int fr_calls
Definition: sym_types.h:555
int rel_br_full_solve_num
Definition: sym_types.h:466
int max_solutions
Definition: sym_types.h:927
double violation
Definition: sym_types.h:102
struct CUT_DATA cut_data
struct BC_NODE bc_node
int rs_analyzed_nodes
Definition: sym_types.h:565
#define MAX_CHANGE_NUM
Definition: sym_types.h:19
int feasibility_status
Definition: sym_types.h:384
int num_str_br_cands_in_path
Definition: sym_types.h:407
char is_opt_val_integral
Definition: sym_types.h:739
double * ub
Definition: sym_types.h:828
int fp_num_iter
Definition: sym_types.h:527
double knapsack_cuts
Definition: sym_types.h:318
#define MAX_LINE_LENGTH
Definition: sym_proto.h:20
int cont_var_num
Definition: sym_types.h:713
double ds
Definition: sym_types.h:333
char node_status
Definition: sym_types.h:382
double sos_bin_row_ratio
Definition: sym_types.h:763
int * sol_ind
Definition: sym_types.h:386
int code
Definition: sym_types.h:289
int * subs_rbeg
Definition: sym_types.h:848
int allocated_cut_num
Definition: sym_types.h:893
double idle_node
Definition: sym_types.h:309
double redsplit_cuts
Definition: sym_types.h:328
int cont_row_num
Definition: sym_types.h:747
int n
Definition: sym_types.h:814
double fixed_lhs_offset
Definition: sym_types.h:692
int * matind
Definition: sym_types.h:819
char is_updated
Definition: sym_types.h:719
double max_row_ratio
Definition: sym_types.h:758
double probing_cuts
Definition: sym_types.h:321
int sh_last_call_ind
Definition: sym_types.h:538
struct BRANCH_DESC branch_desc
int rh_num_sols
Definition: sym_types.h:532
basis_desc basis
Definition: sym_types.h:190
int ind
Definition: sym_types.h:617
double cut_pool
Definition: sym_types.h:313
int branch[MAX_CHILDREN_NUM]
Definition: sym_types.h:235
int lift_and_project_cuts
Definition: sym_types.h:483
int knapsack_cuts_root
Definition: sym_types.h:489
struct NODE_TIMES node_times
int row_bin_den_mean
Definition: sym_types.h:751
struct DOUBLE_ARRAY_DESC double_array_desc
int ineff_cnt
Definition: sym_types.h:90
int prob_type
Definition: sym_types.h:729
int change_type[MAX_CHANGE_NUM]
Definition: sym_types.h:870
int alloc_n
Definition: sym_types.h:833
int oddhole_cuts_root
Definition: sym_types.h:490
int * aggr_ind
Definition: sym_types.h:853
struct IMPVAR * left
Definition: sym_types.h:625
double ramp_down_time
Definition: sym_types.h:307
double end_objval
Definition: sym_types.h:404
int node_cuts_tried
Definition: sym_types.h:587
int obj_size
Definition: sym_types.h:737
int fr_last_call_ind
Definition: sym_types.h:557
struct ROW_DATA row_data
double objval
Definition: sym_types.h:49
int row_bin_den
Definition: sym_types.h:749
int desc_size
Definition: sym_types.h:203
ROWinfo * rows
Definition: sym_types.h:771
char * coef
Definition: sym_types.h:70
struct PROB_TIMES prob_times
int print_stats_cnt
Definition: sym_types.h:444
int row_coef_bin_cnt
Definition: sym_types.h:715
int rs_last_call_ind
Definition: sym_types.h:564
int mir_calls
Definition: sym_types.h:513
int * row_matbeg
Definition: sym_types.h:859
int * userind
Definition: sym_types.h:56
double avg_cuts_obj_impr_in_path
Definition: sym_types.h:579
int xlevel
Definition: sym_types.h:40
double max_vsize
Definition: sym_types.h:443
struct LP_SOL lp_sol
struct SP_DESC sp_desc
int new_col_num
Definition: sym_types.h:871
int c_nz
Definition: sym_types.h:782
int gomory_nz
Definition: sym_types.h:508
int coef_type
Definition: sym_types.h:681
cut_data ** cuts
Definition: sym_types.h:894
int size
Definition: sym_types.h:709
double twomir_cuts
Definition: sym_types.h:323
double ub_heurtime
Definition: sym_types.h:352
int integerizable_var_num
Definition: sym_types.h:734
int redsplit_cuts_root
Definition: sym_types.h:499
struct PROBLEM_STAT problem_stat
int num_cuts_slacked_out_in_path
Definition: sym_types.h:578
double sum_obj_offset
Definition: sym_types.h:743
int * cru_vars
Definition: sym_types.h:873
int rs_calls
Definition: sym_types.h:562
int aggr_n
Definition: sym_types.h:852
int ds_type_num_sols[DIVING_HEURS_CNT]
Definition: sym_types.h:549
int cuts_added_to_lps
Definition: sym_types.h:504
char ** colname
Definition: sym_types.h:829
double start_node
Definition: sym_types.h:312
double oddhole_cuts
Definition: sym_types.h:319
int * list
Definition: sym_types.h:153
int fr_num_sols
Definition: sym_types.h:556
int frac_cnt
Definition: sym_types.h:206
char * sense
Definition: sym_types.h:826
int redsplit_calls
Definition: sym_types.h:519
int binary_row_num
Definition: sym_types.h:746
int rel_br_up_update
Definition: sym_types.h:468
int twomir_cuts_root
Definition: sym_types.h:494
char type
Definition: sym_types.h:211
int ls_last_call_ind
Definition: sym_types.h:543
#define MAX_CHILDREN_NUM
Definition: sym_types.h:18
double avg_br_obj_impr_in_path
Definition: sym_types.h:408
double bin_var_ratio
Definition: sym_types.h:755
int change_num
Definition: sym_types.h:869
double landp_cuts
Definition: sym_types.h:327
int ds_num_sols
Definition: sym_types.h:547
int fixed_zero
Definition: sym_types.h:837
double sh
Definition: sym_types.h:336
char is_redundant
Definition: sym_types.h:718
int twomir_cuts
Definition: sym_types.h:480
int lp_calls
Definition: sym_types.h:451
int fixed_var_num
Definition: sym_types.h:733
int ** sol_inds
Definition: sym_types.h:277
int ds_last_call_ind
Definition: sym_types.h:552
double_array_desc baserows
Definition: sym_types.h:178
double frac_avg
Definition: sym_types.h:414
struct COL_IMP col_imp
struct COLINFO COLinfo
char deletable
Definition: sym_types.h:93
double_array_desc extravars
Definition: sym_types.h:177
double int_var_ratio
Definition: sym_types.h:757
int size
Definition: sym_types.h:69
int * sol_sizes
Definition: sym_types.h:276
int fp_poor_sols
Definition: sym_types.h:525
int gomory_cuts
Definition: sym_types.h:474
double communication
Definition: sym_types.h:297
char free
Definition: sym_types.h:92
int cp
Definition: sym_types.h:369
int gomory_calls
Definition: sym_types.h:507
double fp
Definition: sym_types.h:331
int xlength
Definition: sym_types.h:38
int prob_num
Definition: sym_types.h:784
int rel_br_pc_down_num
Definition: sym_types.h:469
int * c_beg
Definition: sym_types.h:778
int c_num
Definition: sym_types.h:781
node_times bc_time
Definition: sym_types.h:350
double ** ub
Definition: sym_types.h:597
int cutnum
Definition: sym_types.h:61
int clique_cuts
Definition: sym_types.h:477
double * xval
Definition: sym_types.h:47
cut_data * cut
Definition: sym_types.h:98
double ls
Definition: sym_types.h:332
int xindex
Definition: sym_types.h:42
struct SP_SOLUTION_DESC sp_solution
double value
Definition: sym_types.h:221
int * c_tmp
Definition: sym_types.h:783
int leaves_after_trimming
Definition: sym_types.h:438
int str_br_bnd_changes
Definition: sym_types.h:459
int sh_calls
Definition: sym_types.h:536
int mir_cuts_root
Definition: sym_types.h:493
int var_type_modified
Definition: sym_types.h:868
int nf_status
Definition: sym_types.h:192
int lb_analyzed_nodes
Definition: sym_types.h:572
sp_solution ** solutions
Definition: sym_types.h:932
int * xind
Definition: sym_types.h:45
int num_poor_cuts
Definition: sym_types.h:501
double ramp_up_lp
Definition: sym_types.h:306
double fixed_obj_offset
Definition: sym_types.h:691
struct ROWINFO ROWinfo
int cuts_generated
Definition: sym_types.h:473
double start_objval
Definition: sym_types.h:403
int * sos_ind[MAX_CHILDREN_NUM]
Definition: sym_types.h:237
int fp_lp_calls
Definition: sym_types.h:523
double ** lb
Definition: sym_types.h:598
double idle_cuts
Definition: sym_types.h:311
int num_fp_calls_in_path
Definition: sym_types.h:585
IMPvar * head
Definition: sym_types.h:632
double * subs_aval
Definition: sym_types.h:844
int c_alloc_num
Definition: sym_types.h:775
bounds_change_desc * bnd_change
Definition: sym_types.h:199
double_array_desc basevars
Definition: sym_types.h:176
struct BASE_DESC base_desc
int c_alloc_size
Definition: sym_types.h:774
char sense[MAX_CHILDREN_NUM]
Definition: sym_types.h:232
int landp_cuts
Definition: sym_types.h:484
struct MIPINFO MIPinfo
struct BOUNDS_CHANGE_DESC bounds_change_desc
int ds_calls
Definition: sym_types.h:546
COLinfo * cols
Definition: sym_types.h:772
int knapsack_cuts
Definition: sym_types.h:475
double wall_clock_lp
Definition: sym_types.h:304
double gomory_cuts
Definition: sym_types.h:317
int num_cut_iters_in_path
Definition: sym_types.h:399
char var_type
Definition: sym_types.h:644
IMPvar * tail
Definition: sym_types.h:633
int leaves_before_trimming
Definition: sym_types.h:437
int col_bin_den_mean
Definition: sym_types.h:753
int clique_calls
Definition: sym_types.h:511
array_desc not_fixed
Definition: sym_types.h:191
int * fixed_ind
Definition: sym_types.h:839
int total_num_sols_found
Definition: sym_types.h:930
struct COL_IMP * c_next
Definition: sym_types.h:610
double * obj
Definition: sym_types.h:821
int rel_br_pc_up_num
Definition: sym_types.h:467
int ip_sols
Definition: sym_types.h:454
int vars_not_priced
Definition: sym_types.h:439
double end_objval
Definition: sym_types.h:581
char is_modified
Definition: sym_types.h:874
int num_cuts_added_in_path
Definition: sym_types.h:400
int chain_cuts_trial_num
Definition: sym_types.h:586
double lb
Definition: sym_types.h:339
double ub_overhead
Definition: sym_types.h:351
int * cnt
Definition: sym_types.h:600