00001 #ifndef SCIL_QUADREF_H 00002 #define SCIL_QUADREF_H 00003 00004 #include<scil/scil.h> 00005 #include<boost/unordered_map.hpp> 00006 00007 namespace SCIL { 00008 00021 class QuadRef : public sym_constraint { 00022 private: 00024 std::list<cons_obj*> lc; 00026 std::list<cons_obj*> cons_list; 00028 ILP_Problem& IP; 00030 boost::unordered_map<std::string, var> hashmap; 00031 00032 public: 00034 QuadRef(ILP_Problem& IP_) :IP(IP_) { } 00035 00036 ~QuadRef() { 00037 std::list<cons_obj*>::iterator c; 00038 foreach(c, lc ) 00039 delete *c; 00040 } 00041 00043 status standard_separation(subproblem& S); 00044 00046 virtual void init(subproblem& S) { 00047 return; 00048 } 00049 00051 status feasible(solution& S) { 00052 return feasible_solution; 00053 } 00054 00056 void addCons(cons_obj * c); 00057 00059 void hashPair(var& x, var& y, var& l); 00060 00062 void reformulate_forced_constraints(); 00063 00065 void check_and_reformulate(); 00066 00068 cons_obj* reformulate_SQK2(cons_obj* c, bool force); 00069 00071 void reformulate_SQK3(cons_obj* c, bool force); 00072 }; 00073 }; 00074 00075 #endif