00001 #ifndef SCIL_VAR_OBJ_H 00002 #define SCIL_VAR_OBJ_H 00003 00004 #undef set 00005 #include <scil/global.h> 00006 #include <map> 00007 00008 namespace SCIL { 00009 00010 class cons_obj; 00011 class column; 00012 class ABA_Variable; 00013 class ILP_Problem; 00014 class subproblem; 00015 00017 class var_obj 00018 { 00019 00020 friend class ILP_Problem; 00021 friend class subproblem; 00022 00023 private: 00024 00025 std::map<cons_obj*, double> IC; 00026 ABA_Variable* Ref_AVar; 00027 00028 public: 00030 int vi; 00032 double obj_; 00034 double uBound_; 00036 double lBound_; 00038 Vartype vt; 00039 00042 var_obj(double obj, double lBound, double uBound, Vartype vt_) { 00043 obj_=obj; lBound_=lBound; uBound_=uBound; vt=vt_; 00044 } 00045 00047 virtual ~var_obj() {}; 00048 00050 var_item index() { return(vi); }; 00051 00052 void init(subproblem& S, int nr, Activation a); 00053 00054 void init(ILP_Problem& IP, int nr, Activation a); 00055 00057 virtual double upper_bound() { 00058 return uBound_; 00059 }; 00060 00062 virtual double lower_bound() { 00063 return lBound_; 00064 }; 00065 00067 virtual double coeff(cons_obj*) { 00068 return 0; 00069 } 00070 00072 virtual double obj() { 00073 return obj_; 00074 }; 00075 00077 virtual Vartype type() { 00078 return vt; 00079 }; 00080 00081 void set(cons_obj* i, double d); 00082 00083 ABA_Variable* AVar() { 00084 return Ref_AVar; 00085 }; 00086 00087 virtual double coeff(ABA_CONSTRAINT* i); 00088 00090 virtual void non_zero_entries(column& col) { 00091 }; 00092 00094 virtual int genColumn(Active_Inequalities* ai, Column& col); 00095 00096 }; 00097 00098 } 00099 00100 #endif