コード例 #1
0
        public void TestGPInicial()
        {
            GPSolutionDefinition sh            = new GPSolutionDefinition(config);
            SemanticaList        listaFormulas = CriaListaDefault(sh);
            SemanticaList        listaNumerica = CriaListaNumerica(sh);

            GPTemplate template = CreateTestTemplate(config, listaFormulas, listaNumerica);
            GPPool     pool     = new GPPool(config);

            Assert.IsTrue(config.poolSize > 0);
            Assert.IsTrue(config.elitismRange > 0);
            Assert.IsTrue(config.mutationRatePerc > 0);
            Assert.IsTrue(config.mutationRange > 0);
            Assert.IsTrue(config.poolSize > 0);

            pool.InitPool(template);


            Assert.IsTrue(pool.solutions.Count > 0);

            //randomizo valores iniciais para fazer ordenação
            Random rnd = new Random();

            for (int i = 0; i < pool.solutions.Count; i++)
            {
                GPSolution solution = pool.solutions[i];
                solution.fitnessResult = rnd.Next(1, 10000);
            }


            pool.SortFitness();
            for (int i = 1; i < pool.solutions.Count; i++)
            {
                Assert.IsTrue(pool.solutions[i - 1].fitnessResult >= pool.solutions[i].fitnessResult);
            }

            GPSolution sol1 = pool.solutions[1];
            GPSolution sol2 = pool.solutions[2];

            string splicedKey = sol1.SpliceWith(sol2);

            Assert.IsNotNull(splicedKey);

            string strOriginal = sol1.GetValue(splicedKey).ToString();

            sol1.Mutate(sol1.GetValue(splicedKey), splicedKey);
            string strMutated = sol1.GetValue(splicedKey).ToString();
            //Assert.IsFalse(strOriginal == strMutated,"Não mutou: "+strOriginal);

            GPSolution badSolution = pool.solutions[pool.solutions.Count - 1];

            pool.Mutate();
            Assert.IsFalse(pool.solutions.Contains(badSolution));
            Assert.IsTrue(pool.solutions.Count == config.poolSize, pool.solutions.Count + "<>" + config.poolSize);
        }
コード例 #2
0
        public void TestaGPCriacaoPelaLista()
        {
            GPPool pool = new GPPool(config);

            string listDefault = "default";
            GPSolutionDefinition definition    = CreateSampleDefinition(listDefault);
            SemanticaList        listaFormulas = CriaListaDefault(definition);
            SemanticaList        listSemantic  = definition.GetListByName(listDefault);

            listSemantic.maxLevels = 3;
            listSemantic.minLevels = 2;
            GPAbstractNode nodeRandom = listSemantic.CreateRandomNode(config, false);

            Assert.IsNotNull(nodeRandom);
            string toString = nodeRandom.ToString();

            Assert.IsTrue(nodeRandom.SizeLevel() >= listSemantic.minLevels && nodeRandom.SizeLevel() <= listSemantic.maxLevels, "SizeLevel:" + nodeRandom.SizeLevel());
        }