public AdjustedNeuralNetworkPopulation Create(NeuralNetwork network, NeuralNetworkTest test, out AdjustedNeuralNetworkBodyFactory bodyFactory)
        {
            Contract.Requires(network != null);
            Contract.Requires(test != null);

            return DoCreate(network, test, out bodyFactory);
        }
        protected AdjusterLearningEpoch(NeuralNetwork network, NeuralNetworkTest test = null)
            : base(test)
        {
            Contract.Requires(network != null);

            Network = network;
        }
        public BackPropagationLearningEpoch(BackPropagationRule rule, NeuralNetwork network, NeuralNetworkTest test = null)
            : base(network, test)
        {
            Contract.Requires(network != null);
            Contract.Requires(rule != null);

            Rule = rule;
        }
        public LearningTestResult(NeuralNetworkTest test, NeuralNetworkTestResult result)
        {
            Contract.Requires(test != null);
            Contract.Requires(result != null);
            Contract.Requires(test.TestValueUnits.Length == result.Count);

            Test = test;
            Result = result;
        }
        public AdjustedNeuralNetworkPopulation Create(NeuralNetwork network, NeuralNetworkTest test)
        {
            Contract.Requires(network != null);
            Contract.Requires(test != null);

            AdjustedNeuralNetworkBodyFactory temp;
            var pop = DoCreate(network, test, out temp);
            return pop;
        }
 NeuralNetworkTestResult IParallelLearningStrategy.DoIteration(NeuralNetworkTest test)
 {
     CurrentTest = test;
     bool improved = process.Step();
     if (last == null || improved)
     {
         last = process.LastResult;
     }
     return last;
 }
Exemple #7
0
    public void InitInitialNetworks()
    {
        if (populationSize % 5 != 0)
        {
            populationSize = number_of_players_per_generation;
        }

        nets = new List <NeuralNetworkTest>();

        for (int i = 0; i < populationSize; i++)
        {
            NeuralNetworkTest net = new NeuralNetworkTest(layers);
            net.Mutate();
            nets.Add(net);
        }
    }
 private NeuralNetworkTestResult Step(NeuralNetworkTest test)
 {
     Debug.Assert(population != null);
     Debug.Assert(bodyFactory != null);
     bodyFactory.Parameters.Test = test;
     if (populationInitialized)
     {
         population.Step();
     }
     else
     {
         population.Initialize();
         populationInitialized = true;
     }
     Debug.Assert(bestBody != null);
     return bestBody.TestResult;
 }
 protected internal override void InitializeNewRun()
 {
     if (process == null) process = new Process(this); else process.Reset();
     CurrentTest = null;
     last = null;
 }
Exemple #10
0
 protected abstract NeuralNetworkTestResult Step(NeuralNetworkTest test);
 protected StochasticAdjusterLearningEpoch(NeuralNetwork network, NeuralNetworkTest test = null)
     : base(network, test)
 {
     Contract.Requires(network != null);
 }
        private AdjustedNeuralNetworkPopulation DoCreate(NeuralNetwork network, NeuralNetworkTest test, out AdjustedNeuralNetworkBodyFactory bodyFactory)
        {
            var parameters = new AdjustedTestableNetworkParameters
            {
                Test = test,
                Network = network,
                MutationStrength = MutationStrength
            };

            bodyFactory = new AdjustedNeuralNetworkBodyFactory(parameters);

            if (CrossoverChunkSize.HasValue)
            {
                bodyFactory.CrossoverChunkSize = CrossoverChunkSize.Value;
            }
            else
            {
                bodyFactory.CrossoverChunkSize = IntRange.CreateFixed(parameters.AdjustableItems.Length / 2 - 1);
            }

            bodyFactory.PointMutationChance = PointMutationChance;

            var newPop = new AdjustedNeuralNetworkPopulation();
            newPop.ChanceOfMigration = ChanceOfMigration;

            for (int gIdx = 0; gIdx < groupCount; gIdx++)
            {
                var group = new AdjustedNeuralNetworkGroup(bodyFactory, groupSize);
                if (SelectionStrategy != null) group.SelectionStrategy = SelectionStrategy;
                newPop.Groups.Add(group);
            }

            return newPop;
        }
Exemple #13
0
    public void StartGame()
    {
        if (gameRunning)
        {
            remainingAliveBirds = 0;
            foreach (Player p in players)
            {
                if (p.alive)
                {
                    remainingAliveBirds++;
                    remainingBirdsText.text = "Rem: " + remainingAliveBirds;
                }
            }

            if (remainingAliveBirds > 0)
            {
                return;
            }

            gameRunning = false;
        }
        else
        {
            startGameButton.enabled = false;
            startGameButton.gameObject.SetActive(false);
            timer       = 5.1f;
            gameRunning = true;

            if (generationNumber == 0)
            {
                InitInitialNetworks();
            }
            else
            {
                foreach (Player p in players)
                {
                    if (p.Score >= maxScore)
                    {
                        maxScore           = p.Score;
                        maxScoreGeneration = generationNumber;
                        maxScoreText.text  = "Max Score: " + maxScore + " in Generation: " + maxScoreGeneration;
                    }
                }

                nets.Sort();

                for (int i = 0; i < populationSize / 5; i++)
                {
                    stupidNets.Add(nets[i]);
                }

                for (int i = 0; i < 4 * populationSize / 5; i++)
                {
                    nets[i] = new NeuralNetworkTest(nets[i % (int)(populationSize / 5) + (4 * populationSize / 5)]);
                    nets[i].Mutate();

                    while (stupidNets.Contains(nets[i]))
                    {
                        nets[i].Mutate();
                    }
                }

                for (int i = 4 * populationSize / 5; i < populationSize; i++)
                {
                    nets[i] = new NeuralNetworkTest(nets[i]);
                }

                //// Randomize to add variations
                //for ( int i = 0; i < 10; i++)
                //{
                //    nets[i] = new NeuralNetworkTest(layers);
                //    //nets[i].Mutate();
                //}

                for (int i = 0; i < populationSize; i++)
                {
                    nets[i].SetFitness(0f);
                }
            }

            generationNumber++;
            ClearPipes();
            generationText.text = "Generation: " + generationNumber;
            CreatePlayerBodies();

            // ResetGame();
        }
    }
 NeuralNetworkTestResult IParallelLearningStrategy.DoIteration(NeuralNetworkTest test)
 {
     return Step(test);
 }
Exemple #15
0
 protected override NeuralNetworkTestResult Step(NeuralNetworkTest test)
 {
     Contract.Ensures(Contract.Result<NeuralNetworkTestResult>() != null);
     return null;
 }
 protected override NeuralNetworkTestResult Step(NeuralNetworkTest test)
 {
     return onlineTest.RunTest(Network,
         (result) =>
         {
             BackPropagate(result.GetErrors().First());
         }, 
         false);
 }
 public MAQLearningEpoch(NeuralNetwork network, NeuralNetworkTest test = null)
     : base(network, test)
 {
     Contract.Requires(network != null);
 } 
 NeuralNetworkTestResult IParallelLearningStrategy.DoIteration(NeuralNetworkTest test)
 {
     CurrentTest = test;
     compo.Step();
     return compo.BestProcess.LastResult;
 } 
 protected override NeuralNetworkTestResult Step(NeuralNetworkTest test)
 {
     process.Step();
     return process.LastResult;
 }
 public void Init(NeuralNetworkTest _net)
 {
     this.net    = _net;
     initialized = true;
 }
Exemple #21
0
 protected LearningEpoch(NeuralNetworkTest test = null)
 {
     if ((this.currentTest = test) != null) TestChanged();
 }