Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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]);
            }
        }
Exemplo n.º 6
0
        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();
        }