コード例 #1
0
        public void MutateRemove()
        {
            var genes = new List <Rule> {
                new DiagonalContentFilter(null, null)
            };

            Assert.IsTrue(TicTacToeTests.MutateRemove(genes));
            Assert.IsFalse(genes.Any());
        }
コード例 #2
0
        public void DisplayTest()
        {
            var geneSet   = TicTacToeTests.CreateGeneSet().ToList();
            var fitness   = new Fitness(1, 2, 3, 4);
            var candidate = new Chromosome <Rule, Fitness>(geneSet, fitness, Strategy.None);
            var watch     = Stopwatch.StartNew();

            TicTacToeTests.Display(candidate, watch);
        }
コード例 #3
0
        public void MutateSwapAdjacent()
        {
            var genes = new List <Rule> {
                new DiagonalContentFilter(null, null), new DiagonalOppositeFilter(null)
            };

            Assert.IsTrue(TicTacToeTests.MutateSwapAdjacent(genes));
            Assert.IsInstanceOfType(genes[0], typeof(DiagonalOppositeFilter));
            Assert.IsInstanceOfType(genes[1], typeof(DiagonalContentFilter));
        }
コード例 #4
0
        public void MutateAddTest()
        {
            var genes   = new List <Rule>();
            var geneSet = TicTacToeTests.CreateGeneSet();

            Assert.IsTrue(TicTacToeTests.MutateAdd(genes, geneSet));
            Assert.AreEqual(1, genes.Count);
            Assert.IsTrue(TicTacToeTests.MutateAdd(genes, geneSet));
            Assert.AreEqual(2, genes.Count);
        }
コード例 #5
0
        public void MutateReplace()
        {
            var genes = new List <Rule> {
                new DiagonalContentFilter(null, null)
            };
            var geneSet = new Rule[] { new DiagonalOppositeFilter(null) };

            Assert.IsTrue(TicTacToeTests.MutateReplace(genes, geneSet));
            Assert.AreEqual(1, genes.Count);
            Assert.IsInstanceOfType(genes[0], typeof(DiagonalOppositeFilter));
        }
コード例 #6
0
        public void GetFitnessForAllGamesTest()
        {
            var geneSet = new[]
            {
                new RuleMetadata((expectedContent, count) => new CenterFilter()),
            };
            var genes   = geneSet.SelectMany(g => g.CreateRules()).ToList();
            var fitness = TicTacToeTests.GetFitnessForAllGames(genes);

            Assert.AreEqual("100.0% Losses (65), 0.0% Ties (0), 0.0% Wins (0), 1 rules", fitness.ToString());
        }
コード例 #7
0
        public void MutateMoveTest()
        {
            var save = new List <Rule>
            {
                new DiagonalContentFilter(null, null),
                new DiagonalOppositeFilter(null),
                new RowOppositeFilter(null)
            };

            var genes = save.ToList();

            Assert.IsTrue(TicTacToeTests.MutateMove(genes));
            CollectionAssert.AreNotEqual(save, genes);
        }
コード例 #8
0
        public void GetMoveTest()
        {
            var geneSet = new[]
            {
                new RuleMetadata((expectedContent, count) => new CenterFilter()),
            };

            var genes = geneSet.SelectMany(g => g.CreateRules()).ToList();

            var board   = Enumerable.Range(1, 9).ToDictionary(i => i, i => new Square(i));
            var empties = board.Values.Where(v => v.Content == ContentType.Empty).ToArray();

            var move = TicTacToeTests.GetMove(genes, board, empties);

            Assert.IsNotNull(move);
            Assert.AreEqual(5, (int)move);
        }
コード例 #9
0
        public void CreateGeneTest()
        {
            var genes = TicTacToeTests.CreateGeneSet();

            Assert.AreEqual(35, genes.Length);
        }