Cgl 0.60.3
CglRedSplitParam.hpp
Go to the documentation of this file.
1// Name: CglRedSplitParam.hpp
2// Author: Francois Margot
3// Tepper School of Business
4// Carnegie Mellon University, Pittsburgh, PA 15213
5// email: fmargot@andrew.cmu.edu
6// Date: 11/24/06
7//
8// $Id: CglRedSplitParam.hpp 1122 2013-04-06 20:39:53Z stefan $
9//-----------------------------------------------------------------------------
10// Copyright (C) 2006, Francois Margot and others. All Rights Reserved.
11// This code is licensed under the terms of the Eclipse Public License (EPL).
12
13#ifndef CglRedSplitParam_H
14#define CglRedSplitParam_H
15
16#include "CglParam.hpp"
17
18
21
60
61class CglRedSplitParam : public CglParam {
62
63public:
64
71 virtual void setAway(const double value);
73 inline double getAway() const {return away_;}
74
78 virtual void setLUB(const double value);
80 inline double getLUB() const {return LUB;}
81
85 void setEPS_ELIM(const double value);
87 double getEPS_ELIM() const {return EPS_ELIM;}
88
90 virtual void setEPS_RELAX_ABS(const double eps_ra);
92 inline double getEPS_RELAX_ABS() const {return EPS_RELAX_ABS;}
93
95 virtual void setEPS_RELAX_REL(const double eps_rr);
97 inline double getEPS_RELAX_REL() const {return EPS_RELAX_REL;}
98
99 // Set the maximum ratio between largest and smallest non zero
100 // coefficients in a cut. Default: 1e8.
101 virtual void setMAXDYN(double value);
103 inline double getMAXDYN() const {return MAXDYN_LUB;}
104
105 // Set the maximum ratio between largest and smallest non zero
106 // coefficient in a cut involving structural variables with
107 // lower or upper bound in absolute value larger than LUB.
108 // Should logically be larger or equal to MAXDYN. Default: 1e13.
109 virtual void setMAXDYN_LUB(double value);
111 inline double getMAXDYN_LUB() const {return MAXDYN_LUB;}
112
116 virtual void setEPS_COEFF_LUB(const double value);
118 inline double getEPS_COEFF_LUB() const {return EPS_COEFF_LUB;}
119
122 virtual void setMINVIOL(double value);
124 inline double getMINVIOL() const {return MINVIOL;}
125
127 virtual void setUSE_INTSLACKS(int value);
129 inline int getUSE_INTSLACKS() const {return USE_INTSLACKS;}
130
132 virtual void setUSE_CG2(int value);
134 inline int getUSE_CG2() const {return USE_CG2;}
135
138 virtual void setNormIsZero(const double value);
140 inline double getNormIsZero() const {return normIsZero;}
141
144 virtual void setMinReduc(const double value);
146 inline double getMinReduc() const {return minReduc;}
147
153 virtual void setMaxTab(const double value);
155 inline double getMaxTab() const {return maxTab_;}
157
161 CglRedSplitParam(const double lub = 1000.0,
162 const double eps_elim = 1e-12,
163 const double eps_relax_abs = 1e-8,
164 const double eps_relax_rel = 0.0,
165 const double max_dyn = 1e8,
166 const double max_dyn_lub = 1e13,
167 const double eps_coeff_lub = 1e-13,
168 const double min_viol = 1e-7,
169 const int use_int_slacks = 0,
170 const int use_cg2 = 0,
171 const double norm_zero = 1e-5,
172 const double min_reduc = 0.05,
173 const double away = 0.05,
174 const double max_tab = 1e7);
175
178 const double lub = 1000.0,
179 const double eps_elim = 1e-12,
180 const double eps_relax_abs = 1e-8,
181 const double eps_relax_rel = 0.0,
182 const double max_dyn = 1e8,
183 const double max_dyn_lub = 1e13,
184 const double eps_coeff_lub = 1e-13,
185 const double min_viol = 1e-7,
186 const int use_int_slacks = 0,
187 const int use_cg2 = 0,
188 const double norm_zero = 1e-5,
189 const double min_reduc = 0.05,
190 const double away = 0.05,
191 const double max_tab = 1e7);
192
195
197 virtual CglRedSplitParam* clone() const;
198
201
205
206protected:
207
210
213 double LUB;
214
217 double EPS_ELIM;
218
222
227
228 // Maximum ratio between largest and smallest non zero
229 // coefficients in a cut. Default: 1e8.
230 double MAXDYN;
231
232 // Maximum ratio between largest and smallest non zero
233 // coefficients in a cut involving structural variables with
234 // lower or upper bound in absolute value larger than LUB.
235 // Should logically be larger or equal to MAXDYN. Default: 1e13.
237
241
244 double MINVIOL;
245
248
252
256
259 double minReduc;
260
263 double away_;
264
267 double maxTab_;
268
270};
271
272#endif
Class collecting parameters for all cut generators.
Definition: CglParam.hpp:22
Class collecting parameters the Reduced-and-split cut generator.
CglRedSplitParam(const CglRedSplitParam &source)
Copy constructor.
double LUB
Value considered large for the absolute value of lower or upper bound on a variable.
double getMAXDYN_LUB() const
Get the value of MAXDYN_LUB.
virtual void setMaxTab(const double value)
Set the maximum allowed value for (mTab * mTab * CoinMax(mTab, nTab)) where mTab is the number of row...
double EPS_RELAX_REL
For a generated cut with right hand side rhs_val, EPS_RELAX_EPS * fabs(rhs_val) is used to relax the ...
double maxTab_
Maximum value for (mTab * mTab * CoinMax(mTab, nTab)).
void setEPS_ELIM(const double value)
Set the value of EPS_ELIM, epsilon for values of coefficients when eliminating slack variables; Defau...
CglRedSplitParam(const CglParam &source, const double lub=1000.0, const double eps_elim=1e-12, const double eps_relax_abs=1e-8, const double eps_relax_rel=0.0, const double max_dyn=1e8, const double max_dyn_lub=1e13, const double eps_coeff_lub=1e-13, const double min_viol=1e-7, const int use_int_slacks=0, const int use_cg2=0, const double norm_zero=1e-5, const double min_reduc=0.05, const double away=0.05, const double max_tab=1e7)
Constructor from CglParam.
double getEPS_RELAX_ABS() const
Get value of EPS_RELAX_ABS.
double MINVIOL
Minimum violation for the current basic solution in a generated cut.
virtual void setUSE_CG2(int value)
Set the value of USE_CG2.
virtual void setMinReduc(const double value)
Set the value of minReduc, threshold for relative norm improvement for performing a reduction; Defaul...
double getMaxTab() const
Get the value of maxTab.
virtual CglRedSplitParam * clone() const
Clone.
int USE_INTSLACKS
Use integer slacks to generate cuts if USE_INTSLACKS = 1. Default: 0.
virtual void setEPS_RELAX_REL(const double eps_rr)
Set EPS_RELAX_REL.
double EPS_ELIM
Epsilon for value of coefficients when eliminating slack variables.
virtual void setMAXDYN_LUB(double value)
double getMinReduc() const
Get the value of minReduc.
double getEPS_COEFF_LUB() const
Get the value of EPS_COEFF_LUB.
virtual void setMINVIOL(double value)
Set the value of MINVIOL, the minimum violation for the current basic solution in a generated cut.
double getMAXDYN() const
Get the value of MAXDYN.
virtual CglRedSplitParam & operator=(const CglRedSplitParam &rhs)
Assignment operator.
double getAway() const
Get value of away.
virtual void setNormIsZero(const double value)
Set the value of normIsZero, the threshold for considering a norm to be 0; Default: 1e-5.
virtual void setUSE_INTSLACKS(int value)
Set the value of USE_INTSLACKS.
CglRedSplitParam(const double lub=1000.0, const double eps_elim=1e-12, const double eps_relax_abs=1e-8, const double eps_relax_rel=0.0, const double max_dyn=1e8, const double max_dyn_lub=1e13, const double eps_coeff_lub=1e-13, const double min_viol=1e-7, const int use_int_slacks=0, const int use_cg2=0, const double norm_zero=1e-5, const double min_reduc=0.05, const double away=0.05, const double max_tab=1e7)
Default constructor.
double EPS_COEFF_LUB
Epsilon for value of coefficients for variables with absolute value of lower or upper bound larger th...
int getUSE_INTSLACKS() const
Get the value of USE_INTSLACKS.
virtual void setEPS_COEFF_LUB(const double value)
Set the value of EPS_COEFF_LUB, epsilon for values of coefficients for variables with absolute value ...
double normIsZero
Norm of a vector is considered zero if smaller than normIsZero; Default: 1e-5.
double EPS_RELAX_ABS
Value added to the right hand side of each generated cut to relax it.
virtual void setAway(const double value)
Set away, the minimum distance from being integer used for selecting rows for cut generation; all row...
virtual ~CglRedSplitParam()
Destructor.
virtual void setMAXDYN(double value)
double away_
Use row only if pivot variable should be integer but is more than away_ from being integer.
double getNormIsZero() const
Get the value of normIsZero.
double getMINVIOL() const
Get the value of MINVIOL.
int getUSE_CG2() const
Get the value of USE_CG2.
virtual void setLUB(const double value)
Set the value of LUB, value considered large for the absolute value of a lower or upper bound on a va...
virtual void setEPS_RELAX_ABS(const double eps_ra)
Set EPS_RELAX_ABS.
double getEPS_RELAX_REL() const
Get value of EPS_RELAX_REL.
double getLUB() const
Get the value of LUB.
double getEPS_ELIM() const
Get the value of EPS_ELIM.
double minReduc
Minimum reduction in percent that must be achieved by a potential reduction step in order to be perfo...
int USE_CG2
Use second way to generate a mixed integer Gomory cut (see methods generate_cgcut()) and generate_cgc...