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.

Classes

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

Defines

#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_AUTO_CHECK_CUT_OFF_OPTIMAL   1
#define DGG_DEFAULT_METHOD   2
#define DGG_DEFAULT_TMIN   1
#define DGG_DEFAULT_TMAX   1
#define DGG_DEFAULT_TAUMIN   2
#define DGG_DEFAULT_TAUMAX   6
#define DGG_DEFAULT_MAX_CUTS   500
#define DGG_DEFAULT_IMPROVEMENT_THRESH   0.001
#define DGG_DEFAULT_NBELOW_THRESH   INT_MAX
#define DGG_DEFAULT_NROOT_ROUNDS   2
#define DGG_DEFAULT_NEGATIVE_SCALED_TWOSTEPS   0
#define DGG_DEFAULT_ALPHA_RULE   0
#define DGG_DEFAULT_CUT_INC   250
#define DGG_DEFAULT_CUT_FORM   0
#define DGG_DEFAULT_NICEFY   0
#define DGG_DEFAULT_ONLY_DELAYED   0
#define DGG_DEFAULT_DELAYED_FREQ   9999999
#define DGG_DEFAULT_LPROWS_FREQ   9999999
#define DGG_DEFAULT_WHICH_FORMULATION_CUTS   2
#define DGG_OSI   0
#define DGG_CPX   1
#define DGG_QSO   2
#define DGG_SOLVER   DGG_OSI
#define DGG_DEBUG_SOLVER   0
#define DGG_SOLVER_SCREEN_FLAG   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_RANDOM_COEFF   2
#define DGG_ALPHA_ALL   3
#define DGG_ALPHA_MAX_STEEP   5
#define DGG_MIN_STEEPNESS   1.0e-4
#define DGG_MAX_L2NORM   1.0e7
#define DGG_NORM_CRITERIA   1
#define UB_MAX   DBL_MAX
#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 CBC_CHECK_CUT
#define DGG_MIN_TABLEAU_COEFFICIENT   1.0e-12
#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) )

Functions

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.

Define Documentation

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

Definition at line 71 of file CglTwomir.hpp.

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

Definition at line 72 of file CglTwomir.hpp.

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

Definition at line 73 of file CglTwomir.hpp.

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

Definition at line 74 of file CglTwomir.hpp.

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

Definition at line 75 of file CglTwomir.hpp.

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

Definition at line 76 of file CglTwomir.hpp.

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

Definition at line 77 of file CglTwomir.hpp.

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

Definition at line 78 of file CglTwomir.hpp.

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

Definition at line 80 of file CglTwomir.hpp.

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

Definition at line 81 of file CglTwomir.hpp.

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

Definition at line 82 of file CglTwomir.hpp.

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

Definition at line 83 of file CglTwomir.hpp.

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

Definition at line 84 of file CglTwomir.hpp.

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

Definition at line 85 of file CglTwomir.hpp.

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

Definition at line 86 of file CglTwomir.hpp.

