private void button1_Click(object sender, EventArgs e) { if (bgw != null && bgw.IsBusy) { return; } // Instantiate EALoop eaLoop = new EALoop(); // Setup the selected problem SetupProblem(); // Set up adult selector and parent selector SetupAdultSelector(); SetupParentSelector(); // Start background worker if (bgw == null) { bgw = new BackgroundWorker(); bgw.DoWork += new DoWorkEventHandler(bgw_DoWork); bgw.ProgressChanged += new ProgressChangedEventHandler(bgw_ProgressChanged); bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted); } bgw.WorkerReportsProgress = true; bgw.WorkerSupportsCancellation = true; // Run the background worker bgw.RunWorkerAsync(); }
public void testTournamentSelection() { int k = 5; double eps = 0.2; EALoop ea = new EALoop(); Agent a = new Agent(1); a.fitness = 5; Agent b = new Agent(2); b.fitness = 4; Agent c = new Agent(3); c.fitness = 3; Agent d = new Agent(4); d.fitness = 2; Agent e = new Agent(5); e.fitness = 1; List <Agent> allAgents = new List <Agent>() { a, e, b, d, c }; ea.k = k; ea.eps = eps; double a_count = 0; double b_count = 0; double c_count = 0; double d_count = 0; double e_count = 0; double error = 0; double N = 100; for (int i = 0; i < N; i++) { double fitness = ea.tournamentSelection(allAgents).getFitness(); if (fitness == 5) { a_count++; } else if (fitness == 4) { b_count++; } else if (fitness == 3) { c_count++; } else if (fitness == 2) { d_count++; } else if (fitness == 1) { e_count++; } else if (fitness == 100) { error++; } } System.Diagnostics.Debug.WriteLine("\n\n" + N + " tournaments run with p as " + (1 - eps)); System.Diagnostics.Debug.WriteLine("A: " + (a_count / N) * 100); System.Diagnostics.Debug.WriteLine("B: " + (b_count / N) * 100); System.Diagnostics.Debug.WriteLine("C: " + (c_count / N) * 100); System.Diagnostics.Debug.WriteLine("D: " + (d_count / N) * 100); System.Diagnostics.Debug.WriteLine("E: " + (e_count / N) * 100); System.Diagnostics.Debug.WriteLine("errors: " + (error / N) * 100); Assert.AreEqual(0.0, error); }
public void testGetWeight() { Agent a = new Agent(new List <double>() { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, 0); EALoop e = new EALoop(); Assert.AreEqual(1, e.getWeight(a, true)); Assert.AreEqual(0, e.getWeight(a, false)); }
public void fitnessCalculationTest() { EALoop ea = new EALoop(); EALoop.populationSize = 5; SocialNetwork socialNetwork = new SocialNetwork(); Agent agent = new Agent(0); socialNetwork.setConnection(agent, new Agent(0), 10); socialNetwork.setConnection(agent, new Agent(1), 2); socialNetwork.setConnection(agent, new Agent(2), 1); socialNetwork.setConnection(agent, new Agent(3), 1); socialNetwork.setConnection(agent, new Agent(4), 1); while (agent.getAge() < 2) { agent.incrementAge(); } //Assert.AreEqual(0.27, agent.calculateFitness(socialNetwork.getAgentsConnections(agent), 5)); }
public void testCrossover() { EALoop ea = new EALoop(); Agent parent1 = new Agent(new List <double>() { 0, 1, 10, 10, 10, 5, 6, 7, 10, 10 }, 0); Agent parent2 = new Agent(new List <double>() { 10, 10, 2, 3, 4, 10, 10, 10, 8, 9 }, 0); Agent child = ea.crossover(parent1, parent2); Agent child2 = ea.crossover(parent2, parent1); for (int i = 0; i < 10; i++) { Assert.AreEqual(10, child2.getGenome().getValuesGenome()[i]); Assert.AreEqual(i, child.getGenome().getValuesGenome()[i]); } }
private void button1_Click(object sender, EventArgs e) { if (bgw != null && bgw.IsBusy) { return; } // Instantiate EALoop eaLoop = new EALoop(); // Setup the selected problem SetupProblem(); // Set up adult selector and parent selector SetupAdultSelector(); SetupParentSelector(); // Start background worker if (bgw == null) { bgw = new BackgroundWorker(); bgw.DoWork += new DoWorkEventHandler(bgw_DoWork); bgw.ProgressChanged += new ProgressChangedEventHandler(bgw_ProgressChanged); bgw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgw_RunWorkerCompleted); } bgw.WorkerReportsProgress = true; bgw.WorkerSupportsCancellation = true; // Clear the chart if (checkBoxClearOnRun.Checked) { ClearChart(); } // Add a new series currentMaxString = "max_" + currentSeries.ToString(); currentAverageString = "average_" + currentSeries.ToString(); currentSdString = "sd_" + currentSeries.ToString(); currentSeries++; if (checkBoxMax.Checked) { chart1.Series.Add(currentMaxString); chart1.Series[currentMaxString].ChartType = SeriesChartType.FastLine; } if (checkBoxAverage.Checked) { chart1.Series.Add(currentAverageString); chart1.Series[currentAverageString].ChartType = SeriesChartType.FastLine; } if (checkBoxSd.Checked) { chart1.Series.Add(currentSdString); chart1.Series[currentSdString].ChartType = SeriesChartType.FastLine; } // Set axis size chart1.ChartAreas[0].AxisX.Maximum = (int)numericNumGenerations.Value; // Run the background worker bgw.RunWorkerAsync(); }