Beispiel #1
0
        /// <summary>
        /// Copy constructor.
        /// </summary>
        /// <param name="copyFrom"></param>
        public NeatParameters(NeatParameters copyFrom)
        {
            //joel
            noveltySearch = copyFrom.noveltySearch;
            noveltyHistogram = copyFrom.noveltyHistogram;
            noveltyFixed = copyFrom.noveltyFixed;
            noveltyFloat = copyFrom.noveltyFloat;
            histogramBins = copyFrom.histogramBins;

            populationSize = copyFrom.populationSize;

            pOffspringAsexual = copyFrom.pOffspringAsexual;
            pOffspringSexual = copyFrom.pOffspringSexual;
            pInterspeciesMating = copyFrom.pInterspeciesMating;

            pDisjointExcessGenesRecombined = copyFrom.pDisjointExcessGenesRecombined;

            pMutateConnectionWeights = copyFrom.pMutateConnectionWeights;
            pMutateAddNode = copyFrom.pMutateAddNode;
            pMutateAddModule = copyFrom.pMutateAddModule;
            pMutateAddConnection = copyFrom.pMutateAddConnection;
            pMutateDeleteConnection = copyFrom.pMutateDeleteConnection;
            pMutateDeleteSimpleNeuron = copyFrom.pMutateDeleteSimpleNeuron;

            // Copy the list.
            ConnectionMutationParameterGroupList = new ConnectionMutationParameterGroupList(copyFrom.ConnectionMutationParameterGroupList);

            compatibilityThreshold = copyFrom.compatibilityThreshold;
            compatibilityDisjointCoeff = copyFrom.compatibilityDisjointCoeff;
            compatibilityExcessCoeff = copyFrom.compatibilityExcessCoeff;
            compatibilityWeightDeltaCoeff = copyFrom.compatibilityWeightDeltaCoeff;

            elitismProportion = copyFrom.elitismProportion;
            selectionProportion = copyFrom.selectionProportion;

            targetSpeciesCountMin = copyFrom.targetSpeciesCountMin;
            targetSpeciesCountMax = copyFrom.targetSpeciesCountMax;

            pruningPhaseBeginComplexityThreshold = copyFrom.pruningPhaseBeginComplexityThreshold;
            pruningPhaseBeginFitnessStagnationThreshold = copyFrom.pruningPhaseBeginFitnessStagnationThreshold;
            pruningPhaseEndComplexityStagnationThreshold = copyFrom.pruningPhaseEndComplexityStagnationThreshold;

            speciesDropoffAge = copyFrom.speciesDropoffAge;

            connectionWeightRange = copyFrom.connectionWeightRange;
        }
