Cgl  0.60.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Macros | Functions
CglTwomir.hpp File Reference
#include <string>
#include "CglCutGenerator.hpp"
#include "CoinFactorization.hpp"
+ Include dependency graph for CglTwomir.hpp:

Go to the source code of this file.


struct  DGG_constraint_t
struct  DGG_list_t
struct  cutParams
struct  DGG_data_t
class  CglTwomir
 Twostep MIR Cut Generator Class. More...


#define DGG_isBasic(data, idx)   ((data->info[idx])&1)
#define DGG_isInteger(data, idx)   ((data->info[idx] >> 1)&1)
#define DGG_isStructural(data, idx)   ((data->info[idx] >> 2)&1)
#define DGG_isEqualityConstraint(data, idx)   ((data->info[idx] >> 3)&1)
#define DGG_isNonBasicAtUB(data, idx)   ((data->info[idx] >> 4)&1)
#define DGG_isNonBasicAtLB(data, idx)   ((data->info[idx] >> 5)&1)
#define DGG_isConstraintBoundedAbove(data, idx)   ((data->info[idx] >> 6)&1)
#define DGG_isConstraintBoundedBelow(data, idx)   ((data->info[idx] >> 7)&1)
#define DGG_setIsBasic(data, idx)   ((data->info[idx]) |= 1)
#define DGG_setIsInteger(data, idx)   ((data->info[idx]) |= (1<<1))
#define DGG_setIsStructural(data, idx)   ((data->info[idx]) |= (1<<2))
#define DGG_setEqualityConstraint(data, idx)   ((data->info[idx]) |= (1<<3))
#define DGG_setIsNonBasicAtUB(data, idx)   ((data->info[idx]) |= (1<<4))
#define DGG_setIsNonBasicAtLB(data, idx)   ((data->info[idx]) |= (1<<5))
#define DGG_setIsConstraintBoundedAbove(data, idx)   ((data->info[idx]) |= (1<<6))
#define DGG_setIsConstraintBoundedBelow(data, idx)   ((data->info[idx]) |= (1<<7))
#define DGG_DEBUG_DGG   1
#define DGG_TRACE_ERRORS   0
#define DGG_DISPLAY   0
#define DGG_DEFAULT_TMIN   1
#define DGG_DEFAULT_TMAX   1
#define DGG_DEFAULT_MAX_CUTS   500
#define DGG_DEFAULT_CUT_INC   250
#define DGG_DEFAULT_DELAYED_FREQ   9999999
#define DGG_DEFAULT_LPROWS_FREQ   9999999
#define DGG_OSI   0
#define DGG_CPX   1
#define DGG_QSO   2
#define DGG_DEBUG_SOLVER   0
#define DGG_TMIR_CUT   1
#define DGG_2STEP_CUT   2
#define DGG_ALPHA_MIN_SUM   0
#define DGG_ALPHA_RANDOM_01   1
#define DGG_ALPHA_ALL   3
#define DGG_MIN_STEEPNESS   1.0e-4
#define DGG_MAX_L2NORM   1.0e7
#define DGG_GOMORY_THRESH   0.005
#define DGG_RHS_THRESH   0.005
#define DGG_BOUND_THRESH   1.0e-6
#define DGG_EQUALITY_THRESH   1.0e-5
#define DGG_SHIFT_THRESH   1.0e-6
#define DGG_INTEGRALITY_THRESH   1.0e-10
#define DGG_MIN_RHO   1.0e-7
#define DGG_MIN_ALPHA   1.0e-7
#define DGG_NULL_SLACK   1.0e-5
#define DGG_NICEFY_MIN_ABSVALUE   1.0e-13
#define DGG_NICEFY_MIN_FIX   1.0e-7
#define DGG_NICEFY_MAX_PADDING   1.0e-6
#define DGG_NICEFY_MAX_RATIO   1.0e9
#define DGG_IF_EXIT(A, B, REST)   {if(A) {fprintf(stdout, REST);exit(B);}}
#define DGG_THROW(A, B)   return(A)
#define DGG_CHECKRVAL(A, B)   { if(A) return(B); }
#define DGG_CHECKRVAL1(A, B)   { if(A) { rval = B; goto CLEANUP; } }
#define DGG_TEST(A, B, REST)   { if(A) return(B);}
#define DGG_TEST2(A, B, REST, C)   { DGG_TEST(A,B,REST) }
#define DGG_TEST3(A, B, REST, C, D)   { DGG_TEST(A,B,REST) }
#define DGG_MIN(a, b)   ( (a<b)?a:b )
#define DGG_MAX(a, b)   ( (a>b)?a:b )
#define KREM(vht, alpha, tau)   (DGG_MIN( ceil(vht / alpha), tau ) - 1)
#define LMIN(vht, d, bht)   (DGG_MIN( floor(d*bht/bht), d))
#define ABOV(v)   (v - floor(v))
#define QINT(vht, bht, tau)   ( (int)floor( (vht*(tau-1))/bht ) )
#define V2I(bht, tau, i)   ( ((i+1)*bht / tau) )


