private PopulationGenome newGenome()
        {
            PopulationGenome genome = new PopulationGenome();

            genome.genes = new List<PopulationGene>();
            genome.fitness = 0;

            genome.adjustedFitness = 0;

            genome.network = new PopulationNetwork();
            genome.maxneuron = 0;

            genome.globalRank = 0;
            genome.mutationRates = new Dictionary<string, double>();
            genome.mutationRates.Add("connections", MutateConnectionsChance);

            genome.mutationRates.Add("link", LinkMutationChance);
            genome.mutationRates.Add("bias", BiasMutationChance);
            genome.mutationRates.Add("node", NodeMutationChance);
            genome.mutationRates.Add("enable", EnableMutationChance);
            genome.mutationRates.Add("disable", DisableMutationChance);
            genome.mutationRates.Add("step", StepSize);

            return genome;
        }
 private PopulationGenome basicGenome()
 {
     PopulationGenome genome = newGenome();
     int innovation = 1;
     genome.maxneuron = Inputs;
     mutate(genome);
     return genome;
 }
        private void GenerateNetwork(PopulationGenome genome)
        {
            PopulationNetwork network = new PopulationNetwork();
            network.neurons = new List<PopulationNeuron>();

            for(int i=0;i<Inputs;i++)
            {
                network.neurons.Add(newNeuron());
            }

            for(int o=0;o<Outputs;o++)
            {
                network.neurons.Add(newNeuron());
            }
        }