Classes | Defines | Functions

/build/buildd/coinor-cgl-0.55.0/Cgl/src/CglTwomir/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 LB_MIN   DBL_MIN
#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 68 of file CglTwomir.hpp.

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

Definition at line 69 of file CglTwomir.hpp.

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

Definition at line 70 of file CglTwomir.hpp.

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

Definition at line 71 of file CglTwomir.hpp.

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

Definition at line 72 of file CglTwomir.hpp.

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

Definition at line 73 of file CglTwomir.hpp.

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

Definition at line 74 of file CglTwomir.hpp.

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

Definition at line 75 of file CglTwomir.hpp.

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

Definition at line 77 of file CglTwomir.hpp.

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

Definition at line 78 of file CglTwomir.hpp.

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

Definition at line 79 of file CglTwomir.hpp.

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

Definition at line 80 of file CglTwomir.hpp.

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

Definition at line 81 of file CglTwomir.hpp.

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

Definition at line 82 of file CglTwomir.hpp.

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

Definition at line 83 of file CglTwomir.hpp.

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

Definition at line 84 of file CglTwomir.hpp.

#define DGG_DEBUG_DGG   1

Definition at line 212 of file CglTwomir.hpp.

#define DGG_TRACE_ERRORS   0

Definition at line 213 of file CglTwomir.hpp.

#define DGG_DISPLAY   0

Definition at line 214 of file CglTwomir.hpp.

#define DGG_AUTO_CHECK_CUT_OFF_OPTIMAL   1

Definition at line 215 of file CglTwomir.hpp.

#define DGG_DEFAULT_METHOD   2

Definition at line 219 of file CglTwomir.hpp.

#define DGG_DEFAULT_TMIN   1

Definition at line 220 of file CglTwomir.hpp.

#define DGG_DEFAULT_TMAX   1

Definition at line 221 of file CglTwomir.hpp.

#define DGG_DEFAULT_TAUMIN   2

Definition at line 222 of file CglTwomir.hpp.

#define DGG_DEFAULT_TAUMAX   6

Definition at line 223 of file CglTwomir.hpp.

#define DGG_DEFAULT_MAX_CUTS   500

Definition at line 224 of file CglTwomir.hpp.

#define DGG_DEFAULT_IMPROVEMENT_THRESH   0.001

Definition at line 225 of file CglTwomir.hpp.

#define DGG_DEFAULT_NBELOW_THRESH   INT_MAX

Definition at line 226 of file CglTwomir.hpp.

#define DGG_DEFAULT_NROOT_ROUNDS   2

Definition at line 227 of file CglTwomir.hpp.

#define DGG_DEFAULT_NEGATIVE_SCALED_TWOSTEPS   0

Definition at line 228 of file CglTwomir.hpp.

#define DGG_DEFAULT_ALPHA_RULE   0

Definition at line 229 of file CglTwomir.hpp.

#define DGG_DEFAULT_CUT_INC   250

Definition at line 230 of file CglTwomir.hpp.

#define DGG_DEFAULT_CUT_FORM   0

Definition at line 231 of file CglTwomir.hpp.

#define DGG_DEFAULT_NICEFY   0

Definition at line 232 of file CglTwomir.hpp.

#define DGG_DEFAULT_ONLY_DELAYED   0

Definition at line 233 of file CglTwomir.hpp.

#define DGG_DEFAULT_DELAYED_FREQ   9999999

Definition at line 234 of file CglTwomir.hpp.

#define DGG_DEFAULT_LPROWS_FREQ   9999999

Definition at line 235 of file CglTwomir.hpp.

#define DGG_DEFAULT_WHICH_FORMULATION_CUTS   2

Definition at line 236 of file CglTwomir.hpp.

#define DGG_OSI   0

Definition at line 240 of file CglTwomir.hpp.

#define DGG_CPX   1

Definition at line 241 of file CglTwomir.hpp.

#define DGG_QSO   2

Definition at line 242 of file CglTwomir.hpp.

#define DGG_SOLVER   DGG_OSI

Definition at line 245 of file CglTwomir.hpp.

