Heuristics.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef HEURISTICS_HPP
00011 #define HEURISTICS_HPP
00012
00013 #include "CoinPackedVector.hpp"
00014 #include "OsiSolverInterface.hpp"
00015 #include "OsiXxxSolverInterface.hpp"
00016 #include "tracer.hpp"
00017 #include "misc_util.hpp"
00018
00019
00020 class Heuristics {
00021 private:
00022 const int n_;
00023 const int t_;
00024 int N_;
00025 const int cons_;
00026 const double objConst_;
00027 const double *b_;
00028 const double *c_;
00029 const double **Q_;
00030 const double **origMat_;
00031 const double *origRhs_;
00032 const char *origSense_;
00033 const double *xlb_;
00034 const double *xub_;
00035 const double *ylb_;
00036 const double *yub_;
00037 const OsiSolverInterface *si_;
00038
00039 double currObj_;
00040 double bestObj_;
00041 double *bestSol_;
00042
00043 bool *heurLbRowAdded_;
00044
00045
00046
00047 double *xxTSol_;
00048
00049
00050 double *MNSol_;
00051 double *temp_row_;
00052 OsiXxxSolverInterface MNLPSi_;
00053
00054 OsiXxxSolverInterface heurLPimproveSi_;
00055 Tracer *tracer_;
00056
00057 private:
00058
00059 int update(double*, double);
00060
00061
00062
00063
00064 int heurLP_improveSolution(double*);
00065
00066
00067 int processSol(double*, bool, double*, double*);
00068
00069 double* xxTHeur();
00070 double* MNHeur();
00071
00072 public:
00073
00074 Heuristics(const int,const int,const int,const double,const double*,const double*,const double**,const double**,const double*,const char*,const double*,const double*,const double*,const double*,const OsiSolverInterface *si,Tracer *tracer);
00075
00076
00077 ~Heuristics();
00078
00079
00080 double bestObj() {return bestObj_;}
00081 double* bestSol() {return bestSol_;}
00082 double currObj() {return currObj_;}
00083
00084
00085 int run();
00086 };
00087
00088
00089 #endif
00090