int DGG_is_even (double vht, double bht, int tau, int q)
double frac_part (double value)
int DGG_is_a_multiple_of_b (double a, double b)
int DGG_freeData (DGG_data_t *data)
DGG_constraint_tDGG_newConstraint (int max_arrays)
void DGG_freeConstraint (DGG_constraint_t *c)
DGG_constraint_tDGG_copyConstraint (DGG_constraint_t *c)
void DGG_scaleConstraint (DGG_constraint_t *c, int t)
void DGG_list_init (DGG_list_t *l)
int DGG_list_addcut (DGG_list_t *l, DGG_constraint_t *cut, int ctype, double alpha)
void DGG_list_delcut (DGG_list_t *l, int i)
void DGG_list_free (DGG_list_t *l)
DGG_data_tDGG_getData (const void *solver_ptr)
int DGG_transformConstraint (DGG_data_t *data, double **x_out, double **rc_out, char **isint_out, DGG_constraint_t *constraint)
int DGG_unTransformConstraint (DGG_data_t *data, DGG_constraint_t *constraint)
int DGG_substituteSlacks (const void *solver_ptr, DGG_data_t *data, DGG_constraint_t *cut)
int DGG_nicefyConstraint (const void *solver_ptr, DGG_data_t *data, DGG_constraint_t *cut)
int DGG_getFormulaConstraint (int row_idx, const void *solver_ptr, DGG_data_t *data, DGG_constraint_t *row)
int DGG_getTableauConstraint (int index, const void *solver_ptr, DGG_data_t *data, DGG_constraint_t *tabrow, const int *colIsBasic, const int *rowIsBasic, CoinFactorization &factorization, int mode)
DGG_constraint_tDGG_getSlackExpression (const void *solver_ptr, DGG_data_t *data, int row_index)
int DGG_generateTabRowCuts (DGG_list_t *list, DGG_data_t *data, const void *solver_ptr)
int DGG_generateFormulationCuts (DGG_list_t *list, DGG_data_t *data, const void *solver_ptr, int nrows, CoinThreadRandom &generator)
int DGG_generateFormulationCutsFromBase (DGG_constraint_t *base, double slack, DGG_list_t *list, DGG_data_t *data, const void *solver_ptr, CoinThreadRandom &generator)
int DGG_generateCutsFromBase (DGG_constraint_t *base, DGG_list_t *list, DGG_data_t *data, const void *solver_ptr)
int DGG_buildMir (char *isint, DGG_constraint_t *base, DGG_constraint_t **cut_out)
int DGG_build2step (double alpha, char *isint, DGG_constraint_t *base, DGG_constraint_t **cut_out)
int DGG_addMirToList (DGG_constraint_t *base, char *isint, double *x, DGG_list_t *list, DGG_data_t *data, DGG_constraint_t *orig_base)
int DGG_add2stepToList (DGG_constraint_t *base, char *isint, double *x, double *rc, DGG_list_t *list, DGG_data_t *data, DGG_constraint_t *orig_base)
double DGG_cutLHS (DGG_constraint_t *c, double *x)
int DGG_isCutDesirable (DGG_constraint_t *c, DGG_data_t *d)
int DGG_isConstraintViolated (DGG_data_t *d, DGG_constraint_t *c)
int DGG_isBaseTrivial (DGG_data_t *d, DGG_constraint_t *c)
int DGG_is2stepValid (double alpha, double bht)
int DGG_cutsOffPoint (double *x, DGG_constraint_t *cut)
void CglTwomirUnitTest (const OsiSolverInterface *siP, const std::string mpdDir)
 A function that tests the methods in the CglTwomir class. More...

Macro Definition Documentation

#define DGG_isBasic (   data,
)    ((data->info[idx])&1)

