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
00040 forceinline
00041 FloatVarBranch::FloatVarBranch(void)
00042 : s(SEL_NONE) {}
00043
00044 forceinline
00045 FloatVarBranch::FloatVarBranch(Select s0, BranchTbl t)
00046 : VarBranch<FloatVar>(t), s(s0) {}
00047
00048 forceinline
00049 FloatVarBranch::FloatVarBranch(Rnd r)
00050 : VarBranch<FloatVar>(r), s(SEL_RND) {}
00051
00052 forceinline
00053 FloatVarBranch::FloatVarBranch(Select s0, double d, BranchTbl t)
00054 : VarBranch<FloatVar>(d,t), s(s0) {}
00055
00056 forceinline
00057 FloatVarBranch::FloatVarBranch(Select s0, FloatAFC a, BranchTbl t)
00058 : VarBranch<FloatVar>(a,t), s(s0) {}
00059
00060 forceinline
00061 FloatVarBranch::FloatVarBranch(Select s0, FloatAction a, BranchTbl t)
00062 : VarBranch<FloatVar>(a,t), s(s0) {}
00063
00064 forceinline
00065 FloatVarBranch::FloatVarBranch(Select s0, FloatCHB c, BranchTbl t)
00066 : VarBranch<FloatVar>(c,t), s(s0) {}
00067
00068 forceinline
00069 FloatVarBranch::FloatVarBranch(Select s0, FloatBranchMerit mf, BranchTbl t)
00070 : VarBranch<FloatVar>(mf,t), s(s0) {}
00071
00072 forceinline FloatVarBranch::Select
00073 FloatVarBranch::select(void) const {
00074 return s;
00075 }
00076
00077 forceinline void
00078 FloatVarBranch::expand(Home home, const FloatVarArgs& x) {
00079 switch (select()) {
00080 case SEL_AFC_MIN: case SEL_AFC_MAX:
00081 case SEL_AFC_SIZE_MIN: case SEL_AFC_SIZE_MAX:
00082 if (!_afc)
00083 _afc = FloatAFC(home,x,decay());
00084 break;
00085 case SEL_ACTION_MIN: case SEL_ACTION_MAX:
00086 case SEL_ACTION_SIZE_MIN: case SEL_ACTION_SIZE_MAX:
00087 if (!_act)
00088 _act = FloatAction(home,x,decay());
00089 break;
00090 case SEL_CHB_MIN: case SEL_CHB_MAX:
00091 case SEL_CHB_SIZE_MIN: case SEL_CHB_SIZE_MAX:
00092 if (!_chb)
00093 _chb = FloatCHB(home,x);
00094 break;
00095 default: ;
00096 }
00097 }
00098
00099
00100 inline FloatVarBranch
00101 FLOAT_VAR_NONE(void) {
00102 return FloatVarBranch(FloatVarBranch::SEL_NONE,nullptr);
00103 }
00104
00105 inline FloatVarBranch
00106 FLOAT_VAR_MERIT_MIN(FloatBranchMerit bm, BranchTbl tbl) {
00107 return FloatVarBranch(FloatVarBranch::SEL_MERIT_MIN,bm,tbl);
00108 }
00109
00110 inline FloatVarBranch
00111 FLOAT_VAR_MERIT_MAX(FloatBranchMerit bm, BranchTbl tbl) {
00112 return FloatVarBranch(FloatVarBranch::SEL_MERIT_MAX,bm,tbl);
00113 }
00114
00115 inline FloatVarBranch
00116 FLOAT_VAR_RND(Rnd r) {
00117 return FloatVarBranch(r);
00118 }
00119
00120 inline FloatVarBranch
00121 FLOAT_VAR_DEGREE_MIN(BranchTbl tbl) {
00122 return FloatVarBranch(FloatVarBranch::SEL_DEGREE_MIN,tbl);
00123 }
00124
00125 inline FloatVarBranch
00126 FLOAT_VAR_DEGREE_MAX(BranchTbl tbl) {
00127 return FloatVarBranch(FloatVarBranch::SEL_DEGREE_MAX,tbl);
00128 }
00129
00130 inline FloatVarBranch
00131 FLOAT_VAR_AFC_MIN(double d, BranchTbl tbl) {
00132 return FloatVarBranch(FloatVarBranch::SEL_AFC_MIN,d,tbl);
00133 }
00134
00135 inline FloatVarBranch
00136 FLOAT_VAR_AFC_MIN(FloatAFC a, BranchTbl tbl) {
00137 return FloatVarBranch(FloatVarBranch::SEL_AFC_MIN,a,tbl);
00138 }
00139
00140 inline FloatVarBranch
00141 FLOAT_VAR_AFC_MAX(double d, BranchTbl tbl) {
00142 return FloatVarBranch(FloatVarBranch::SEL_AFC_MAX,d,tbl);
00143 }
00144
00145 inline FloatVarBranch
00146 FLOAT_VAR_AFC_MAX(FloatAFC a, BranchTbl tbl) {
00147 return FloatVarBranch(FloatVarBranch::SEL_AFC_MAX,a,tbl);
00148 }
00149
00150 inline FloatVarBranch
00151 FLOAT_VAR_ACTION_MIN(double d, BranchTbl tbl) {
00152 return FloatVarBranch(FloatVarBranch::SEL_ACTION_MIN,d,tbl);
00153 }
00154
00155 inline FloatVarBranch
00156 FLOAT_VAR_ACTION_MIN(FloatAction a, BranchTbl tbl) {
00157 return FloatVarBranch(FloatVarBranch::SEL_ACTION_MIN,a,tbl);
00158 }
00159
00160 inline FloatVarBranch
00161 FLOAT_VAR_ACTION_MAX(double d, BranchTbl tbl) {
00162 return FloatVarBranch(FloatVarBranch::SEL_ACTION_MAX,d,tbl);
00163 }
00164
00165 inline FloatVarBranch
00166 FLOAT_VAR_ACTION_MAX(FloatAction a, BranchTbl tbl) {
00167 return FloatVarBranch(FloatVarBranch::SEL_ACTION_MAX,a,tbl);
00168 }
00169
00170 inline FloatVarBranch
00171 FLOAT_VAR_CHB_MIN(BranchTbl tbl) {
00172 return FloatVarBranch(FloatVarBranch::SEL_CHB_MIN,tbl);
00173 }
00174
00175 inline FloatVarBranch
00176 FLOAT_VAR_CHB_MIN(FloatCHB c, BranchTbl tbl) {
00177 return FloatVarBranch(FloatVarBranch::SEL_CHB_MIN,c,tbl);
00178 }
00179
00180 inline FloatVarBranch
00181 FLOAT_VAR_CHB_MAX(BranchTbl tbl) {
00182 return FloatVarBranch(FloatVarBranch::SEL_CHB_MAX,tbl);
00183 }
00184
00185 inline FloatVarBranch
00186 FLOAT_VAR_CHB_MAX(FloatCHB c, BranchTbl tbl) {
00187 return FloatVarBranch(FloatVarBranch::SEL_CHB_MAX,c,tbl);
00188 }
00189
00190 inline FloatVarBranch
00191 FLOAT_VAR_MIN_MIN(BranchTbl tbl) {
00192 return FloatVarBranch(FloatVarBranch::SEL_MIN_MIN,tbl);
00193 }
00194
00195 inline FloatVarBranch
00196 FLOAT_VAR_MIN_MAX(BranchTbl tbl) {
00197 return FloatVarBranch(FloatVarBranch::SEL_MIN_MAX,tbl);
00198 }
00199
00200 inline FloatVarBranch
00201 FLOAT_VAR_MAX_MIN(BranchTbl tbl) {
00202 return FloatVarBranch(FloatVarBranch::SEL_MAX_MIN,tbl);
00203 }
00204
00205 inline FloatVarBranch
00206 FLOAT_VAR_MAX_MAX(BranchTbl tbl) {
00207 return FloatVarBranch(FloatVarBranch::SEL_MAX_MAX,tbl);
00208 }
00209
00210 inline FloatVarBranch
00211 FLOAT_VAR_SIZE_MIN(BranchTbl tbl) {
00212 return FloatVarBranch(FloatVarBranch::SEL_SIZE_MIN,tbl);
00213 }
00214
00215 inline FloatVarBranch
00216 FLOAT_VAR_SIZE_MAX(BranchTbl tbl) {
00217 return FloatVarBranch(FloatVarBranch::SEL_SIZE_MAX,tbl);
00218 }
00219
00220 inline FloatVarBranch
00221 FLOAT_VAR_DEGREE_SIZE_MIN(BranchTbl tbl) {
00222 return FloatVarBranch(FloatVarBranch::SEL_DEGREE_SIZE_MIN,tbl);
00223 }
00224
00225 inline FloatVarBranch
00226 FLOAT_VAR_DEGREE_SIZE_MAX(BranchTbl tbl) {
00227 return FloatVarBranch(FloatVarBranch::SEL_DEGREE_SIZE_MAX,tbl);
00228 }
00229
00230 inline FloatVarBranch
00231 FLOAT_VAR_AFC_SIZE_MIN(double d, BranchTbl tbl) {
00232 return FloatVarBranch(FloatVarBranch::SEL_AFC_SIZE_MIN,d,tbl);
00233 }
00234
00235 inline FloatVarBranch
00236 FLOAT_VAR_AFC_SIZE_MIN(FloatAFC a, BranchTbl tbl) {
00237 return FloatVarBranch(FloatVarBranch::SEL_AFC_SIZE_MIN,a,tbl);
00238 }
00239
00240 inline FloatVarBranch
00241 FLOAT_VAR_AFC_SIZE_MAX(double d, BranchTbl tbl) {
00242 return FloatVarBranch(FloatVarBranch::SEL_AFC_SIZE_MAX,d,tbl);
00243 }
00244
00245 inline FloatVarBranch
00246 FLOAT_VAR_AFC_SIZE_MAX(FloatAFC a, BranchTbl tbl) {
00247 return FloatVarBranch(FloatVarBranch::SEL_AFC_SIZE_MAX,a,tbl);
00248 }
00249
00250 inline FloatVarBranch
00251 FLOAT_VAR_ACTION_SIZE_MIN(double d, BranchTbl tbl) {
00252 return FloatVarBranch(FloatVarBranch::SEL_ACTION_SIZE_MIN,d,tbl);
00253 }
00254
00255 inline FloatVarBranch
00256 FLOAT_VAR_ACTION_SIZE_MIN(FloatAction a, BranchTbl tbl) {
00257 return FloatVarBranch(FloatVarBranch::SEL_ACTION_SIZE_MIN,a,tbl);
00258 }
00259
00260 inline FloatVarBranch
00261 FLOAT_VAR_ACTION_SIZE_MAX(double d, BranchTbl tbl) {
00262 return FloatVarBranch(FloatVarBranch::SEL_ACTION_SIZE_MAX,d,tbl);
00263 }
00264
00265 inline FloatVarBranch
00266 FLOAT_VAR_ACTION_SIZE_MAX(FloatAction a, BranchTbl tbl) {
00267 return FloatVarBranch(FloatVarBranch::SEL_ACTION_SIZE_MAX,a,tbl);
00268 }
00269
00270 inline FloatVarBranch
00271 FLOAT_VAR_CHB_SIZE_MIN(BranchTbl tbl) {
00272 return FloatVarBranch(FloatVarBranch::SEL_CHB_SIZE_MIN,tbl);
00273 }
00274
00275 inline FloatVarBranch
00276 FLOAT_VAR_CHB_SIZE_MIN(FloatCHB c, BranchTbl tbl) {
00277 return FloatVarBranch(FloatVarBranch::SEL_CHB_SIZE_MIN,c,tbl);
00278 }
00279
00280 inline FloatVarBranch
00281 FLOAT_VAR_CHB_SIZE_MAX(BranchTbl tbl) {
00282 return FloatVarBranch(FloatVarBranch::SEL_CHB_SIZE_MAX,tbl);
00283 }
00284
00285 inline FloatVarBranch
00286 FLOAT_VAR_CHB_SIZE_MAX(FloatCHB c, BranchTbl tbl) {
00287 return FloatVarBranch(FloatVarBranch::SEL_CHB_SIZE_MAX,c,tbl);
00288 }
00289
00290 }
00291
00292