public static ISgMutantProfile ToSgMutantProfile
        (
            this ISorterGenomeEval parentGenomeEval,
            ISorterMutateParams sorterMutateParams
        )
        {
            var rando = Rando.Fast(sorterMutateParams.Seed);

            var layer = SorterLayer.Make(new[] { parentGenomeEval.SorterGenome }, 0)
                        .Reproduce(
                seed: rando.NextInt(),
                newGenomeCount: sorterMutateParams.MutantCount,
                mutationRate: sorterMutateParams.SorterMutationRate,
                insertionRate: sorterMutateParams.SorterInsertionRate,
                deletionRate: sorterMutateParams.SorterDeletionRate
                );

            var compPool = CompPool.MakeEmpty(parentGenomeEval.SorterGenome.KeyCount)
                           .AddSorterEvalsParallel(layer.Genomes.Select(g => g.ToSorter()));

            return(new SgMutantProfileImpl(
                       parentGenomeEval: parentGenomeEval,
                       sorterGenomeEvals: compPool.SorterEvals.Where(ev => ev.SwitchUseCount <= sorterMutateParams.MaxScore)
                       .Select(ev => SorterGenomeEval.Make
                               (
                                   sorterGenome: layer.GetGenome(ev.Sorter.Guid),
                                   parentGenomeEval: parentGenomeEval,
                                   sorterEval: ev,
                                   generation: 1,
                                   success: ev.Success
                               )),
                       scores: compPool.SorterEvals.Select(ev => (double)ev.SwitchUseCount),
                       sorterMutateParams: sorterMutateParams
                       ));
        }
Beispiel #2
0
 public RunMutateSortersVm(ISorterMutateParams sorterMutateParams, IEnumerable <ISorterGenomeEvalVm> sorterGenomeEvalVms)
 {
     MutateSortersRunnerVm = new MutateSortersRunnerVm(sorterMutateParams, sorterGenomeEvalVms);
     MutateSortersRunnerVm.OnIterationResult.Subscribe(ReportBestResult);
     _sorterGenomeEvalGridVm = new SorterGenomeEvalGridVm("Selected mutants");
     ReportFrequency         = 10;
     _stopwatch = new Stopwatch();
 }
Beispiel #3
0
        public MutateSortersRunnerVm(ISorterMutateParams sorterMutateParams, IEnumerable <ISorterGenomeEvalVm> sorterGenomeEvalVms)
        {
            var genomeEvalVms = sorterGenomeEvalVms.ToList();

            _sorterGenomeEvalGridVmInitial = new SorterGenomeEvalGridVm("Progenitors");
            _sorterGenomeEvalGridVmInitial.SorterGenomeEvalVms.AddMany(genomeEvalVms);
            _sgMutantProfileGridVm = new SgMutantProfileGridVm("Mutants");
            _sorterMutateParamsVm  = new SorterMutateParamsVm(sorterMutateParams);
        }
 public SgMutantProfileImpl(
     ISorterGenomeEval parentGenomeEval,
     IEnumerable <ISorterGenomeEval> sorterGenomeEvals,
     IEnumerable <double> scores,
     ISorterMutateParams sorterMutateParams
     )
 {
     _parentGenomeEval   = parentGenomeEval;
     _sorterGenomeEvals  = sorterGenomeEvals.ToList();
     _scores             = scores.ToList();
     _sorterMutateParams = sorterMutateParams;
 }
 public ConfigMutateSortersVm(ISorterMutateParams sorterMutateParams)
 {
     ConfigMutateSortersParamVm = new ConfigMutateSortersParamVm(sorterMutateParams);
     SorterGenomeEvalGridVm     = new SorterGenomeEvalGridVm("Progenitors");
 }
Beispiel #6
0
 public CreateMutateSortersVm(ISorterMutateParams mutateParams, ICommand createSorterMutateCommand)
 {
     CreateSorterMutateCommand = createSorterMutateCommand;
     ConfigMutateSortersVm     = new ConfigMutateSortersVm(mutateParams);
 }