public void WhenPopulationIsInitialised_InitialiserIsRequestedFromIndividual_ShouldHaveCorrectName()
        {
            Population <byte> population = new Population <byte> ();

            population.Initialise(5, 1);

            Assert.AreEqual(InitialiserProvider.GetInitialiser <byte>().Name, population.Individuals [0].Initialiser.Name);
        }
        public void WhenIndividualIsInitialised_InitialiserIsRequestedFromIndividual_ShouldHaveCorrectName()
        {
            Individual <byte> individual = new Individual <byte> ();

            individual.Initialise(2);

            Assert.AreEqual(InitialiserProvider.GetInitialiser <byte>().Name, individual.Initialiser.Name);
        }
Example #3
0
        public void Setup()
        {
            ConfigurationProvider.Reset();

            InitialiserProvider.Reset();
            InitialiserContextProvider.Reset();
            MutationProvider.Reset();
        }
        public void WhenInitialiserIsOverloaded_RequestReturnsOverloadedInitialiser()
        {
            NewByteBasedGenomeInitialiser newByteInitialiser = new NewByteBasedGenomeInitialiser();

            InitialiserProvider.AddInitialiser(newByteInitialiser);

            var initialiser = InitialiserProvider.GetInitialiser <byte> ();

            Assert.AreEqual(newByteInitialiser.Name, initialiser.Name);
        }
 public void WhenInitialiserRequested_TypeDoesNotExist_ResultingInitialiserNotAvailableExceptionShouldGiveCorrectType()
 {
     try
     {
         InitialiserProvider.GetInitialiser <UIntPtr>();
     }
     catch (InitialiserNotAvailableException e) {
         Assert.AreEqual(typeof(UIntPtr), e.RequestedInitialiserType);
     }
 }
Example #6
0
        public void WhenMutationIsSetToVariance_Double_CheckedOverflow_MutationLessThanMinFloorAtMin()
        {
            var population = new Population <double> ();

            (InitialiserContextProvider.GetContext <double> () as DoubleBasedGenomeInitialiserContext).Min = 10d;
            (InitialiserContextProvider.GetContext <double> () as DoubleBasedGenomeInitialiserContext).Max = 110d;

            DoubleBasedSingleInitialiser initialiser = new DoubleBasedSingleInitialiser(
                (InitialiserContextProvider.GetContext <double> () as DoubleBasedGenomeInitialiserContext).Min);

            InitialiserProvider.AddInitialiser(initialiser);

            var genomeLength = 100000;

            population.Initialise(1, genomeLength);

            ConfigurationProvider.Mutation.AllowUncheckedVariance  = false;
            ConfigurationProvider.Mutation.ChanceOfMutation        = 1;
            ConfigurationProvider.Mutation.ContextMutationVariance = .1;
            ConfigurationProvider.Mutation.MutationMethod          = MutationConfiguration.MutationStyle.Variance;

            Mutator <double> mutator = MutationProvider.GetMutator <double> ();

            mutator.Mutate(population);

            int underflowCount = 0;

            population [0].Code.ForEach(i => {
                underflowCount +=
                    i == (InitialiserContextProvider.GetContext <double> () as DoubleBasedGenomeInitialiserContext).Min ? 1 : 0;
            });

            double acceptableMin = (double)genomeLength * ((double)4.5d / 10);
            double acceptableMax = (double)genomeLength * ((double)5.5d / 10);

            Assert.LessOrEqual(underflowCount, acceptableMax);
            Assert.GreaterOrEqual(underflowCount, acceptableMin);
        }
Example #7
0
        public void WhenMutationIsSetToVariance_Byte_UncheckedOverflow_MutationLessThanMinUnderflowToMax()
        {
            Population <byte> population = new Population <byte> ();

            (InitialiserContextProvider.GetContext <byte> () as ByteBasedGenomeInitialiserContext).Min = 0;
            (InitialiserContextProvider.GetContext <byte> () as ByteBasedGenomeInitialiserContext).Max = 100;

            ByteBasedSingleInitialiser initialiser = new ByteBasedSingleInitialiser(
                (InitialiserContextProvider.GetContext <byte> () as ByteBasedGenomeInitialiserContext).Min);

            InitialiserProvider.AddInitialiser(initialiser);

            var genomeLength = 1000;

            population.Initialise(1, genomeLength);

            ConfigurationProvider.Mutation.AllowUncheckedVariance  = true;
            ConfigurationProvider.Mutation.ChanceOfMutation        = 1;
            ConfigurationProvider.Mutation.ContextMutationVariance = .1;
            ConfigurationProvider.Mutation.MutationMethod          = MutationConfiguration.MutationStyle.Variance;

            Mutator <byte> mutator = MutationProvider.GetMutator <byte> ();

            mutator.Mutate(population);

            int overflowCount = 0;

            population [0].Code.ForEach(i => {
                overflowCount += i >= 90 ? 1 : 0;
            });

            double acceptableMin = (double)genomeLength * ((double)4.5d / 10);
            double acceptableMax = (double)genomeLength * ((double)5.5d / 10);

            Assert.LessOrEqual(overflowCount, acceptableMax);
            Assert.GreaterOrEqual(overflowCount, acceptableMin);
        }
        public void WhenInitialiserRequested_TypeDoesNotExist_InitialiserNotAvailableShouldBeThrown()
        {
            var initialiser = InitialiserProvider.GetInitialiser <UIntPtr> ();

            Assert.IsNotNull(initialiser);
        }
        public void WhenInitialiserRequested_TypeExists_InitialiserShouldReturn()
        {
            var initialiser = InitialiserProvider.GetInitialiser <byte> ();

            Assert.IsNotNull(initialiser);
        }
 public void TestSetup()
 {
     InitialiserProvider.Reset();
     InitialiserContextProvider.Reset();
 }