public ProxyCrossingover(ICrossingover crossingover) { _crossingover = crossingover; _numberOfGoodStarts = 0; _numberOfBadStarts = 0; _progressList = new List<double> { OneHundredPercent }; _progress = OneHundredPercent; }
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(); }
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); }
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); }
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); }