Beispiel #1
0
 /// <summary>
 ///     Creates a new <see cref="EvolutionaryDistanceCalculator{TProgram,TOutput}" /> with the given arguments.
 /// </summary>
 /// <param name="similarityMeasure">The similarity measure to guide the transformation search process.</param>
 /// <param name="primitiveSet">The primitives used for the crossover operator.</param>
 /// <param name="crossovers">The crossover operators to generate programs during the search.</param>
 /// <param name="mutations">The mutation operators to generate programs during the search.</param>
 public EvolutionaryDistanceCalculator(
     ISimilarityMeasure <TProgram> similarityMeasure,
     PrimitiveSet <TProgram> primitiveSet,
     IEnumerable <ICrossoverOperator <TProgram> > crossovers,
     IEnumerable <IMutationOperator <TProgram> > mutations)
 {
     this._similarityMeasure = similarityMeasure;
     this._primitiveSet      = primitiveSet;
     this._crossovers        = crossovers;
     this._mutations         = mutations;
 }
        /// <summary>
        ///     Creates a new <see cref="MathExpressionConverter" /> according to the given primitive set.
        /// </summary>
        /// <param name="primitives">The set containing the primitives that the converter can read from the expressions.</param>
        public MathExpressionConverter(PrimitiveSet <MathProgram> primitives)
        {
            var allPrimitives = new List <MathProgram>(primitives.Functions);

            allPrimitives.AddRange(primitives.Terminals);

            // stores info on all primitive labels
            foreach (var primitive in allPrimitives)
            {
                this._primitiveLabels.Add(primitive.Label, primitive);
            }

            // stores regex patterns for functions
            var rndLabel = DateTime.Now.ToString("yyyyMMMMddHHmmssfff");
            var dummy    = new Variable(rndLabel);

            foreach (var function in primitives.Functions.ToList())
            {
                var pattern = GetFunctionPattern(function, dummy);
                this._functionPatterns.Add(pattern, function);
            }
        }
Beispiel #3
0
 /// <summary>
 ///     Adds the functions and terminals in the given <see cref="PrimitiveSet{TProgram}" /> to this set.
 /// </summary>
 /// <param name="primitiveSet">The set containing the functions and terminals to be added to this set.</param>
 public void Add(PrimitiveSet <TProgram> primitiveSet)
 {
     this._terminals.AddRange(primitiveSet.Terminals);
     this._functions.AddRange(primitiveSet.Functions);
 }