Main Page   Class Hierarchy   Compound List   File List   Contact   Download   Symbolic Constraints   Examples  

bool_inst.h

00001 #ifndef BOOL_INST_H
00002 #define BOOL_INST_H
00003 
00004 #include<scil/core/boolfunction.h>
00005 #include<scil/core/nonlinear_inst.h>
00006 #include<scil/core/qboolfunction.h>
00007 
00008 
00009 namespace SCIL{
00010   class bool_split_strategy {
00011       public:
00012          bool_split_strategy(){}
00013          virtual bool split(boolfunction* bToSplit, boolfunction*& b1, boolfunction*& b2){}
00014          virtual ~bool_split_strategy(){}
00015    };
00016 
00017    class bool_score_split : public bool_split_strategy {
00018       private:
00019          std::vector<std::vector<int> > scoreMatrix;
00020          std::map<var, int> varIndex;
00021       public:
00022          bool_score_split(std::list<boolfunction*> &bflist);
00023          bool split(boolfunction* bToSplit, boolfunction*& b1, boolfunction*& b2);
00024    };
00025 
00026    class bool_simple_split : public bool_split_strategy {
00027       public:
00028          bool_simple_split() {}
00029          bool split(boolfunction* bToSplit, boolfunction*& b1, boolfunction*& b2);
00030    };
00031 
00032 
00033   class bool_inst : public nonlinear_inst {
00034 
00035      private:
00036         bool_split_strategy* splitStrategy;
00037 
00038         void decompose(std::list<boolfunction*>& bfList, ILP_Problem& IP);
00039 
00040         void linearize(ILP_Problem& IP);
00041      public:
00042         bool_inst(std::list<boolfunction*>& bfList, ILP_Problem& IP, bool_split_strategy* spst);
00043 
00044         virtual status feasible(solution& S);
00045 
00046         ~bool_inst();
00047   };
00048 }
00049 #endif
Generated on Mon Mar 28 22:03:47 2011 for SCIL by  doxygen 1.6.3