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

monomial_inst.h

00001 #ifndef MONOMIAL_INST_H
00002 #define MONOMIAL_INST_H
00003 
00004 #include<scil/core/monomial.h>
00005 #include<scil/core/nonlinear_inst.h>
00006 #include<scil/core/qmonomial.h>
00007 
00008 
00009 namespace SCIL{
00010   class mon_split_strategy {
00011       protected:
00012          std::list<monomial*> toDelete;
00013       public:
00014          mon_split_strategy(){}
00015          mon_split_strategy(std::list<monomial>& mons){} 
00016          virtual ~mon_split_strategy() {
00017             for(std::list<monomial*>::iterator it=toDelete.begin(); it != toDelete.end(); it++)
00018                delete *it;
00019             }
00020          virtual bool split(monomial& mToSplit, monomial*& m1, monomial*& m2){}
00021    };
00022 
00023 
00024    class mon_simple_split : public mon_split_strategy {
00025       public:
00026          mon_simple_split() {}
00027          bool split(monomial& mToSplit, monomial*& m1, monomial*& m2);
00028    };
00029 
00030    class mon_score_split : public mon_split_strategy {
00031       private:
00032          std::map<var,int> varIndex;
00033          std::vector<std::vector<int> > scoreMatrix;
00034          
00035 
00036       public:
00037          mon_score_split(std::list<monomial>& mons); 
00038          bool split(monomial& mToSplit, monomial*& m1, monomial*& m2);
00039    };
00040 
00041 
00042  
00043   class monomial_inst : public nonlinear_inst {
00044      private:
00045         mon_split_strategy* splitStrategy;
00046         void decompose(std::list<monomial>& mons, ILP_Problem& IP);
00047      public:
00048         monomial_inst(std::list<monomial>& m, ILP_Problem& IP, mon_split_strategy* spst);
00049         ~monomial_inst();
00050         virtual status feasible(solution& S);
00051 
00052 
00053 
00054   };
00055 }
00056 #endif
Generated on Mon Mar 28 22:03:49 2011 for SCIL by  doxygen 1.6.3