#region License Information /* HeuristicLab * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL) * * This file is part of HeuristicLab. * * HeuristicLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * HeuristicLab is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HeuristicLab. If not, see . */ #endregion using System; using System.Collections.Generic; using HeuristicLab.Core; using HeuristicLab.GP.Interfaces; namespace HeuristicLab.GP.StructureIdentification { class EvaluatorSymbolTable : StorableBase { public const byte ADDITION = 1; public const byte AND = 2; public const byte AVERAGE = 3; public const byte CONSTANT = 4; public const byte COSINUS = 5; public const byte DIFFERENTIAL = 25; public const byte DIVISION = 6; public const byte EQU = 7; public const byte EXP = 8; public const byte GT = 9; public const byte IFTE = 10; public const byte LT = 11; public const byte LOG = 12; public const byte MULTIPLICATION = 13; public const byte NOT = 14; public const byte OR = 15; public const byte POWER = 16; public const byte SIGNUM = 17; public const byte SINUS = 18; public const byte SQRT = 19; public const byte SUBTRACTION = 20; public const byte TANGENS = 21; public const byte VARIABLE = 22; public const byte XOR = 23; public const byte UNKNOWN = 24; private static Dictionary staticTypes = new Dictionary(); // needs to be public for persistence mechanism (Activator.CreateInstance needs empty constructor) static EvaluatorSymbolTable() { staticTypes = new Dictionary(); staticTypes[typeof(Addition)] = ADDITION; staticTypes[typeof(And)] = AND; staticTypes[typeof(Average)] = AVERAGE; staticTypes[typeof(Constant)] = CONSTANT; staticTypes[typeof(Cosinus)] = COSINUS; staticTypes[typeof(Division)] = DIVISION; staticTypes[typeof(Equal)] = EQU; staticTypes[typeof(Exponential)] = EXP; staticTypes[typeof(GreaterThan)] = GT; staticTypes[typeof(IfThenElse)] = IFTE; staticTypes[typeof(LessThan)] = LT; staticTypes[typeof(Logarithm)] = LOG; staticTypes[typeof(Multiplication)] = MULTIPLICATION; staticTypes[typeof(Not)] = NOT; staticTypes[typeof(Or)] = OR; staticTypes[typeof(Power)] = POWER; staticTypes[typeof(Signum)] = SIGNUM; staticTypes[typeof(Sinus)] = SINUS; staticTypes[typeof(Sqrt)] = SQRT; staticTypes[typeof(Subtraction)] = SUBTRACTION; staticTypes[typeof(Tangens)] = TANGENS; staticTypes[typeof(Variable)] = VARIABLE; staticTypes[typeof(Xor)] = XOR; staticTypes[typeof(Differential)] = DIFFERENTIAL; } internal static byte MapFunction(IFunction function) { if(staticTypes.ContainsKey(function.GetType())) return staticTypes[function.GetType()]; else return UNKNOWN; } } }