예제 #1
0
 public RunScpVm(IScpParams scpParams, IEnumerable <ISorterGenomeEvalVm> sorterGenomeEvalVms)
 {
     ScpRunnerVm = new ScpRunnerVm(scpParams, sorterGenomeEvalVms);
     ScpRunnerVm.OnIterationResult.Subscribe(ReportBestResult);
     ReportFrequency   = 10;
     _trajectoryGridVm = new SgHistoryGridVm();
     _stopwatch        = new Stopwatch();
 }
예제 #2
0
        public ScpRunnerVm(IScpParams scpParams, IEnumerable <ISorterGenomeEvalVm> sorterGenomeEvalVms)
        {
            var genomeEvalVms = sorterGenomeEvalVms.ToList();

            _sorterGenomeEvalGridVmInitial = new SorterGenomeEvalGridVm("Progenitors");
            _sorterGenomeEvalGridVmInitial.SorterGenomeEvalVms.AddMany(genomeEvalVms);
            _sorterGenomeEvalGridVm = new SorterGenomeEvalGridVm("Current population");

            _sorterGenomeEvals = genomeEvalVms.Select(v => v.SorterGenomeEval).ToDictionary(e => e.Guid);
            _scpParamsVm       = new ScpParamVm(scpParams);
        }
 public static IScpWorkflow Make(
     ILayer <ISorterGenome> sorterLayer,
     IScpParams scpParams,
     int generation
     )
 {
     return(new ScpWorkflowImpl
            (
                sorterLayer0: Layer.Make(
                    generation: generation,
                    genomes: Enumerable.Empty <ISorterGenome>()
                    ),
                sorterLayer1: sorterLayer,
                scpParams: scpParams,
                generation: generation,
                report: string.Empty
            ));
 }
 public ScpWorkflowImpl
 (
     ILayer <ISorterGenome> sorterLayer0,
     ILayer <ISorterGenome> sorterLayer1,
     IScpParams scpParams,
     int generation,
     string report
 )
 {
     _sorterLayer0      = sorterLayer0;
     _compWorkflowState = CompWorkflowState.RunCompetition;
     _scpParams         = scpParams;
     _generation        = generation;
     _report            = report;
     _sorterLayer1      = sorterLayer1;
     _sorterLayerEval   = Enumerable.Empty <ISorterGenomeEval>()
                          .Make <ISorterGenome, IGenomeEval <ISorterGenome> >();
     _compPool = Sorting.CompetePools.CompPool.MakeEmpty(_sorterLayer1.Genomes.First().KeyCount);
 }
 private ScpWorkflowImpl
 (
     CompWorkflowState compWorkflowState,
     ILayer <ISorterGenome> sorterLayer0,
     ILayer <ISorterGenome> sorterLayer1,
     ICompPool compPool,
     ILayerEval <ISorterGenome, IGenomeEval <ISorterGenome> > sorterLayerEval,
     IScpParams scpParams,
     int generation,
     string report
 )
 {
     _compWorkflowState = compWorkflowState;
     _sorterLayer0      = sorterLayer0;
     _sorterLayerEval   = sorterLayerEval;
     _scpParams         = scpParams;
     _generation        = generation;
     _report            = report;
     _sorterLayer1      = sorterLayer1;
     _compPool          = compPool;
 }
        public static IScpWorkflow Make(
            int seed,
            int keyCount,
            int keyPairCount,
            IScpParams scpParams
            )
        {
            var randy = Rando.Fast(seed);

            return(new ScpWorkflowImpl
                   (
                       sorterLayer0: null,
                       sorterLayer1: SorterLayer.Create
                       (
                           seed: randy.NextInt(),
                           genomeCount: scpParams.PopulationCount,
                           keyCount: keyCount,
                           keyPairCount: keyPairCount
                       ),
                       scpParams: scpParams,
                       generation: 0,
                       report: string.Empty
                   ));
        }
예제 #7
0
 public ConfigScpVm(IScpParams scpParams)
 {
     ConfigScpParamVm       = new ConfigScpParamVm(scpParams);
     SorterGenomeEvalGridVm = new SorterGenomeEvalGridVm("Progenitors");
 }
예제 #8
0
 public CreateScpVm(IScpParams scpParams, ICommand createScpCommand)
 {
     CreateScpCommand = createScpCommand;
     ConfigScpVm      = new ConfigScpVm(scpParams);
 }