Changeset 11973


Ignore:
Timestamp:
02/09/15 14:50:43 (7 years ago)
Author:
gkronber
Message:

#2283: preparation for seq-search with fun approx symbreg experiment

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Problems.GrammaticalOptimization/Main/Program.cs

    r11972 r11973  
    2929      //RunGpDemo();
    3030      //RunGridTest();
    31       RunGpGridTest();
     31      //RunGpGridTest();
     32      RunFunApproxTest();
    3233    }
    3334
     
    306307
    307308
     309    private static void RunFunApproxTest() {
     310      const int nReps = 20;
     311      const int seed = 31415;
     312      //const int maxIters = 50000;
     313      var rand = new Random(seed);
     314      var problemFactories = new Func<Tuple<int, int, ISymbolicExpressionTreeProblem>>[]
     315      {
     316        () => Tuple.Create(100000, 23,  (ISymbolicExpressionTreeProblem)new SymbolicRegressionPoly10Problem()),
     317        //() => Tuple.Create(100000, 17, (ISymbolicExpressionTreeProblem)new SantaFeAntProblem()),
     318        //() => Tuple.Create(50000, 32,(ISymbolicExpressionTreeProblem)new RoyalSymbolProblem()),
     319        //() => Tuple.Create(50000, 64, (ISymbolicExpressionTreeProblem)new RoyalPairProblem()),
     320        //() => Tuple.Create(50000, 64,(ISymbolicExpressionTreeProblem)new RoyalSymbolProblem()),
     321        //() => Tuple.Create(50000, 128, (ISymbolicExpressionTreeProblem)new RoyalPairProblem()),
     322        //() => Tuple.Create(50000, 128,(ISymbolicExpressionTreeProblem)new RoyalSymbolProblem()),
     323        //() => Tuple.Create(50000, 256, (ISymbolicExpressionTreeProblem)new RoyalPairProblem()),
     324        //() => Tuple.Create(50000, 256,(ISymbolicExpressionTreeProblem)new RoyalSymbolProblem()),
     325        //() => new RoyalPairProblem(),
     326        //() => new FindPhrasesProblem(rand, 20, 5, 3, 5, 0, 1, 0, true),
     327        //() => new FindPhrasesProblem(rand, 20, 5, 3, 5, 0, 1, 0, false),
     328        //() => new FindPhrasesProblem(rand, 20, 5, 3, 5, 50, 1, 0.8, false),
     329      };
     330
     331      // skip experiments that are already done
     332      foreach (var problemFactory in problemFactories) {
     333        for (int i = 0; i < nReps; i++) {
     334          {
     335            var solverSeed = rand.Next();
     336            var tupel = problemFactory();
     337            var maxIters = tupel.Item1;
     338            var maxSize = tupel.Item2;
     339            var prob = tupel.Item3;
     340
     341            var alg = new SequentialSearch(prob, maxSize, new Random(solverSeed), 0,
     342          new HeuristicLab.Algorithms.Bandits.GrammarPolicies.GenericFunctionApproximationGrammarPolicy(prob, true));
     343
     344            int iterations = 0;
     345            var globalStatistics = new SentenceSetStatistics(prob.BestKnownQuality(maxSize));
     346            var algName = alg.GetType().Name;
     347            var probName = prob.GetType().Name;
     348            alg.SolutionEvaluated += (sentence, quality) => {
     349              iterations++;
     350              globalStatistics.AddSentence(sentence, quality);
     351
     352              if (iterations % 1000 == 0) {
     353                Console.WriteLine("\"{0,25}\" {1} \"{2,25}\" {3}", algName, maxSize, probName, globalStatistics);
     354              }
     355            };
     356
     357            alg.Run(maxIters);
     358
     359          }
     360
     361        }
     362      }
     363    }
     364
    308365    private static void RunGpGridTest() {
    309366      const int nReps = 20;
Note: See TracChangeset for help on using the changeset viewer.