00001 /*===========================================================================*/ 00002 /* */ 00003 /* This file is part of the SYMPHONY MILP Solver Framework. */ 00004 /* */ 00005 /* SYMPHONY was jointly developed by Ted Ralphs (tkralphs@lehigh.edu) and */ 00006 /* Laci Ladanyi (ladanyi@us.ibm.com). */ 00007 /* */ 00008 /* (c) Copyright 2000-2008 Ted Ralphs. All Rights Reserved. */ 00009 /* */ 00010 /* This software is licensed under the Common Public License. Please see */ 00011 /* accompanying file for terms. */ 00012 /* */ 00013 /*===========================================================================*/ 00014 00015 #ifndef _LP_PARAMS_H 00016 #define _LP_PARAMS_H 00017 00018 #include "sym_constants.h" 00019 #include "sym_timemeas.h" 00020 00021 /*---------------------------------------------------------------------------*\ 00022 | The list of parameters associated with processing a node in the branch and | 00023 | cut tree. See the README file for an explanation of the parameters | 00024 \*---------------------------------------------------------------------------*/ 00025 00026 typedef struct CUT_TIME_OUT{ 00027 double first_cut_time_out; 00028 double all_cuts_time_out; 00029 }cut_time_out; 00030 00031 typedef struct CGL_PARAMS{ 00032 /* Cut generation in LP */ 00033 int generate_cgl_cuts; 00034 int generate_cgl_gomory_cuts; 00035 int generate_cgl_redsplit_cuts; 00036 int generate_cgl_knapsack_cuts; 00037 int generate_cgl_oddhole_cuts; 00038 int generate_cgl_probing_cuts; 00039 int generate_cgl_mir_cuts; 00040 int generate_cgl_twomir_cuts; 00041 int generate_cgl_clique_cuts; 00042 int generate_cgl_flow_and_cover_cuts; 00043 int generate_cgl_rounding_cuts; 00044 int generate_cgl_lift_and_project_cuts; 00045 int generate_cgl_landp_cuts; 00046 00047 int generate_cgl_gomory_cuts_freq; 00048 int generate_cgl_redsplit_cuts_freq; 00049 int generate_cgl_knapsack_cuts_freq; 00050 int generate_cgl_oddhole_cuts_freq; 00051 int generate_cgl_probing_cuts_freq; 00052 int generate_cgl_mir_cuts_freq; 00053 int generate_cgl_twomir_cuts_freq; 00054 int generate_cgl_clique_cuts_freq; 00055 int generate_cgl_flow_and_cover_cuts_freq; 00056 int generate_cgl_rounding_cuts_freq; 00057 int generate_cgl_lift_and_project_cuts_freq; 00058 int generate_cgl_landp_cuts_freq; 00059 00060 int gomory_generated_in_root; 00061 int redsplit_generated_in_root; 00062 int knapsack_generated_in_root; 00063 int oddhole_generated_in_root; 00064 int probing_generated_in_root; 00065 int mir_generated_in_root; 00066 int twomir_generated_in_root; 00067 int clique_generated_in_root; 00068 int flow_and_cover_generated_in_root; 00069 int rounding_generated_in_root; 00070 int lift_and_project_generated_in_root; 00071 int landp_generated_in_root; 00072 }cgl_params; 00073 00074 typedef struct LP_PARAMS{ 00075 int verbosity; 00076 double granularity; 00077 int use_cg; 00078 int set_obj_upper_lim; 00079 int do_primal_heuristic; 00080 double time_limit; 00081 00082 /* these two are passed directly to the lp solver */ 00083 int scaling; 00084 int fastmip; 00085 00086 int try_to_recover_from_error; 00087 /* ZERO_ONE_PROBLEM / INTEGER_PROBLEM / MIXED_INTEGER_PROBLEM */ 00088 int problem_type; 00089 int keep_description_of_pruned; 00090 00091 int not_fixed_storage_size; 00092 00093 int cut_pool_check_freq; 00094 00095 int load_balance_level; 00096 int load_balance_iterations; 00097 int load_balance_compare_candidates; 00098 00099 double fractional_diving_ratio; 00100 int fractional_diving_num; 00101 00102 /* parameters constraining the growth of the matrix */ 00103 double max_non_dual_feas_to_add_frac; 00104 int max_non_dual_feas_to_add_min; 00105 int max_non_dual_feas_to_add_max; 00106 double max_not_fixable_to_add_frac; 00107 int max_not_fixable_to_add_min; 00108 int max_not_fixable_to_add_max; 00109 00110 int mat_col_compress_num; 00111 double mat_col_compress_ratio; 00112 int mat_row_compress_num; 00113 double mat_row_compress_ratio; 00114 00115 /* parameters governing tailing off checking */ 00116 int tailoff_gap_backsteps; 00117 double tailoff_gap_frac; 00118 int tailoff_obj_backsteps; 00119 double tailoff_obj_frac; 00120 double tailoff_absolute; 00121 00122 int ineff_cnt_to_delete; 00123 int eff_cnt_before_cutpool; 00124 int ineffective_constraints; 00125 int base_constraints_always_effective; 00126 00127 int branch_on_cuts; /* TRUE / FALSE */ 00128 int discard_slack_cuts; 00129 00130 cut_time_out first_lp; 00131 cut_time_out later_lp; 00132 00133 int max_cut_num_per_iter; 00134 00135 /* Reduced cost and logical fixing parameters */ 00136 int do_reduced_cost_fixing; 00137 double gap_as_ub_frac; 00138 double gap_as_last_gap_frac; 00139 int do_logical_fixing; 00140 int fixed_to_ub_before_logical_fixing; /* OK */ 00141 double fixed_to_ub_frac_before_logical_fixing; /* OK */ 00142 00143 /* CGL parameters */ 00144 cgl_params cgl; 00145 00146 /* Parameters affecting branching */ 00147 int max_presolve_iter; 00148 00149 /*Defaults for the user supplied routines*/ 00150 int is_feasible_default; 00151 int send_feasible_solution_default; 00152 int display_solution_default; 00153 int shall_we_branch_default; 00154 int select_candidates_default; 00155 int strong_branching_cand_num_min; 00156 int strong_branching_cand_num_max; 00157 double strong_branching_red_ratio; 00158 int use_hot_starts; 00159 int compare_candidates_default; 00160 int select_child_default; 00161 int pack_lp_solution_default; 00162 00163 /* Multi-criteria parameters */ 00164 int multi_criteria; 00165 int mc_find_supported_solutions; 00166 int mc_add_optimality_cuts; 00167 double mc_rho; /* For augmented Chebyshev norm */ 00168 double mc_gamma; /* Weight on first objective */ 00169 double mc_tau; /* Weight on second objective */ 00170 00171 int sensitivity_analysis; 00172 00173 }lp_params; 00174 00175 #endif