Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/ArchitectureManipulators/SymbolicExpressionTreeArchitectureManipulator.cs @ 13042

Last change on this file since 13042 was 9834, checked in by bburlacu, 11 years ago

#1772: Manually merged HeuristicLab.Encodings.SymbolicExpressionTreeEncoding project from the trunk to the branch.

File size: 3.5 KB
RevLine 
[3294]1#region License Information
2/* HeuristicLab
[9456]3 * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
[3294]4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
[4722]22using HeuristicLab.Common;
[3294]23using HeuristicLab.Core;
24using HeuristicLab.Data;
25using HeuristicLab.Parameters;
26using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
27
[5499]28namespace HeuristicLab.Encodings.SymbolicExpressionTreeEncoding {
[3294]29  /// <summary>
30  /// Base class for architecture altering operators for symbolic expression trees.
31  /// </summary>
32  [StorableClass]
[9834]33  public abstract class SymbolicExpressionTreeArchitectureManipulator : TracingSymbolicExpressionTreeManipulator, ISymbolicExpressionTreeArchitectureManipulator {
[5499]34    private const string MaximumFunctionArgumentsParameterName = "MaximumFunctionArguments";
35    private const string MaximumFunctionDefinitionsParameterName = "MaximumFunctionDefinitions";
[3294]36    public override bool CanChangeName {
37      get { return false; }
38    }
[5499]39    #region parameter properties
40    public IValueLookupParameter<IntValue> MaximumFunctionDefinitionsParameter {
41      get { return (IValueLookupParameter<IntValue>)Parameters[MaximumFunctionDefinitionsParameterName]; }
[3294]42    }
[5499]43    public IValueLookupParameter<IntValue> MaximumFunctionArgumentsParameter {
44      get { return (IValueLookupParameter<IntValue>)Parameters[MaximumFunctionArgumentsParameterName]; }
[3294]45    }
[5499]46    #endregion
47    #region properties
48    public IntValue MaximumFunctionDefinitions {
49      get { return MaximumFunctionDefinitionsParameter.ActualValue; }
[3294]50    }
[5499]51    public IntValue MaximumFunctionArguments {
52      get { return MaximumFunctionArgumentsParameter.ActualValue; }
[3294]53    }
[5499]54    #endregion
[4722]55    [StorableConstructor]
56    protected SymbolicExpressionTreeArchitectureManipulator(bool deserializing) : base(deserializing) { }
57    protected SymbolicExpressionTreeArchitectureManipulator(SymbolicExpressionTreeArchitectureManipulator original, Cloner cloner) : base(original, cloner) { }
[3534]58    public SymbolicExpressionTreeArchitectureManipulator()
[3294]59      : base() {
[5499]60      Parameters.Add(new ValueLookupParameter<IntValue>(MaximumFunctionDefinitionsParameterName, "The maximal allowed number of automatically defined functions."));
61      Parameters.Add(new ValueLookupParameter<IntValue>(MaximumFunctionArgumentsParameterName, "The maximal allowed number of arguments of a automatically defined functions."));
[3294]62    }
63
[5510]64    protected override sealed void Manipulate(IRandom random, ISymbolicExpressionTree symbolicExpressionTree) {
[5499]65      ModifyArchitecture(random, symbolicExpressionTree, MaximumFunctionDefinitions, MaximumFunctionArguments);
[3294]66    }
67
68    public abstract void ModifyArchitecture(
69      IRandom random,
[5510]70      ISymbolicExpressionTree tree,
[3534]71      IntValue maxFunctionDefinitions,
[5499]72      IntValue maxFunctionArguments);
[3294]73  }
74}
Note: See TracBrowser for help on using the repository browser.