00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _CSP_KERNEL_ConstraintOH_H
00030 #define _CSP_KERNEL_ConstraintOH_H
00031
00032
00033 CSP_NAMESPACE_BEGIN(csp);
00034
00035
00039 class CSP_API ConstraintOH :
00040 public OrderingHeuristic
00041 {
00042 public:
00052 ConstraintOH(
00053 const wstring& name,
00054 Decomposition& decomposition,
00055 const vector<pair<double, double> >& intervals,
00056 double quality = 1) :
00057 OrderingHeuristic(name, decomposition, intervals, quality) {}
00058
00059 virtual ~ConstraintOH() {}
00060
00071 virtual void init(const vlist_type& ) {}
00072
00074 virtual void done() {}
00075
00091 virtual void select(clist_type& selectable, clist_type& selected) = 0;
00092
00098 virtual wostream& print(wostream& wos) const
00099 {
00100 return OrderingHeuristic::print(wos);
00101 }
00102
00103 friend CSP_API wostream& operator<<(
00104 wostream& wos, const ConstraintOH& constraintOH)
00105 {
00106 return constraintOH.print(wos);
00107 }
00108
00109 private:
00111 ConstraintOH(const ConstraintOH&);
00112
00114 ConstraintOH& operator=(const ConstraintOH&);
00115 };
00116
00117
00118 CSP_NAMESPACE_END(csp);
00119
00120
00121 #endif // _CSP_KERNEL_ConstraintOH_H
00122
00123
00124
00125