Definition at line 71 of file CglTwomir.hpp.

#define DGG_isInteger (   data,
)    ((data->info[idx] >> 1)&1)

Definition at line 72 of file CglTwomir.hpp.

#define DGG_isStructural (   data,
)    ((data->info[idx] >> 2)&1)

Definition at line 73 of file CglTwomir.hpp.

#define DGG_isEqualityConstraint (   data,
)    ((data->info[idx] >> 3)&1)

Definition at line 74 of file CglTwomir.hpp.

#define DGG_isNonBasicAtUB (   data,
)    ((data->info[idx] >> 4)&1)

Definition at line 75 of file CglTwomir.hpp.

#define DGG_isNonBasicAtLB (   data,
)    ((data->info[idx] >> 5)&1)

Definition at line 76 of file CglTwomir.hpp.

#define DGG_isConstraintBoundedAbove (   data,
)    ((data->info[idx] >> 6)&1)

Definition at line 77 of file CglTwomir.hpp.

#define DGG_isConstraintBoundedBelow (   data,
)    ((data->info[idx] >> 7)&1)

Definition at line 78 of file CglTwomir.hpp.

#define DGG_setIsBasic (   data,
)    ((data->info[idx]) |= 1)

Definition at line 80 of file CglTwomir.hpp.

#define DGG_setIsInteger (   data,
)    ((data->info[idx]) |= (1<<1))

Definition at line 81 of file CglTwomir.hpp.

#define DGG_setIsStructural (   data,
)    ((data->info[idx]) |= (1<<2))

Definition at line 82 of file CglTwomir.hpp.

#define DGG_setEqualityConstraint (   data,
)    ((data->info[idx]) |= (1<<3))

Definition at line 83 of file CglTwomir.hpp.

#define DGG_setIsNonBasicAtUB (   data,
)    ((data->info[idx]) |= (1<<4))

Definition at line 84 of file CglTwomir.hpp.

#define DGG_setIsNonBasicAtLB (   data,
)    ((data->info[idx]) |= (1<<5))

Definition at line 85 of file CglTwomir.hpp.

#define DGG_setIsConstraintBoundedAbove (   data,
)    ((data->info[idx]) |= (1<<6))

Definition at line 86 of file CglTwomir.hpp.

#define DGG_setIsConstraintBoundedBelow (   data,
)    ((data->info[idx]) |= (1<<7))

Definition at line 87 of file CglTwomir.hpp.

#define DGG_DEBUG_DGG   1

Definition at line 236 of file CglTwomir.hpp.

#define DGG_TRACE_ERRORS   0

Definition at line 237 of file CglTwomir.hpp.

#define DGG_DISPLAY   0

Definition at line 238 of file CglTwomir.hpp.


Definition at line 239 of file CglTwomir.hpp.


Definition at line 243 of file CglTwomir.hpp.

#define DGG_DEFAULT_TMIN   1

Definition at line 244 of file CglTwomir.hpp.

#define DGG_DEFAULT_TMAX   1

Definition at line 245 of file CglTwomir.hpp.


Definition at line 246 of file CglTwomir.hpp.


Definition at line 247 of file CglTwomir.hpp.

#define DGG_DEFAULT_MAX_CUTS   500

Definition at line 248 of file CglTwomir.hpp.


Definition at line 249 of file CglTwomir.hpp.


Definition at line 250 of file CglTwomir.hpp.


Definition at line 251 of file CglTwomir.hpp.


Definition at line 252 of file CglTwomir.hpp.


Definition at line 253 of file CglTwomir.hpp.

#define DGG_DEFAULT_CUT_INC   250

Definition at line 254 of file CglTwomir.hpp.


Definition at line 255 of file CglTwomir.hpp.


Definition at line 256 of file CglTwomir.hpp.


Definition at line 257 of file CglTwomir.hpp.

#define DGG_DEFAULT_DELAYED_FREQ   9999999

Definition at line 258 of file CglTwomir.hpp.

#define DGG_DEFAULT_LPROWS_FREQ   9999999

Definition at line 259 of file CglTwomir.hpp.


Definition at line 260 of file CglTwomir.hpp.

#define DGG_OSI   0

Definition at line 264 of file CglTwomir.hpp.

#define DGG_CPX   1

Definition at line 265 of file CglTwomir.hpp.

#define DGG_QSO   2

Definition at line 266 of file CglTwomir.hpp.


