/home/coin/svn-release/OptimizationSuite-1.1.0/Cgl/src/CglTwomir/CglTwomir.hpp File Reference

#include <string>
#include "CglCutGenerator.hpp"
#include "CoinFactorization.hpp"
Include dependency graph for CglTwomir.hpp:
This graph shows which files directly or indirectly include this file:

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 DGG_MIN_TABLEAU_COEFFICIENT   1.0e-8
#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)
int DGG_generateFormulationCutsFromBase (DGG_constraint_t *base, double slack, DGG_list_t *list, DGG_data_t *data, const void *solver_ptr)
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 187 of file CglTwomir.hpp.

#define DGG_TRACE_ERRORS   0

Definition at line 188 of file CglTwomir.hpp.

#define DGG_DISPLAY   0

Definition at line 189 of file CglTwomir.hpp.

#define DGG_AUTO_CHECK_CUT_OFF_OPTIMAL   1

Definition at line 190 of file CglTwomir.hpp.

#define DGG_DEFAULT_METHOD   2

Definition at line 194 of file CglTwomir.hpp.

#define DGG_DEFAULT_TMIN   1

Definition at line 195 of file CglTwomir.hpp.

#define DGG_DEFAULT_TMAX   1

Definition at line 196 of file CglTwomir.hpp.

#define DGG_DEFAULT_TAUMIN   2

Definition at line 197 of file CglTwomir.hpp.

#define DGG_DEFAULT_TAUMAX   6

Definition at line 198 of file CglTwomir.hpp.

#define DGG_DEFAULT_MAX_CUTS   500

Definition at line 199 of file CglTwomir.hpp.

#define DGG_DEFAULT_IMPROVEMENT_THRESH   0.001

Definition at line 200 of file CglTwomir.hpp.

#define DGG_DEFAULT_NBELOW_THRESH   INT_MAX

Definition at line 201 of file CglTwomir.hpp.

#define DGG_DEFAULT_NROOT_ROUNDS   2

Definition at line 202 of file CglTwomir.hpp.

#define DGG_DEFAULT_NEGATIVE_SCALED_TWOSTEPS   0

Definition at line 203 of file CglTwomir.hpp.

#define DGG_DEFAULT_ALPHA_RULE   0

Definition at line 204 of file CglTwomir.hpp.

#define DGG_DEFAULT_CUT_INC   250

Definition at line 205 of file CglTwomir.hpp.

#define DGG_DEFAULT_CUT_FORM   0

Definition at line 206 of file CglTwomir.hpp.

#define DGG_DEFAULT_NICEFY   0

Definition at line 207 of file CglTwomir.hpp.

#define DGG_DEFAULT_ONLY_DELAYED   0

Definition at line 208 of file CglTwomir.hpp.

#define DGG_DEFAULT_DELAYED_FREQ   9999999

Definition at line 209 of file CglTwomir.hpp.

#define DGG_DEFAULT_LPROWS_FREQ   9999999

Definition at line 210 of file CglTwomir.hpp.

#define DGG_DEFAULT_WHICH_FORMULATION_CUTS   2

Definition at line 211 of file CglTwomir.hpp.

#define DGG_OSI   0

Definition at line 215 of file CglTwomir.hpp.

#define DGG_CPX   1

Definition at line 216 of file CglTwomir.hpp.

#define DGG_QSO   2

Definition at line 217 of file CglTwomir.hpp.

#define DGG_SOLVER   DGG_OSI

Definition at line 220 of file CglTwomir.hpp.

#define DGG_DEBUG_SOLVER   0

Definition at line 223 of file CglTwomir.hpp.

#define DGG_SOLVER_SCREEN_FLAG   0

Definition at line 226 of file CglTwomir.hpp.

#define DGG_TMIR_CUT   1

Definition at line 231 of file CglTwomir.hpp.

#define DGG_2STEP_CUT   2

Definition at line 232 of file CglTwomir.hpp.

