private void sbStart_Click(object sender, EventArgs e) { try { GenAlgorithm = new GenAlgorithm(meOutPut, AlgorithmSetting); meOutPut.Text = ""; GenAlgorithm.Process(); lcCalcTimer.Text = $"Время расчета {GenAlgorithm.FinishTimeAlgorithm}"; PopulationTrack = GenAlgorithm.NumberOfLastGeneneration; ChangeRangeTrack(PopulationTrack); rngPopulationTrack.Enabled = true; rngPopulationTrack.Value = rngPopulationTrack.Properties.Maximum; ConvertCandidateToSeries(chFunction, 2, GenAlgorithm.AllBestCandidates[PopulationTrack]); MessageBox.Show($"Наилучшее решение:{GenAlgorithm.GetBestCandidate().DecValue} было найдено за {GenAlgorithm.NumberOfLastGeneneration} поколений"); GenAlgorithm.GetBestCandidate(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// Runs an optimization /// </summary> public void Start() { // -- 1 -- raised when new generation formed GenAlgorithm.GenerationRan += (sender, generation) => { Shared.Logger.Trace(generation.Chromosomes.SolutionsToLogOutput("GENERATION RAN")); }; // -- 2 -- raised when optimization completed GenAlgorithm.TerminationReached += (sender, population) => { // save all good chromosomes and log the output ProfitableChromosomes = population.SelectProfitableChromosomes(); Shared.Logger.Trace(ProfitableChromosomes.SolutionsToLogOutput("TERMINATION REACHED")); }; // launches genetic GenAlgorithm.Start(); }
IEnumerator generateMaze() { // Getting variables from config rows = PlayerPrefs.GetInt("rows"); cols = PlayerPrefs.GetInt("cols"); alg = (GenAlgorithm)PlayerPrefs.GetInt("alg"); if (PlayerPrefs.GetInt("seed") != 0) { Random.InitState(PlayerPrefs.GetInt("seed")); } interfaceController.updateSeedDisplay(); // Generating maze Maze maze = new Maze(mazeCell, rows, cols, alg); maze.init(); maze.generate(); // Placing winner spot Vector3 winPosition = maze.getLastCell().transform.position; winTrigger.position = winPosition; int side = Mathf.Max(rows, cols); // Placing Top-Down View Camera float x = winPosition.x; float y = 3f * side * 3 / (2 * Mathf.Tan(Mathf.Deg2Rad * cam.fieldOfView)); float z = winPosition.z / 2; cam.transform.position = new Vector3(winPosition.x / 2, y, z); // Placing Player player.transform.position = new Vector3(0, 1.1275f, 0); player.SetActive(true); interfaceController.updateGenerationTime(); yield return(null); }
public void SetComponents(int population, int generations, int pMutation, int pCross, int distype, int pMutIndiv, int pSelection, Bitmap b, int histOption) { ga = new GenAlgorithm(population, b, distype, pCross, pMutation, generations, pMutIndiv, pSelection, this, histOption); }