- Timestamp:
- 11/16/16 00:33:20 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PushGP/HeuristicLab.Algorithms.PushGP/HeuristicLab.Tests/Benchmark/Problem/CountOdds.cs
r14392 r14397 3 3 using System.Diagnostics; 4 4 using System.Linq; 5 using System.Threading.Tasks; 6 using HeuristicLab.Algorithms.PushGP.Expressions; 5 7 using HeuristicLab.Algorithms.PushGP.Interpreter; 6 8 using Microsoft.VisualStudio.TestTools.UnitTesting; … … 21 23 public void RandomWalk() 22 24 { 23 var interpreter = new PushGPInterpreter(new Configuration 25 var limit = 1000; 26 var iterations = 20000; 27 var best = double.MaxValue; 28 Expression bestProgram = null; 29 var lockObj = new object(); 30 var globalExecCounter = 0; 31 32 33 Parallel.For(0, iterations, async i => 24 34 { 25 EvalPushLimit = 10000 26 }); 35 var interpreter = new PushGPInterpreter(new Configuration 36 { 37 EvalPushLimit = 10000 38 }); 27 39 28 var limit = 1000; 29 var iterations = 3000; 30 var best = double.MaxValue; 31 32 for (var i = 0; i < iterations; i++) 33 { 40 var execCounter = 0; 34 41 var program = interpreter.CodeGenerator.RandomProgram(limit); 35 36 42 var results = new List<long>(); 37 43 … … 43 49 } 44 50 45 interpreter.Interpret(program);51 await interpreter.InterpretAsync(program); 46 52 47 53 if (!interpreter.IntegerStack.IsEmpty) … … 51 57 results.Add(Math.Min(value, 1000)); 52 58 } 59 60 execCounter += interpreter.ExecCounter; 61 interpreter.Clear(); 53 62 } 54 63 55 56 64 if (!results.Any()) 57 continue;65 return; 58 66 59 67 var avg = results.Average(); 60 68 61 if (avg < best)69 lock (lockObj) 62 70 { 63 best = avg; 71 if (avg < best) 72 { 73 best = avg; 74 bestProgram = program; 75 globalExecCounter += execCounter; 76 } 64 77 } 65 66 interpreter.Clear(); 67 } 78 }); 68 79 69 80 Debug.WriteLine("Best: {0}", best); 81 Debug.WriteLine("Program: {0}", bestProgram); 82 Debug.WriteLine("ExecCounter: {0}", globalExecCounter); 70 83 } 71 84 }
Note: See TracChangeset
for help on using the changeset viewer.