#define DGG_ALPHA_MIN_SUM   0

Definition at line 235 of file CglTwomir.hpp.

#define DGG_ALPHA_RANDOM_01   1

Definition at line 236 of file CglTwomir.hpp.

#define DGG_ALPHA_RANDOM_COEFF   2

Definition at line 237 of file CglTwomir.hpp.

#define DGG_ALPHA_ALL   3

Definition at line 238 of file CglTwomir.hpp.

#define DGG_ALPHA_MAX_STEEP   5

Definition at line 239 of file CglTwomir.hpp.

#define DGG_MIN_STEEPNESS   1.0e-4

Definition at line 244 of file CglTwomir.hpp.

#define DGG_MAX_L2NORM   1.0e7

Definition at line 245 of file CglTwomir.hpp.

#define DGG_NORM_CRITERIA   1

Definition at line 248 of file CglTwomir.hpp.

#define UB_MAX   DBL_MAX

Definition at line 251 of file CglTwomir.hpp.

#define LB_MIN   DBL_MIN

Definition at line 252 of file CglTwomir.hpp.

#define DGG_GOMORY_THRESH   0.005

Definition at line 257 of file CglTwomir.hpp.

#define DGG_RHS_THRESH   0.005

Definition at line 259 of file CglTwomir.hpp.

#define DGG_BOUND_THRESH   1.0e-6

Definition at line 265 of file CglTwomir.hpp.

#define DGG_EQUALITY_THRESH   1.0e-5

Definition at line 269 of file CglTwomir.hpp.

#define DGG_SHIFT_THRESH   1.0e-6

Definition at line 273 of file CglTwomir.hpp.

#define DGG_INTEGRALITY_THRESH   1.0e-10

Definition at line 278 of file CglTwomir.hpp.

#define DGG_MIN_TABLEAU_COEFFICIENT   1.0e-8

Definition at line 282 of file CglTwomir.hpp.

#define DGG_MIN_RHO   1.0e-7

Definition at line 286 of file CglTwomir.hpp.

#define DGG_MIN_ALPHA   1.0e-7

Definition at line 287 of file CglTwomir.hpp.

#define DGG_NULL_SLACK   1.0e-5

Definition at line 290 of file CglTwomir.hpp.

#define DGG_NICEFY_MIN_ABSVALUE   1.0e-13

Definition at line 293 of file CglTwomir.hpp.

#define DGG_NICEFY_MIN_FIX   1.0e-7

Definition at line 294 of file CglTwomir.hpp.

#define DGG_NICEFY_MAX_PADDING   1.0e-6

Definition at line 295 of file CglTwomir.hpp.

#define DGG_NICEFY_MAX_RATIO   1.0e9

Definition at line 296 of file CglTwomir.hpp.

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

Definition at line 339 of file CglTwomir.hpp.

#define DGG_THROW ( A,
 )     return(A)

Definition at line 341 of file CglTwomir.hpp.

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

Definition at line 343 of file CglTwomir.hpp.

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

Definition at line 344 of file CglTwomir.hpp.

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

Definition at line 346 of file CglTwomir.hpp.

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

Definition at line 347 of file CglTwomir.hpp.

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

Definition at line 348 of file CglTwomir.hpp.

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

Definition at line 354 of file CglTwomir.hpp.

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

Definition at line 355 of file CglTwomir.hpp.

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

Definition at line 356 of file CglTwomir.hpp.

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

Definition at line 357 of file CglTwomir.hpp.

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

Definition at line 358 of file CglTwomir.hpp.

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

Definition at line 359 of file CglTwomir.hpp.

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

Definition at line 360 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 
)
int DGG_generateFormulationCutsFromBase ( DGG_constraint_t base,
double  slack,
DGG_list_t list,
DGG_data_t data,
const void *  solver_ptr 
)
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.


Generated on 15 Mar 2015 for Coin-All by  doxygen 1.6.1