Definition at line 269 of file CglTwomir.hpp.

#define DGG_DEBUG_SOLVER   0

Definition at line 272 of file CglTwomir.hpp.


Definition at line 275 of file CglTwomir.hpp.

#define DGG_TMIR_CUT   1

Definition at line 280 of file CglTwomir.hpp.

#define DGG_2STEP_CUT   2

Definition at line 281 of file CglTwomir.hpp.

#define DGG_ALPHA_MIN_SUM   0

Definition at line 284 of file CglTwomir.hpp.

#define DGG_ALPHA_RANDOM_01   1

Definition at line 285 of file CglTwomir.hpp.


Definition at line 286 of file CglTwomir.hpp.

#define DGG_ALPHA_ALL   3

Definition at line 287 of file CglTwomir.hpp.


Definition at line 288 of file CglTwomir.hpp.

#define DGG_MIN_STEEPNESS   1.0e-4

Definition at line 293 of file CglTwomir.hpp.

#define DGG_MAX_L2NORM   1.0e7

Definition at line 294 of file CglTwomir.hpp.


Definition at line 297 of file CglTwomir.hpp.

#define DGG_GOMORY_THRESH   0.005

Definition at line 302 of file CglTwomir.hpp.

#define DGG_RHS_THRESH   0.005

Definition at line 304 of file CglTwomir.hpp.

#define DGG_BOUND_THRESH   1.0e-6

Definition at line 310 of file CglTwomir.hpp.

#define DGG_EQUALITY_THRESH   1.0e-5

Definition at line 314 of file CglTwomir.hpp.

#define DGG_SHIFT_THRESH   1.0e-6

Definition at line 318 of file CglTwomir.hpp.

#define DGG_INTEGRALITY_THRESH   1.0e-10

Definition at line 323 of file CglTwomir.hpp.


Definition at line 327 of file CglTwomir.hpp.


Definition at line 331 of file CglTwomir.hpp.

#define DGG_MIN_RHO   1.0e-7

Definition at line 336 of file CglTwomir.hpp.

#define DGG_MIN_ALPHA   1.0e-7

Definition at line 337 of file CglTwomir.hpp.

#define DGG_NULL_SLACK   1.0e-5

Definition at line 340 of file CglTwomir.hpp.

#define DGG_NICEFY_MIN_ABSVALUE   1.0e-13

Definition at line 343 of file CglTwomir.hpp.

#define DGG_NICEFY_MIN_FIX   1.0e-7

Definition at line 344 of file CglTwomir.hpp.

#define DGG_NICEFY_MAX_PADDING   1.0e-6

Definition at line 345 of file CglTwomir.hpp.

#define DGG_NICEFY_MAX_RATIO   1.0e9

Definition at line 346 of file CglTwomir.hpp.

#define DGG_IF_EXIT (   A,
)    {if(A) {fprintf(stdout, REST);exit(B);}}

Definition at line 389 of file CglTwomir.hpp.

#define DGG_THROW (   A,
)    return(A)

Definition at line 391 of file CglTwomir.hpp.

#define DGG_CHECKRVAL (   A,
)    { if(A) return(B); }

Definition at line 393 of file CglTwomir.hpp.

#define DGG_CHECKRVAL1 (   A,
)    { if(A) { rval = B; goto CLEANUP; } }

Definition at line 394 of file CglTwomir.hpp.

#define DGG_TEST (   A,
)    { if(A) return(B);}

Definition at line 396 of file CglTwomir.hpp.

#define DGG_TEST2 (   A,
)    { DGG_TEST(A,B,REST) }

Definition at line 397 of file CglTwomir.hpp.

#define DGG_TEST3 (   A,
)    { DGG_TEST(A,B,REST) }

Definition at line 398 of file CglTwomir.hpp.

#define DGG_MIN (   a,
)    ( (a<b)?a:b )

Definition at line 404 of file CglTwomir.hpp.

#define DGG_MAX (   a,
)    ( (a>b)?a:b )

Definition at line 405 of file CglTwomir.hpp.

#define KREM (   vht,
)    (DGG_MIN( ceil(vht / alpha), tau ) - 1)

Definition at line 406 of file CglTwomir.hpp.

#define LMIN (   vht,
)    (DGG_MIN( floor(d*bht/bht), d))

Definition at line 407 of file CglTwomir.hpp.

#define ABOV (   v)    (v - floor(v))