#define DGG_DEBUG_SOLVER   0

Definition at line 248 of file CglTwomir.hpp.

#define DGG_SOLVER_SCREEN_FLAG   0

Definition at line 251 of file CglTwomir.hpp.

#define DGG_TMIR_CUT   1

Definition at line 256 of file CglTwomir.hpp.

#define DGG_2STEP_CUT   2

Definition at line 257 of file CglTwomir.hpp.

#define DGG_ALPHA_MIN_SUM   0

Definition at line 260 of file CglTwomir.hpp.

#define DGG_ALPHA_RANDOM_01   1

Definition at line 261 of file CglTwomir.hpp.

#define DGG_ALPHA_RANDOM_COEFF   2

Definition at line 262 of file CglTwomir.hpp.

#define DGG_ALPHA_ALL   3

Definition at line 263 of file CglTwomir.hpp.

#define DGG_ALPHA_MAX_STEEP   5

Definition at line 264 of file CglTwomir.hpp.

#define DGG_MIN_STEEPNESS   1.0e-4

Definition at line 269 of file CglTwomir.hpp.

#define DGG_MAX_L2NORM   1.0e7

Definition at line 270 of file CglTwomir.hpp.

#define DGG_NORM_CRITERIA   1

Definition at line 273 of file CglTwomir.hpp.

#define UB_MAX   DBL_MAX

Definition at line 276 of file CglTwomir.hpp.

#define LB_MIN   DBL_MIN

Definition at line 277 of file CglTwomir.hpp.

#define DGG_GOMORY_THRESH   0.005

Definition at line 282 of file CglTwomir.hpp.

#define DGG_RHS_THRESH   0.005

Definition at line 284 of file CglTwomir.hpp.

#define DGG_BOUND_THRESH   1.0e-6

Definition at line 290 of file CglTwomir.hpp.

#define DGG_EQUALITY_THRESH   1.0e-5

Definition at line 294 of file CglTwomir.hpp.

#define DGG_SHIFT_THRESH   1.0e-6

Definition at line 298 of file CglTwomir.hpp.

#define DGG_INTEGRALITY_THRESH   1.0e-10

Definition at line 303 of file CglTwomir.hpp.

#define CBC_CHECK_CUT

Definition at line 307 of file CglTwomir.hpp.

#define DGG_MIN_TABLEAU_COEFFICIENT   1.0e-12

Definition at line 311 of file CglTwomir.hpp.

#define DGG_MIN_RHO   1.0e-7

Definition at line 316 of file CglTwomir.hpp.

#define DGG_MIN_ALPHA   1.0e-7

Definition at line 317 of file CglTwomir.hpp.

#define DGG_NULL_SLACK   1.0e-5

Definition at line 320 of file CglTwomir.hpp.

#define DGG_NICEFY_MIN_ABSVALUE   1.0e-13

Definition at line 323 of file CglTwomir.hpp.

#define DGG_NICEFY_MIN_FIX   1.0e-7

Definition at line 324 of file CglTwomir.hpp.

#define DGG_NICEFY_MAX_PADDING   1.0e-6

Definition at line 325 of file CglTwomir.hpp.

#define DGG_NICEFY_MAX_RATIO   1.0e9

Definition at line 326 of file CglTwomir.hpp.

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

Definition at line 369 of file CglTwomir.hpp.

#define DGG_THROW (   A,
  B 
)    return(A)

Definition at line 371 of file CglTwomir.hpp.

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

Definition at line 373 of file CglTwomir.hpp.

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

Definition at line 374 of file CglTwomir.hpp.

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

Definition at line 376 of file CglTwomir.hpp.

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

Definition at line 377 of file CglTwomir.hpp.

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

Definition at line 378 of file CglTwomir.hpp.

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

Definition at line 384 of file CglTwomir.hpp.

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

Definition at line 385 of file CglTwomir.hpp.

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

Definition at line 386 of file CglTwomir.hpp.

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

Definition at line 387 of file CglTwomir.hpp.

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

Definition at line 388 of file CglTwomir.hpp.

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

Definition at line 389 of file CglTwomir.hpp.

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

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