8 #include "CoinFactorization.hpp"
68 #define DGG_isBasic(data,idx) ((data->info[idx])&1)
69 #define DGG_isInteger(data,idx) ((data->info[idx] >> 1)&1)
70 #define DGG_isStructural(data,idx) ((data->info[idx] >> 2)&1)
71 #define DGG_isEqualityConstraint(data,idx) ((data->info[idx] >> 3)&1)
72 #define DGG_isNonBasicAtUB(data,idx) ((data->info[idx] >> 4)&1)
73 #define DGG_isNonBasicAtLB(data,idx) ((data->info[idx] >> 5)&1)
74 #define DGG_isConstraintBoundedAbove(data,idx) ((data->info[idx] >> 6)&1)
75 #define DGG_isConstraintBoundedBelow(data,idx) ((data->info[idx] >> 7)&1)
77 #define DGG_setIsBasic(data,idx) ((data->info[idx]) |= 1)
78 #define DGG_setIsInteger(data,idx) ((data->info[idx]) |= (1<<1))
79 #define DGG_setIsStructural(data,idx) ((data->info[idx]) |= (1<<2))
80 #define DGG_setEqualityConstraint(data,idx) ((data->info[idx]) |= (1<<3))
81 #define DGG_setIsNonBasicAtUB(data,idx) ((data->info[idx]) |= (1<<4))
82 #define DGG_setIsNonBasicAtLB(data,idx) ((data->info[idx]) |= (1<<5))
83 #define DGG_setIsConstraintBoundedAbove(data,idx) ((data->info[idx]) |= (1<<6))
84 #define DGG_setIsConstraintBoundedBelow(data,idx) ((data->info[idx]) |= (1<<7))
86 class CoinWarmStartBasis;
91 const std::string mpdDir );
104 virtual void generateCuts(
const OsiSolverInterface & si, OsiCuts & cs,
212 #define DGG_DEBUG_DGG 1
213 #define DGG_TRACE_ERRORS 0
214 #define DGG_DISPLAY 0
215 #define DGG_AUTO_CHECK_CUT_OFF_OPTIMAL 1
219 #define DGG_DEFAULT_METHOD 2
220 #define DGG_DEFAULT_TMIN 1
221 #define DGG_DEFAULT_TMAX 1
222 #define DGG_DEFAULT_TAUMIN 2
223 #define DGG_DEFAULT_TAUMAX 6
224 #define DGG_DEFAULT_MAX_CUTS 500
225 #define DGG_DEFAULT_IMPROVEMENT_THRESH 0.001
226 #define DGG_DEFAULT_NBELOW_THRESH INT_MAX
227 #define DGG_DEFAULT_NROOT_ROUNDS 2
228 #define DGG_DEFAULT_NEGATIVE_SCALED_TWOSTEPS 0
229 #define DGG_DEFAULT_ALPHA_RULE 0
230 #define DGG_DEFAULT_CUT_INC 250
231 #define DGG_DEFAULT_CUT_FORM 0
232 #define DGG_DEFAULT_NICEFY 0
233 #define DGG_DEFAULT_ONLY_DELAYED 0
234 #define DGG_DEFAULT_DELAYED_FREQ 9999999
235 #define DGG_DEFAULT_LPROWS_FREQ 9999999
236 #define DGG_DEFAULT_WHICH_FORMULATION_CUTS 2
245 #define DGG_SOLVER DGG_OSI
248 #define DGG_DEBUG_SOLVER 0
251 #define DGG_SOLVER_SCREEN_FLAG 0
256 #define DGG_TMIR_CUT 1
257 #define DGG_2STEP_CUT 2
260 #define DGG_ALPHA_MIN_SUM 0
261 #define DGG_ALPHA_RANDOM_01 1
262 #define DGG_ALPHA_RANDOM_COEFF 2
263 #define DGG_ALPHA_ALL 3
264 #define DGG_ALPHA_MAX_STEEP 5
269 #define DGG_MIN_STEEPNESS 1.0e-4
270 #define DGG_MAX_L2NORM 1.0e7
273 #define DGG_NORM_CRITERIA 1
276 #define UB_MAX DBL_MAX
277 #define LB_MIN DBL_MIN
282 #define DGG_GOMORY_THRESH 0.005
284 #define DGG_RHS_THRESH 0.005
290 #define DGG_BOUND_THRESH 1.0e-6
294 #define DGG_EQUALITY_THRESH 1.0e-5
298 #define DGG_SHIFT_THRESH 1.0e-6
303 #define DGG_INTEGRALITY_THRESH 1.0e-10
307 #define CBC_CHECK_CUT
308 #ifndef CBC_CHECK_CUT
309 #define DGG_MIN_TABLEAU_COEFFICIENT 1.0e-8
311 #define DGG_MIN_TABLEAU_COEFFICIENT 1.0e-12
316 #define DGG_MIN_RHO 1.0e-7
317 #define DGG_MIN_ALPHA 1.0e-7
320 #define DGG_NULL_SLACK 1.0e-5
323 #define DGG_NICEFY_MIN_ABSVALUE 1.0e-13
324 #define DGG_NICEFY_MIN_FIX 1.0e-7
325 #define DGG_NICEFY_MAX_PADDING 1.0e-6
326 #define DGG_NICEFY_MAX_RATIO 1.0e9
330 #if DGG_TRACE_ERRORS > 0
332 #define __DGG_PRINT_LOC__(F) fprintf(((F==0)?stdout:F), " in %s (%s:%d)\n", __func__, __FILE__, __LINE__)
334 #define DGG_THROW(A,REST...) {\
335 fprintf(stdout, ##REST); \
336 __DGG_PRINT_LOC__(stdout); \
339 #define DGG_IF_EXIT(A,B,REST...) {\
341 fprintf(stdout, ##REST); \
342 __DGG_PRINT_LOC__(stdout); \
345 #define DGG_CHECKRVAL(A,B) {\
347 __DGG_PRINT_LOC__(stdout); \
350 #define DGG_CHECKRVAL1(A,B) {\
352 __DGG_PRINT_LOC__(stdout); \
353 rval = B; goto CLEANUP; } }
355 #define DGG_WARNING(A, REST...) {\
357 fprintf(stdout, ##REST); \
358 __DGG_PRINT_LOC__(stdout); \
361 #define DGG_TEST(A,B,REST...) {\
362 if(A) DGG_THROW(B,##REST) }
364 #define DGG_TEST2(A,B,C,REST) {DGG_TEST(A,B,C,REST) }
365 #define DGG_TEST3(A,B,C,D,REST) {DGG_TEST(A,B,C,D,REST) }
369 #define DGG_IF_EXIT(A,B,REST) {if(A) {fprintf(stdout, REST);exit(B);}}
371 #define DGG_THROW(A,B) return(A)
373 #define DGG_CHECKRVAL(A,B) { if(A) return(B); }
374 #define DGG_CHECKRVAL1(A,B){ if(A) { rval = B; goto CLEANUP; } }
376 #define DGG_TEST(A,B,REST) { if(A) return(B);}
377 #define DGG_TEST2(A,B,REST,C) { DGG_TEST(A,B,REST) }
378 #define DGG_TEST3(A,B,REST,C,D) { DGG_TEST(A,B,REST) }
384 #define DGG_MIN(a,b) ( (a<b)?a:b )
385 #define DGG_MAX(a,b) ( (a>b)?a:b )
386 #define KREM(vht,alpha,tau) (DGG_MIN( ceil(vht / alpha), tau ) - 1)
387 #define LMIN(vht, d, bht) (DGG_MIN( floor(d*bht/bht), d))
388 #define ABOV(v) (v - floor(v))
389 #define QINT(vht,bht,tau) ( (int)floor( (vht*(tau-1))/bht ) )
390 #define V2I(bht,tau,i) ( ((i+1)*bht / tau) )
392 int DGG_is_even(
double vht,
double bht,
int tau,
int q);
454 const void *solver_ptr,
459 const void *solver_ptr,
462 const int * colIsBasic,
463 const int * rowIsBasic,
464 CoinFactorization & factorization,
471 const void *solver_ptr );
475 const void *solver_ptr,
477 CoinThreadRandom & generator);
484 const void *solver_ptr,
485 CoinThreadRandom & generator);
490 const void *solver_ptr );
537 const std::string mpdDir);