Definition at line 408 of file CglTwomir.hpp.

#define QINT (   vht,
)    ( (int)floor( (vht*(tau-1))/bht ) )

Definition at line 409 of file CglTwomir.hpp.

#define V2I (   bht,
)    ( ((i+1)*bht / tau) )

Definition at line 410 of file CglTwomir.hpp.

Function Documentation

int DGG_is_even ( double  vht,
double  bht,
int  tau,
int  q 
double frac_part ( double  value)
int DGG_is_a_multiple_of_b ( double  a,
double  b 
int DGG_freeData ( DGG_data_t data)
DGG_constraint_t* DGG_newConstraint ( int  max_arrays)
void DGG_freeConstraint ( DGG_constraint_t c)
DGG_constraint_t* DGG_copyConstraint ( DGG_constraint_t c)
void DGG_scaleConstraint ( DGG_constraint_t c,
int  t 
void DGG_list_init ( DGG_list_t l)
int DGG_list_addcut ( DGG_list_t l,
DGG_constraint_t cut,
int  ctype,
double  alpha 
void DGG_list_delcut ( DGG_list_t l,
int  i 
void DGG_list_free ( DGG_list_t l)
DGG_data_t* DGG_getData ( const void *  solver_ptr)
int DGG_transformConstraint ( DGG_data_t data,
double **  x_out,
double **  rc_out,
char **  isint_out,
DGG_constraint_t constraint 
int DGG_unTransformConstraint ( DGG_data_t data,
DGG_constraint_t constraint 
int DGG_substituteSlacks ( const void *  solver_ptr,
DGG_data_t data,
DGG_constraint_t cut 
int DGG_nicefyConstraint ( const void *  solver_ptr,
DGG_data_t data,
DGG_constraint_t cut 
int DGG_getFormulaConstraint ( int  row_idx,
const void *  solver_ptr,
DGG_data_t data,
DGG_constraint_t row 
int DGG_getTableauConstraint ( int  index,
const void *  solver_ptr,
DGG_data_t data,
DGG_constraint_t tabrow,
const int *  colIsBasic,
const int *  rowIsBasic,
CoinFactorization factorization,
int  mode 
DGG_constraint_t* DGG_getSlackExpression ( const void *  solver_ptr,
DGG_data_t data,
int  row_index 
int DGG_generateTabRowCuts ( DGG_list_t list,
DGG_data_t data,
const void *  solver_ptr 
int DGG_generateFormulationCuts ( DGG_list_t list,
DGG_data_t data,
const void *  solver_ptr,
int  nrows,
CoinThreadRandom generator 
int DGG_generateFormulationCutsFromBase ( DGG_constraint_t base,
double  slack,
DGG_list_t list,
DGG_data_t data,
const void *  solver_ptr,
CoinThreadRandom generator 
int DGG_generateCutsFromBase ( DGG_constraint_t base,
DGG_list_t list,
DGG_data_t data,
const void *  solver_ptr 
int DGG_buildMir ( char *  isint,
DGG_constraint_t base,
DGG_constraint_t **  cut_out 
int DGG_build2step ( double  alpha,
char *  isint,
DGG_constraint_t base,
DGG_constraint_t **  cut_out 
int DGG_addMirToList ( DGG_constraint_t base,
char *  isint,
double *  x,
DGG_list_t list,
DGG_data_t data,
DGG_constraint_t orig_base 
int DGG_add2stepToList ( DGG_constraint_t base,
char *  isint,
double *  x,
double *  rc,
DGG_list_t list,
DGG_data_t data,
DGG_constraint_t orig_base 
double DGG_cutLHS ( DGG_constraint_t c,
double *  x 
int DGG_isCutDesirable ( DGG_constraint_t c,
DGG_data_t d 
int DGG_isConstraintViolated ( DGG_data_t d,
DGG_constraint_t c 
int DGG_isBaseTrivial ( DGG_data_t d,
DGG_constraint_t c 
int DGG_is2stepValid ( double  alpha,
double  bht 
int DGG_cutsOffPoint ( double *  x,
DGG_constraint_t cut 
void CglTwomirUnitTest ( const OsiSolverInterface siP,
const std::string  mpdDir 

A function that tests the methods in the CglTwomir class.

The only reason for it not to be a member method is that this way it doesn't have to be compiled into the library. And that's a gain, because the library should be compiled with optimization on, but this method should be compiled with debugging.