示例#1
0
        public void GPNodeWriteAndRead()
        {
            var state       = new SimpleEvolutionState();
            var initializer = new GPInitializer();

            state.Initializer = initializer; // Ensure that our initializer is accessible

            var treeConstraints = new GPTreeConstraints();

            initializer.TreeConstraints = new List <GPTreeConstraints>();
            initializer.TreeConstraints.Add(treeConstraints); // Ensure that our constraints are accessible

            var nodeConstraints = new GPNodeConstraints();

            var rootType = new GPAtomicType("MyRootType");

            treeConstraints.TreeType = rootType;
            var root = new MyRootNode();
            var tree = new GPTree {
                Child = root
            };

            root.Parent      = tree;
            root.ArgPosition = 0; // This is the root, so there is only one position (0)
        }
示例#2
0
        public void GPIndividualWriteAndRead()
        {
            // First we'll set up a Fitness for the Individual
            var rand = new MersenneTwisterFast(0);

            // Initialize some required context
            var state       = new SimpleEvolutionState();
            var initializer = new GPInitializer();

            state.Initializer = initializer; // Required for GPTree.WriteTree(...)
            var constraints = new GPTreeConstraints {
                Name = "TestTreeConstraints"
            };
            //initializer.TreeConstraints
            var tree = new GPTree();

            var f = new KozaFitness();

            f.SetStandardizedFitness(null, float.MaxValue);

            const int n = 10;

            f.Trials = new List <double>(n);
            for (var i = 0; i < n; i++)
            {
                f.Trials.Add(rand.NextDouble());
            }

            // Now we can create and initialize the Individual
            var ind  = new GPIndividual();
            var ind2 = new GPIndividual(); // We'll read back into this instance

            ind.Trees = new GPTree[1];     // This is the set of genes

            ind.Trees[0] = new GPTree();

            ind.Fitness   = f;
            ind.Evaluated = true;

            using (var ms = new MemoryStream())
            {
                var writer = new BinaryWriter(ms);
                ind.WriteIndividual(null, writer);

                ms.Position = 0;
                var reader = new BinaryReader(ms);

                ind2.Fitness = new SimpleFitness();
                ind2.ReadIndividual(null, reader);

                Assert.IsTrue(ind.Fitness.EquivalentTo(ind2.Fitness));
                Assert.IsTrue(ind2.Fitness.IsIdeal);
                Assert.IsTrue(ind.Equals(ind2)); // Genetically equivalent

                Assert.AreEqual(ind.Trees.Length, ind2.Trees.Length);
            }
        }