branch-var.hpp
Go to the documentation of this file.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
00030
00031
00032
00033
00034
00035
00036
00037
00038 namespace Gecode {
00039
00049 typedef double (*BranchTbl)(const Space& home, double w, double b);
00050
00055 class VarBranch {
00056 protected:
00058 BranchTbl _tbl;
00060 Rnd _rnd;
00062 double _decay;
00064 AFC _afc;
00066 Activity _act;
00068 VoidFunction _mf;
00069 public:
00071 VarBranch(BranchTbl t);
00073 VarBranch(Rnd r);
00075 VarBranch(double d, BranchTbl t);
00077 VarBranch(AFC a, BranchTbl t);
00079 VarBranch(Activity a, BranchTbl t);
00081 VarBranch(void (*f)(void), BranchTbl t);
00083 BranchTbl tbl(void) const;
00085 Rnd rnd(void) const;
00087 double decay(void) const;
00089 AFC afc(void) const;
00091 void afc(AFC a);
00093 Activity activity(void) const;
00095 void activity(Activity a);
00097 VoidFunction merit(void) const;
00098 };
00099
00100
00101 forceinline
00102 VarBranch::VarBranch(BranchTbl t)
00103 : _tbl(t), _decay(1.0) {}
00104
00105 forceinline
00106 VarBranch::VarBranch(double d, BranchTbl t)
00107 : _tbl(t), _decay(d) {}
00108
00109 forceinline
00110 VarBranch::VarBranch(AFC a, BranchTbl t)
00111 : _tbl(t), _decay(1.0), _afc(a) {
00112 if (!_afc.initialized())
00113 throw UninitializedAFC("VarBranch::VarBranch");
00114 }
00115
00116 forceinline
00117 VarBranch::VarBranch(Activity a, BranchTbl t)
00118 : _tbl(t), _decay(1.0), _act(a) {
00119 if (!_act.initialized())
00120 throw UninitializedActivity("VarBranch::VarBranch");
00121 }
00122
00123 forceinline
00124 VarBranch::VarBranch(Rnd r)
00125 : _tbl(NULL), _rnd(r), _decay(1.0) {
00126 if (!_rnd.initialized())
00127 throw UninitializedRnd("VarBranch::VarBranch");
00128 }
00129
00130 forceinline
00131 VarBranch::VarBranch(VoidFunction f, BranchTbl t)
00132 : _tbl(t), _decay(1.0), _mf(f) {}
00133
00134 forceinline BranchTbl
00135 VarBranch::tbl(void) const {
00136 return _tbl;
00137 }
00138
00139 inline Rnd
00140 VarBranch::rnd(void) const {
00141 return _rnd;
00142 }
00143
00144 inline double
00145 VarBranch::decay(void) const {
00146 return _decay;
00147 }
00148
00149 inline AFC
00150 VarBranch::afc(void) const {
00151 return _afc;
00152 }
00153
00154 inline void
00155 VarBranch::afc(AFC a) {
00156 _afc=a;
00157 }
00158
00159 inline Activity
00160 VarBranch::activity(void) const {
00161 return _act;
00162 }
00163
00164 inline void
00165 VarBranch::activity(Activity a) {
00166 _act=a;
00167 }
00168
00169 forceinline VoidFunction
00170 VarBranch::merit(void) const {
00171 return _mf;
00172 }
00173
00174 }
00175
00176