#define DGG_setIsConstraintBoundedBelow ( data,
idx   )     ((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.

#define DGG_AUTO_CHECK_CUT_OFF_OPTIMAL   1

Definition at line 239 of file CglTwomir.hpp.

#define DGG_DEFAULT_METHOD   2

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.

#define DGG_DEFAULT_TAUMIN   2

Definition at line 246 of file CglTwomir.hpp.

#define DGG_DEFAULT_TAUMAX   6

Definition at line 247 of file CglTwomir.hpp.

#define DGG_DEFAULT_MAX_CUTS   500

Definition at line 248 of file CglTwomir.hpp.

#define DGG_DEFAULT_IMPROVEMENT_THRESH   0.001

Definition at line 249 of file CglTwomir.hpp.

#define DGG_DEFAULT_NBELOW_THRESH   INT_MAX

Definition at line 250 of file CglTwomir.hpp.

#define DGG_DEFAULT_NROOT_ROUNDS   2

Definition at line 251 of file CglTwomir.hpp.

#define DGG_DEFAULT_NEGATIVE_SCALED_TWOSTEPS   0

Definition at line 252 of file CglTwomir.hpp.

#define DGG_DEFAULT_ALPHA_RULE   0

Definition at line 253 of file CglTwomir.hpp.

#define DGG_DEFAULT_CUT_INC   250

Definition at line 254 of file CglTwomir.hpp.

#define DGG_DEFAULT_CUT_FORM   0

Definition at line 255 of file CglTwomir.hpp.

#define DGG_DEFAULT_NICEFY   0

Definition at line 256 of file CglTwomir.hpp.

#define DGG_DEFAULT_ONLY_DELAYED   0

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.

#define DGG_DEFAULT_WHICH_FORMULATION_CUTS   2

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.

#define DGG_SOLVER   DGG_OSI

Definition at line 269 of file CglTwomir.hpp.

#define DGG_DEBUG_SOLVER   0

Definition at line 272 of file CglTwomir.hpp.

#define DGG_SOLVER_SCREEN_FLAG   0

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.

#define DGG_ALPHA_RANDOM_COEFF   2

Definition at line 286 of file CglTwomir.hpp.

#define DGG_ALPHA_ALL   3

Definition at line 287 of file CglTwomir.hpp.

#define DGG_ALPHA_MAX_STEEP   5

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.

#define DGG_NORM_CRITERIA   1

Definition at line 297 of file CglTwomir.hpp.

#define UB_MAX   DBL_MAX

Definition at line 300 of file CglTwomir.hpp.

#define DGG_GOMORY_THRESH   0.005

Definition at line 305 of file CglTwomir.hpp.

#define DGG_RHS_THRESH   0.005

Definition at line 307 of file CglTwomir.hpp.

#define DGG_BOUND_THRESH   1.0e-6

Definition at line 313 of file CglTwomir.hpp.

#define DGG_EQUALITY_THRESH   1.0e-5

Definition at line 317 of file CglTwomir.hpp.

#define DGG_SHIFT_THRESH   1.0e-6

Definition at line 321 of file CglTwomir.hpp.

#define DGG_INTEGRALITY_THRESH   1.0e-10

Definition at line 326 of file CglTwomir.hpp.

#define CBC_CHECK_CUT

Definition at line 330 of file CglTwomir.hpp.

#define DGG_MIN_TABLEAU_COEFFICIENT   1.0e-12

Definition at line 334 of file CglTwomir.hpp.

#define DGG_MIN_RHO   1.0e-7

Definition at line 339 of file CglTwomir.hpp.

#define DGG_MIN_ALPHA   1.0e-7

Definition at line 340 of file CglTwomir.hpp.

#define DGG_NULL_SLACK   1.0e-5

Definition at line 343 of file CglTwomir.hpp.

#define DGG_NICEFY_MIN_ABSVALUE   1.0e-13

Definition at line 346 of file CglTwomir.hpp.

#define DGG_NICEFY_MIN_FIX   1.0e-7

Definition at line 347 of file CglTwomir.hpp.

#define DGG_NICEFY_MAX_PADDING   1.0e-6

Definition at line 348 of file CglTwomir.hpp.

#define DGG_NICEFY_MAX_RATIO   1.0e9

Definition at line 349 of file CglTwomir.hpp.

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

Definition at line 392 of file CglTwomir.hpp.

#define DGG_THROW ( A,
 )     return(A)

Definition at line 394 of file CglTwomir.hpp.

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

Definition at line 396 of file CglTwomir.hpp.

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

Definition at line 397 of file CglTwomir.hpp.

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

Definition at line 399 of file CglTwomir.hpp.

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

Definition at line 400 of file CglTwomir.hpp.

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

Definition at line 401 of file CglTwomir.hpp.

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

Definition at line 407 of file CglTwomir.hpp.

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

Definition at line 408 of file CglTwomir.hpp.

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

Definition at line 409 of file CglTwomir.hpp.

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

Definition at line 410 of file CglTwomir.hpp.

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

Definition at line 411 of file CglTwomir.hpp.

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

Definition at line 412 of file CglTwomir.hpp.

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

Definition at line 413 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.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 27 Jan 2014 for Cgl by  doxygen 1.6.1