Beispiel #2
0
        /// <summary>
        /// Default Constructor.
        /// </summary>
        public NeatParameters()
        {
            histogramBins = new List<int>();

            noveltySearch = false;
            noveltyHistogram = false;
            noveltyFixed = false;
            noveltyFloat = false;

            populationSize = DEFAULT_POPULATION_SIZE;
            pInitialPopulationInterconnections = DEFAULT_P_INITIAL_POPULATION_INTERCONNECTIONS;

            pOffspringAsexual = DEFAULT_P_OFFSPRING_ASEXUAL;
            pOffspringSexual = DEFAULT_P_OFFSPRING_SEXUAL;
            pInterspeciesMating = DEFAULT_P_INTERSPECIES_MATING;

            pDisjointExcessGenesRecombined = DEFAULT_P_DISJOINGEXCESSGENES_RECOMBINED;

            //			pMutateConnectionWeights = DEFAULT_P_MUTATE_CONNECTION_WEIGHTS;
            //			pMutateAddNode = DEFAULT_P_MUTATE_ADD_NODE;
            //			pMutateAddConnection = DEFAULT_P_MUTATE_ADD_CONNECTION;
            //			pMutateDeleteConnection = DEFAULT_P_MUTATE_DELETE_CONNECTION;
            //			pMutateDeleteSimpleNeuron = DEFAULT_P_MUTATE_DELETE_SIMPLENEURON;

            //----- High level mutation proportions
            pMutateConnectionWeights	= DEFAULT_P_MUTATE_CONNECTION_WEIGHTS;
            pMutateAddNode = DEFAULT_P_MUTATE_ADD_NODE;
            pMutateAddModule = DEFAULT_P_MUTATE_ADD_MODULE;
            pMutateAddConnection = DEFAULT_P_MUTATE_ADD_CONNECTION;
            pMutateDeleteConnection		= DEFAULT_P_MUTATE_DELETE_CONNECTION;
            pMutateDeleteSimpleNeuron	= DEFAULT_P_MUTATE_DELETE_SIMPLENEURON;

            //----- Build a default ConnectionMutationParameterGroupList.
            ConnectionMutationParameterGroupList = new ConnectionMutationParameterGroupList();
            ConnectionMutationParameterGroupList.Add(new ConnectionMutationParameterGroup(0.125, ConnectionPerturbationType.JiggleEven, ConnectionSelectionType.Proportional, 0.5, 0, 0.05, 0.0));
            ConnectionMutationParameterGroupList.Add(new ConnectionMutationParameterGroup(0.125, ConnectionPerturbationType.JiggleEven, ConnectionSelectionType.Proportional, 0.1, 0, 0.05, 0.0));
            ConnectionMutationParameterGroupList.Add(new ConnectionMutationParameterGroup(0.125, ConnectionPerturbationType.JiggleEven, ConnectionSelectionType.FixedQuantity, 0.0, 1, 0.05, 0.0));
            ConnectionMutationParameterGroupList.Add(new ConnectionMutationParameterGroup(0.5, ConnectionPerturbationType.Reset, ConnectionSelectionType.Proportional, 0.1, 0, 0.0, 0.0));
            ConnectionMutationParameterGroupList.Add(new ConnectionMutationParameterGroup(0.125, ConnectionPerturbationType.Reset, ConnectionSelectionType.FixedQuantity, 0.0, 1, 0.0, 0.0));

            //-----
            compatibilityThreshold = DEFAULT_COMPATIBILITY_THRESHOLD;
            compatibilityDisjointCoeff = DEFAULT_COMPATIBILITY_DISJOINT_COEFF;
            compatibilityExcessCoeff = DEFAULT_COMPATIBILITY_EXCESS_COEFF;
            compatibilityWeightDeltaCoeff = DEFAULT_COMPATIBILITY_WEIGHTDELTA_COEFF;

            elitismProportion = DEFAULT_ELITISM_PROPORTION;
            selectionProportion = DEFAULT_SELECTION_PROPORTION;

            targetSpeciesCountMin = DEFAULT_TARGET_SPECIES_COUNT_MIN;
            targetSpeciesCountMax = DEFAULT_TARGET_SPECIES_COUNT_MAX;

            pruningPhaseBeginComplexityThreshold = DEFAULT_PRUNINGPHASE_BEGIN_COMPLEXITY_THRESHOLD;
            pruningPhaseBeginFitnessStagnationThreshold = DEFAULT_PRUNINGPHASE_BEGIN_FITNESS_STAGNATION_THRESHOLD;
            pruningPhaseEndComplexityStagnationThreshold = DEFAULT_PRUNINGPHASE_END_COMPLEXITY_STAGNATION_THRESHOLD;

            speciesDropoffAge = DEFAULT_SPECIES_DROPOFF_AGE;

            connectionWeightRange = DEFAULT_CONNECTION_WEIGHT_RANGE;

            //DAVID
            activationProbabilities = new double[4];
            activationProbabilities[0] = DEFAULT_ACTIVATION_PROBABILITY;
            activationProbabilities[1] = 0;
            activationProbabilities[2] = 0;
            activationProbabilities[3] = 0;
        }