コード例 #1
0
ファイル: UnitTest1.cs プロジェクト: Szuhanyi/playground
        public void Nsga2Test()
        {
            Algorithm a = new Nsga2();
            ServiceTestData td = ServiceTestData.getInstance();
            Population p = new Population();
            var asdf = td.getMockInitialPopulation(3);

            p.SetGenom(td.getMockInitialPopulation(3));

            ServiceTestFunctions tf = ServiceTestFunctions.GetInstance();

            foreach (Individual i in p)
            {
                tf.EvaluateObjective(i);
            }
            a.SetPopulation(p);
            a.Rank();
            ServiceOutput so = ServiceOutput.GetInstance();
            //foreach (Individual i in p)
            //{
            //    so.Write(i.ToReadableFormat());
            //}
            Assert.AreEqual(td.GetPopulationCount(), asdf.Count);

            a.ExecuteSelection();

            foreach(Individual i in p)
            {
                so.Write(i.ToReadableFormat());
            }
        }
コード例 #2
0
ファイル: InitialTest.cs プロジェクト: Szuhanyi/playground
 public void ConstructionTest()
 {
     ServiceTestData td = ServiceTestData.getInstance();
     Population population = new Population();
     population.SetGenom(td.getMockInitialPopulation());
     Assert.AreEqual(td.GetPopulationCount(), population.getPopulationCount());
 }
コード例 #3
0
ファイル: UnitTest1.cs プロジェクト: Szuhanyi/playground
 public void FastNonDominatedSortTest()
 {
     Nsga2 alg = new Nsga2();
     Population pop = new Population();
     List<TestData> list = new List<TestData>();
     List<double> value = new List<double>();
     list.Add(new TestData(value, 0));
 }
コード例 #4
0
ファイル: TestPopulation.cs プロジェクト: Szuhanyi/playground
        public void MockDataTest()
        {
            ServiceTestData svd = ServiceTestData.getInstance();
            Population p = new Population();
            p.SetGenom(svd.getMockInitialPopulation());

            Assert.AreEqual(svd.GetPopulationCount(), p.getPopulationCount());
            ServiceTestFunctions tf = ServiceTestFunctions.GetInstance();
            foreach(Individual i in p)
            {
                Assert.AreEqual(tf.GetDecisionVariablesCount(), i.DecisionVariables.Count);
            }
        }
コード例 #5
0
ファイル: Population.cs プロジェクト: Szuhanyi/playground
 /*
  * Returns a new population, which is created by concatenating the two
  * given parameters.
  * */
 public Population Concat(Population p2)
 {
     Population p3 = new Population();
     foreach (Individual i in this)
     {
         p3.Add(i);
     }
     if (p2 != null) {
         foreach (Individual i in p2)
         {
             p3.Add(i);
         }
     }
     return p3;
 }
コード例 #6
0
ファイル: TestPopulation.cs プロジェクト: Szuhanyi/playground
        public void PopulationTest()
        {
            Population pop = new Population();

            Assert.AreEqual(0, pop.getPopulationCount());

            ServiceTestData td = ServiceTestData.getInstance();
            pop.SetGenom(td.getMockInitialPopulation(10));
            Assert.AreEqual(td.GetPopulationCount(), pop.getPopulationCount());

            Population pop2 = new Population();
            pop2.SetGenom(td.getMockInitialPopulation());
            Population pop3 = pop.Concat(pop2);
            Assert.AreEqual(2 * td.GetPopulationCount(),
                pop3.getPopulationCount());
        }
コード例 #7
0
ファイル: TestPopulation.cs プロジェクト: Szuhanyi/playground
        public void GenerationTest()
        {
            ServiceTestData svd = ServiceTestData.getInstance();
            Population p = new Population();
            p.SetGenom(svd.getMockInitialPopulation());

            p.NextGeneration();

            p.ConcatenateTwoExistingPopulations();
            Assert.AreEqual(2 * svd.GetPopulationCount(), p.getPopulationCount());

            ServiceOutput so = ServiceOutput.GetInstance();
            so.SetOutput(new OutputStd());
            //
            //so.SetOutput(new OutputFile())
            so.Write(p.ToReadableFormat());
            Console.WriteLine("asdf");
        }
コード例 #8
0
ファイル: Nsga2.cs プロジェクト: Szuhanyi/playground
        public void Rank()
        {
            ranking = new List<Population>();
            ranking.Add(new Population());
            foreach (Individual p in population)
            {
                p.DominatedBy = 0;
                foreach (Individual q in population)
                {
                    if (!p.Equals(q))
                    {
                        if (p.Dominates(q))
                        {
                            p.AddToDominatedSet(q);
                        }
                        else
                        {
                            if (q.Dominates(p))
                            {
                                p.DominatedBy++;
                            }
                        }
                    }

                }
                if(p.DominatedBy == 0)
                {
                    ranking[0].Add(p);
                }
            }

            int i = 0;
            Population front = ranking[0];
            // do until nextFront has elements
            // else, there are no other fronts

            while (front.getPopulationCount() > 0)
            {
                var nextFront = new Population();
                foreach(Individual p in front)
                {
                    foreach(Individual q in p.getDominatedSet())
                    {
                        q.DominatedBy--;
                        if(q.getDominatedSet().getPopulationCount() <= 0)
                        {
                            nextFront.Add(q);
                            q.Fitness = i + 1;
                        }
                    }
                }
                i++;
                ranking.Add(nextFront);
                front = ranking.Last();
            }
            //int i = 0;
            //List<Solution> front = rankings.GetFront(i);
            //while (front.Count > 0)
            //{
            //    foreach (Solution p in front)
            //    {
            //        foreach (Solution q in p.DominatedSolutions)
            //        {
            //            q.DominationCount--;
            //            if (q.DominationCount == 0)
            //            {
            //                rankings.AddIndividual(i + 1, q);
            //            }
            //        }
            //    }
            //    i++;
            //    front = rankings.GetFront(i);
            //}

            // i hope this removes the empty (last) front
            ranking.Remove(front);
        }
コード例 #9
0
ファイル: Nsga2.cs プロジェクト: Szuhanyi/playground
 public void SetPopulation(Population p)
 {
     this.population = p;
 }
コード例 #10
0
ファイル: ServiceOutput.cs プロジェクト: Szuhanyi/playground
 internal void Write(Population population)
 {
     Write(population.ToReadableFormat());
 }
コード例 #11
0
ファイル: Simulator.cs プロジェクト: Szuhanyi/playground
 public void GenerateInitialPopulation(int populationCount)
 {
     population = new Population();
     ServiceTestData td = ServiceTestData.getInstance();
     population.SetGenom(td.getMockInitialPopulation(populationCount));
 }