예제 #1
0
 public static IObservable <Result> RunMultipleEpochs(this IGeneticWrap wrap, int iterations)
 {
     return(Enumerable.Range(1, iterations).ToObservable()
            .SelectMany(x => Observable.Start(() =>
     {
         wrap.Population.RunEpoch();
         return wrap.Evaluate();
     }, TaskPoolScheduler.Default)));
 }
예제 #2
0
 public static void RunMultipleEpochs(this IGeneticWrap wrap, int iterations, IProgress <KeyValuePair <int, Result> > progress)
 {
     for (int i = 1; i < iterations; i++)
     {
         // run one epoch of genetic algorithm
         wrap.Population.RunEpoch();
         var t = wrap.Evaluate();
         progress?.Report(new KeyValuePair <int, Result>(i, t));
     }
 }
예제 #3
0
        public static void RunMultipleEpochs(this IGeneticWrap wrap, int iterations, CancellationToken token, IProgress <KeyValuePair <int, Result> > progress = null)
        {
            for (int i = 1; i < iterations; i++)
            {
                if (token.IsCancellationRequested == true)
                {
                    return;
                }

                wrap.Population.RunEpoch();
                var t = wrap.Evaluate();

                progress?.Report(new KeyValuePair <int, Result>(i, t));
            }
        }