- Timestamp:
- 03/02/15 14:08:25 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Problems.GrammaticalOptimization/Test/TestTunedSettings.cs
r12025 r12099 30 30 [TestMethod] 31 31 [Timeout(1000 * 60 * 60 * 12)] // 12 hours 32 // this configuration worked especially well in the experiments33 32 public void TestAllPoliciesArtificialAnt() { 34 33 CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; … … 139 138 } 140 139 140 [TestMethod] 141 [Timeout(1000 * 60 * 60 * 30)] // 30 hours 142 public void TestAllPoliciesPoly10() { 143 CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; 144 145 var instanceFactories = new Func<int, ISymbolicExpressionTreeProblem>[] 146 { 147 (randSeed) => (ISymbolicExpressionTreeProblem)new SymbolicRegressionPoly10Problem(), 148 }; 149 150 var policyFactories = new Func<IBanditPolicy>[] 151 { 152 () => new RandomPolicy(), 153 () => new ActiveLearningPolicy(), 154 () => new EpsGreedyPolicy(0.01, (aInfo)=> aInfo.MaxReward, "max"), 155 () => new EpsGreedyPolicy(0.05, (aInfo)=> aInfo.MaxReward, "max"), 156 () => new EpsGreedyPolicy(0.1, (aInfo)=> aInfo.MaxReward, "max"), 157 () => new EpsGreedyPolicy(0.2, (aInfo)=> aInfo.MaxReward, "max"), 158 //() => new GaussianThompsonSamplingPolicy(), 159 () => new GaussianThompsonSamplingPolicy(true), 160 () => new GenericThompsonSamplingPolicy(new GaussianModel(0.5, 10, 1)), 161 () => new GenericThompsonSamplingPolicy(new GaussianModel(0.5, 10, 1, 1)), 162 //() => new BernoulliThompsonSamplingPolicy(), 163 () => new GenericThompsonSamplingPolicy(new BernoulliModel(1, 1)), 164 () => new EpsGreedyPolicy(0.01), 165 () => new EpsGreedyPolicy(0.05), 166 () => new EpsGreedyPolicy(0.1), 167 () => new EpsGreedyPolicy(0.2), 168 () => new EpsGreedyPolicy(0.5), 169 () => new UCTPolicy(0.01), 170 () => new UCTPolicy(0.05), 171 () => new UCTPolicy(0.1), 172 () => new UCTPolicy(0.5), 173 () => new UCTPolicy(1), 174 () => new UCTPolicy(2), 175 () => new UCTPolicy( 5), 176 () => new UCTPolicy( 10), 177 () => new ModifiedUCTPolicy(0.01), 178 () => new ModifiedUCTPolicy(0.05), 179 () => new ModifiedUCTPolicy(0.1), 180 () => new ModifiedUCTPolicy(0.5), 181 () => new ModifiedUCTPolicy(1), 182 () => new ModifiedUCTPolicy(2), 183 () => new ModifiedUCTPolicy( 5), 184 () => new ModifiedUCTPolicy( 10), 185 () => new UCB1Policy(), 186 () => new UCB1TunedPolicy(), 187 () => new UCBNormalPolicy(), 188 () => new BoltzmannExplorationPolicy(1), 189 () => new BoltzmannExplorationPolicy(10), 190 () => new BoltzmannExplorationPolicy(20), 191 () => new BoltzmannExplorationPolicy(100), 192 () => new BoltzmannExplorationPolicy(200), 193 () => new BoltzmannExplorationPolicy(500), 194 () => new ChernoffIntervalEstimationPolicy( 0.01), 195 () => new ChernoffIntervalEstimationPolicy( 0.05), 196 () => new ChernoffIntervalEstimationPolicy( 0.1), 197 () => new ChernoffIntervalEstimationPolicy( 0.2), 198 () => new ThresholdAscentPolicy(5, 0.01), 199 () => new ThresholdAscentPolicy(5, 0.05), 200 () => new ThresholdAscentPolicy(5, 0.1), 201 () => new ThresholdAscentPolicy(5, 0.2), 202 () => new ThresholdAscentPolicy(10, 0.01), 203 () => new ThresholdAscentPolicy(10, 0.05), 204 () => new ThresholdAscentPolicy(10, 0.1), 205 () => new ThresholdAscentPolicy(10, 0.2), 206 () => new ThresholdAscentPolicy(50, 0.01), 207 () => new ThresholdAscentPolicy(50, 0.05), 208 () => new ThresholdAscentPolicy(50, 0.1), 209 () => new ThresholdAscentPolicy(50, 0.2), 210 () => new ThresholdAscentPolicy(100, 0.01), 211 () => new ThresholdAscentPolicy(100, 0.05), 212 () => new ThresholdAscentPolicy(100, 0.1), 213 () => new ThresholdAscentPolicy(100, 0.2), 214 () => new ThresholdAscentPolicy(500, 0.01), 215 () => new ThresholdAscentPolicy(500, 0.05), 216 () => new ThresholdAscentPolicy(500, 0.1), 217 () => new ThresholdAscentPolicy(500, 0.2), 218 () => new ThresholdAscentPolicy(5000, 0.01), 219 () => new ThresholdAscentPolicy(10000, 0.01), 220 }; 221 var maxSizes = new int[] { 23 }; // necessary size symb reg poly 10 222 int nReps = 20; 223 int maxIterations = 100000; 224 foreach (var instanceFactory in instanceFactories) { 225 var sumBestQ = 0.0; 226 var sumItersToBest = 0; 227 double fractionSolved = 0.0; 228 foreach (var conf in GenerateConfigurations(instanceFactory, nReps, maxSizes)) { 229 foreach (var policy in policyFactories) { 230 var prob = conf.Problem; 231 var maxLen = conf.MaxSize; 232 var rand = new Random(conf.RandSeed); 233 234 var solver = new SequentialSearch(prob, maxLen, rand, 0, new GenericGrammarPolicy(prob, policy(), true)); 235 var problemName = prob.GetType().Name; 236 var policyName = policy().ToString(); 237 double bestQ; int itersToBest; 238 RunSolver(solver, problemName, policyName, 1.0, maxIterations, maxLen, out bestQ, out itersToBest); 239 sumBestQ += bestQ; 240 sumItersToBest += itersToBest; 241 if (bestQ.IsAlmost(1.0)) fractionSolved += 1.0 / nReps; 242 } 243 } 244 // Assert.AreEqual(0.85, fractionSolved, 1E-6); 245 // Assert.AreEqual(0.99438202247191, sumBestQ / nReps, 1E-6); 246 // Assert.AreEqual(5461.7, sumItersToBest / (double)nReps, 1E-6); 247 } 248 } 249 250 [TestMethod] 251 [Timeout(1000 * 60 * 60 * 30)] // 30 hours 252 public void TestAllSymbolicRegression() { 253 CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; 254 255 var instanceFactories = new Func<int, ISymbolicExpressionTreeProblem>[] 256 { 257 (randSeed) => (ISymbolicExpressionTreeProblem)new SymbolicRegressionProblem(new Random(randSeed), "Nguyen F7", true), 258 (randSeed) => (ISymbolicExpressionTreeProblem)new SymbolicRegressionProblem(new Random(randSeed), "Keijzer 6", true), 259 (randSeed) => (ISymbolicExpressionTreeProblem)new SymbolicRegressionProblem(new Random(randSeed), "Vladislavleva-4", true), 260 (randSeed) => (ISymbolicExpressionTreeProblem)new SymbolicRegressionProblem(new Random(randSeed), "Spatial", true), 261 (randSeed) => (ISymbolicExpressionTreeProblem)new SymbolicRegressionProblem(new Random(randSeed), "Friedman - II", true), 262 (randSeed) => (ISymbolicExpressionTreeProblem)new SymbolicRegressionProblem(new Random(randSeed), "Tower", true), 263 }; 264 265 var policyFactories = new Func<IBanditPolicy>[] 266 { 267 () => new UCTPolicy(0.05), 268 () => new UCTPolicy(0.1), 269 () => new ModifiedUCTPolicy(0.01), 270 () => new ModifiedUCTPolicy(0.05), 271 () => new UCB1Policy(), 272 () => new UCB1TunedPolicy(), 273 }; 274 var maxSizes = new int[] { 20 }; // default limit for all problems 275 int nReps = 20; 276 int maxIterations = 10000; 277 foreach (var instanceFactory in instanceFactories) { 278 var sumBestQ = 0.0; 279 var sumItersToBest = 0; 280 double fractionSolved = 0.0; 281 foreach (var conf in GenerateConfigurations(instanceFactory, nReps, maxSizes)) { 282 foreach (var policy in policyFactories) { 283 var prob = conf.Problem; 284 var maxLen = conf.MaxSize; 285 var rand = new Random(conf.RandSeed); 286 287 var solver = new SequentialSearch(prob, maxLen, rand, 0, new GenericGrammarPolicy(prob, policy(), true)); 288 var problemName = prob.Name; 289 var policyName = policy().ToString(); 290 double bestQ; int itersToBest; 291 RunSolver(solver, problemName, policyName, 1.0, maxIterations, maxLen, out bestQ, out itersToBest); 292 sumBestQ += bestQ; 293 sumItersToBest += itersToBest; 294 if (bestQ.IsAlmost(1.0)) fractionSolved += 1.0 / nReps; 295 } 296 } 297 // Assert.AreEqual(0.85, fractionSolved, 1E-6); 298 // Assert.AreEqual(0.99438202247191, sumBestQ / nReps, 1E-6); 299 // Assert.AreEqual(5461.7, sumItersToBest / (double)nReps, 1E-6); 300 } 301 } 141 302 142 303 [TestMethod] … … 151 312 }; 152 313 153 var maxSizes = new int[] { 23 }; 314 var maxSizes = new int[] { 23 }; 154 315 int nReps = 20; 155 316 int maxIterations = 100000; … … 190 351 }; 191 352 192 var maxSizes = new int[] { 23 }; 353 var maxSizes = new int[] { 23 }; 193 354 int nReps = 20; 194 355 int maxIterations = 100000;
Note: See TracChangeset
for help on using the changeset viewer.