00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _CSP_HEURISTICS_VALUE_Predefined_H
00025 #define _CSP_HEURISTICS_VALUE_Predefined_H
00026
00027
00028 CSP_NAMESPACE_BEGIN(csp);
00029 CSP_NAMESPACE_BEGIN(heuristics);
00030 CSP_NAMESPACE_BEGIN(values);
00031
00032
00037 class CSP_API Predefined :
00038 public ValueOH
00039 {
00040 public:
00050 Predefined(
00051 Decomposition& decomposition,
00052 const vector<vector<id_t> >& ids,
00053 const vector<pair<double, double> >& intervals,
00054 double quality = 1);
00055
00066 virtual void init(const vlist_type& uninstantiatedVariables);
00067
00069 virtual void done();
00070
00079 virtual void select(
00080 Domain& selectable,
00081 Domain& selected,
00082 Variable& variable);
00083
00094 virtual long double score(Variable& variable, const Value& value);
00095
00102 size_t extraCalls() const { return m_extraCalls; }
00103
00104 private:
00106 Predefined(const Predefined&);
00107
00109 Predefined& operator=(const Predefined&);
00110
00112 vector<vector<id_t> > m_ids;
00113
00115 vector<size_t> m_next;
00116
00119 size_t m_extraCalls;
00120 };
00121
00122
00123 CSP_NAMESPACE_END(values);
00124 CSP_NAMESPACE_END(heuristics);
00125 CSP_NAMESPACE_END(csp);
00126
00127
00128 #endif // _CSP_HEURISTICS_VALUE_Predefined_H
00129
00130
00131
00132