00001 #ifndef SCIL_CONS_OBJ_H
00002 #define SCIL_CONS_OBJ_H
00003
00004 #include <LEDA/map.h>
00005 #undef set
00006 #include <scil/global.h>
00007 #include <scil/subproblem.h>
00008
00009 namespace SCIL {
00010
00011 class var_obj;
00012 class row;
00013
00014 class ABA_Constraint;
00015
00018
00019 class cons_obj
00020 {
00021 friend class ILP_Problem;
00022 friend class subproblem;
00023 friend class ABA_Constraint;
00024
00025 private:
00026 double rhs_;
00027 cons_sense sense_;
00028 ABA_Constraint *Ref_Acons;
00029
00030 public:
00031 LEDA_MEMORY(cons_obj)
00032
00033 Activation Act;
00034
00035 LEDA::map < var_obj *, double >CM;
00036
00039 cons_obj (cons_sense s, double rhs);
00040
00043 cons_obj ();
00044
00045 void init (subproblem & S_, int n, Activation a);
00046
00047 void init (ILP_Problem & IP, int n, Activation a);
00048
00049 virtual double coeff (var_obj * v) {
00050 return 0;
00051 };
00052
00053 void set_sense (cons_sense s);
00054
00055 void set_rhs (double r);
00056
00057 ABA_Constraint *Acons ();
00058
00059 virtual double rhs ();
00060
00061 virtual cons_sense sense ();
00062
00063 virtual double coeff (ABA_VARIABLE * v);
00064
00067 bool violated (subproblem & S);
00068
00069 double slack(subproblem& S);
00070
00071 void set (var_obj * v, double d);
00072
00076 virtual void non_zero_entries (row & r)
00077 {
00078 };
00079
00080 virtual int genRow (Active_Variables * var, Row & row);
00081
00082 virtual ~cons_obj ();
00083 };
00084
00085 }
00086
00087 #endif