00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef LINQUAD_CUTS_HPP
00011 #define LINQUAD_CUTS_HPP
00012
00013 #include <CglCutGenerator.hpp>
00014 #include <tracer.hpp>
00015
00016 #define indexQ(i,j,n) ((n) + (i) * (2*(n)-1-(i)) / 2 + (j))
00017
00018 #define NEWTON_MAX_ITER 10
00019 #define NEWTON_POW_TOLERANCE 1e-12
00020
00021
00022 void linQuadCutGen(const double *sol, OsiCuts &cs);
00023
00024 double f_ (double x);
00025 double fp_ (double x);
00026 double fpp_(double x);
00027 double powNewton(double xc, double yc, double (*f)(double),double (*fp)(double),double (*fpp)(double));
00028 void linQuadCutGen(const double *sol, int n, OsiCuts &cs, Tracer *tracer);
00029 void linQuadCutGenOriginalBounds(const double *xlb, const double *xub, int n, OsiCuts &cs, Tracer *tracer);
00030
00031 void generateTangentDiagonalEntryCut(int n,int i,OsiCuts &cs,double xc,double yc,const double* sol, bool ifViolated);
00032
00033
00034
00035 #endif
00036