コード例 #1
0
 public ProxyCrossingover(ICrossingover crossingover)
 {
     _crossingover = crossingover;
     _numberOfGoodStarts = 0;
     _numberOfBadStarts = 0;
     _progressList = new List<double> { OneHundredPercent };
     _progress = OneHundredPercent;
 }
コード例 #2
0
ファイル: GEngine.cs プロジェクト: nettakogo87/GeneticEngine
 public GEngine(AbstractTrack[] tracks, int pCrossingover, int pMutation, IFitnessFunction fitnessFunction, IMutation mutation, ICrossingover crossingover, ISelection selection)
 {
     _countOfPerson = tracks.Length;
     _tracks = new AbstractTrack[_countOfPerson];
     _tracks = tracks;
     _pCrossingover = pCrossingover;
     _pMutation = pMutation;
     _fitnessFunction = fitnessFunction;
     _mutation = mutation;
     _crossingover = crossingover;
     _selection = selection;
     _geneticsDataSet = new DB_GeneticsDataSet();
     _launchId = Guid.NewGuid();
     _launchTableAdapter = new DB_GeneticsDataSetTableAdapters.LaunchesTableAdapter();
     _personsTableAdapter = new DB_GeneticsDataSetTableAdapters.PersonsTableAdapter();
 }
コード例 #3
0
        public void RunCounterTest()
        {
            _mutation = new NotRandomMutation();
            _selection = new TournamentSelection();
            _crossingover = new CyclicalCrossingover();

            int expectCountOfGeneration = 12000;
            IFitnessFunction fitnessFunction = new GenerationCounter(expectCountOfGeneration);
            int pCrossingover = 80;
            int pMutation = 60;
            Array.Sort(_closedTracks);
            double preBestResult = _closedTracks[0].GetTrackLength();
            GEngine target = new GEngine(_closedTracks, pCrossingover, pMutation, fitnessFunction, _mutation, _crossingover, _selection);
            target.Run();
            Assert.AreEqual(expectCountOfGeneration, target.FitnessFunction.ActualCountOfReps);
            Assert.IsTrue(preBestResult >= target.FitnessFunction.BestResult);
        }
コード例 #4
0
        public void RunSearchBestTest()
        {
            int bestReps = 50;
            int wantedResult = 6;
            List<ProxyMutation> proxyMutations = new List<ProxyMutation>();
            proxyMutations.Add(new ProxyMutation(new TwoPointMutation()));
            proxyMutations.Add(new ProxyMutation(new FourPointMutation()));
            proxyMutations.Add(new ProxyMutation(new NotRandomMutation()));
            _mutation = new SearchBestMutation(proxyMutations);

            List<ProxySelection> proxySelectios = new List<ProxySelection>();
            proxySelectios.Add(new ProxySelection(new TournamentSelection()));
            proxySelectios.Add(new ProxySelection(new RouletteSelection()));
            proxySelectios.Add(new ProxySelection(new RankingSelection()));
            _selection = new SearchBestSelection(proxySelectios);

            List<ProxyCrossingover> proxyCrossingovers = new List<ProxyCrossingover>();
            proxyCrossingovers.Add(new ProxyCrossingover(new CyclicalCrossingover()));
            proxyCrossingovers.Add(new ProxyCrossingover(new InversionCrossingover()));
            proxyCrossingovers.Add(new ProxyCrossingover(new OnePointCrossingover()));
            proxyCrossingovers.Add(new ProxyCrossingover(new TwoPointCrossingover()));
            _crossingover = new SearchBestCrossingover(proxyCrossingovers);

            IFitnessFunction fitnessFunction = new BestReps(bestReps);
            int pCrossingover = 100;
            int pMutation = 100;
            Array.Sort(_closedTracks);
            double preBestResult = _closedTracks[0].GetTrackLength();
            GEngine target = new GEngine(_closedTracks, pCrossingover, pMutation, fitnessFunction, _mutation, _crossingover, _selection);
            target.Run();
            double progress1 = proxySelectios[0].GetProgress();
            double progress2 = proxySelectios[1].GetProgress();
            double progress3 = proxySelectios[2].GetProgress();
            Assert.IsTrue(preBestResult >= target.FitnessFunction.BestResult);
        }
コード例 #5
0
        public void RunReachWantedResultTest()
        {
            _mutation = new NotRandomMutation();
            _selection = new TournamentSelection();
            _crossingover = new CyclicalCrossingover();

            int wantedResult = 6;
            IFitnessFunction fitnessFunction = new ReachWantedResult(wantedResult);
            int pCrossingover = 80;
            int pMutation = 60;
            Array.Sort(_closedTracks);
            double preBestResult = _closedTracks[0].GetTrackLength();
            GEngine target = new GEngine(_closedTracks, pCrossingover, pMutation, fitnessFunction, _mutation, _crossingover, _selection);
            target.Run();
            Assert.AreEqual(wantedResult, target.FitnessFunction.BestResult);
            Assert.IsTrue(preBestResult > target.FitnessFunction.BestResult);
        }