Free cookie consent management tool by TermsFeed Policy Generator

Changeset 1908


Ignore:
Timestamp:
05/27/09 13:46:46 (15 years ago)
Author:
gkronber
Message:

Made configurable FunctionLibraryInjector the default and removed the specific function library injectors. #579 (Configurable FunctionLibraryInjector for GP.StructureIdenfication)

Location:
trunk/sources
Files:
2 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/HeuristicLab.GP.StructureIdentification.TimeSeries-3.3.csproj

    r1856 r1908  
    8383  <ItemGroup>
    8484    <Compile Include="AveragePercentageChangeEvaluator.cs" />
    85     <Compile Include="FunctionLibraryInjector.cs">
    86       <SubType>Code</SubType>
    87     </Compile>
    8885    <Compile Include="HeuristicLabGPTimeSeriesPlugin.cs" />
    8986    <Compile Include="OffspringSelectionGP.cs" />
  • trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/FunctionLibraryInjector.cs

    r1540 r1908  
    3232namespace HeuristicLab.GP.StructureIdentification {
    3333  public class FunctionLibraryInjector : OperatorBase {
     34    private const string FUNCTIONLIBRARY = "FunctionLibrary";
    3435    private const string TARGETVARIABLE = "TargetVariable";
    3536    private const string ALLOWEDFEATURES = "AllowedFeatures";
    36     protected const string FUNCTIONLIBRARY = "FunctionLibrary";
     37    private const string AUTOREGRESSIVE = "Autoregressive";
     38    private const string MINTIMEOFFSET = "MinTimeOffset";
     39    private const string MAXTIMEOFFSET = "MaxTimeOffset";
     40
     41    private const string DIFFERENTIALS_ALLOWED = "Differentials";
     42    private const string VARIABLES_ALLOWED = "Variables";
     43    private const string CONSTANTS_ALLOWED = "Constants";
     44    private const string ADDITION_ALLOWED = "Addition";
     45    private const string AVERAGE_ALLOWED = "Average";
     46    private const string AND_ALLOWED = "And";
     47    private const string COSINUS_ALLOWED = "Cosinus";
     48    private const string DIVISION_ALLOWED = "Division";
     49    private const string EQUAL_ALLOWED = "Equal";
     50    private const string EXPONENTIAL_ALLOWED = "Exponential";
     51    private const string GREATERTHAN_ALLOWED = "GreaterThan";
     52    private const string IFTHENELSE_ALLOWED = "IfThenElse";
     53    private const string LESSTHAN_ALLOWED = "LessThan";
     54    private const string LOGARTIHM_ALLOWED = "Logarithm";
     55    private const string MULTIPLICATION_ALLOWED = "Multiplication";
     56    private const string NOT_ALLOWED = "Not";
     57    private const string POWER_ALLOWED = "Power";
     58    private const string OR_ALLOWED = "Or";
     59    private const string SIGNUM_ALLOWED = "Signum";
     60    private const string SINUS_ALLOWED = "Sinus";
     61    private const string SQRT_ALLOWED = "SquareRoot";
     62    private const string SUBTRACTION_ALLOWED = "Subtraction";
     63    private const string TANGENS_ALLOWED = "Tangens";
     64    private const string XOR_ALLOWED = "Xor";
     65
    3766
    3867    public override string Description {
    39       get { return @"Injects a default function library for regression and classification problems."; }
     68      get { return @"Injects a configurable function library for regression and classification problems."; }
    4069    }
    4170
     
    4473      AddVariableInfo(new VariableInfo(TARGETVARIABLE, "The target variable", typeof(IntData), VariableKind.In));
    4574      AddVariableInfo(new VariableInfo(ALLOWEDFEATURES, "List of indexes of allowed features", typeof(ItemList<IntData>), VariableKind.In));
     75      AddVariableInfo(new Core.VariableInfo(AUTOREGRESSIVE, "Switch to turn on/off autoregressive modeling (wether to allow the target variable as input)", typeof(BoolData), Core.VariableKind.In));
     76      AddVariableInfo(new Core.VariableInfo(MINTIMEOFFSET, "Minimal time offset for all features", typeof(IntData), Core.VariableKind.In));
     77      AddVariableInfo(new Core.VariableInfo(MAXTIMEOFFSET, "Maximal time offset for all feature", typeof(IntData), Core.VariableKind.In));
    4678      AddVariableInfo(new VariableInfo(FUNCTIONLIBRARY, "Preconfigured default operator library", typeof(GPOperatorLibrary), VariableKind.New));
     79
     80      AddVariable(DIFFERENTIALS_ALLOWED, false);
     81      AddVariable(VARIABLES_ALLOWED, true);
     82      AddVariable(CONSTANTS_ALLOWED, true);
     83      AddVariable(ADDITION_ALLOWED, true);
     84      AddVariable(AVERAGE_ALLOWED, false);
     85      AddVariable(AND_ALLOWED, true);
     86      AddVariable(COSINUS_ALLOWED, true);
     87      AddVariable(DIVISION_ALLOWED, true);
     88      AddVariable(EQUAL_ALLOWED, true);
     89      AddVariable(EXPONENTIAL_ALLOWED, true);
     90      AddVariable(GREATERTHAN_ALLOWED, true);
     91      AddVariable(IFTHENELSE_ALLOWED, true);
     92      AddVariable(LESSTHAN_ALLOWED, true);
     93      AddVariable(LOGARTIHM_ALLOWED, true);
     94      AddVariable(MULTIPLICATION_ALLOWED, true);
     95      AddVariable(NOT_ALLOWED, true);
     96      AddVariable(POWER_ALLOWED, true);
     97      AddVariable(OR_ALLOWED, true);
     98      AddVariable(SIGNUM_ALLOWED, true);
     99      AddVariable(SINUS_ALLOWED, true);
     100      AddVariable(SQRT_ALLOWED, true);
     101      AddVariable(SUBTRACTION_ALLOWED, true);
     102      AddVariable(TANGENS_ALLOWED, true);
     103      AddVariable(XOR_ALLOWED, false);
     104    }
     105
     106    private void AddVariable(string name, bool allowed) {
     107      AddVariableInfo(new VariableInfo(name, name + " allowed", typeof(BoolData), Core.VariableKind.New));
     108      GetVariableInfo(name).Local = true;
     109      AddVariable(new Core.Variable(name, new BoolData(allowed)));
    47110    }
    48111
     
    53116      ItemList<IntData> allowedFeatures = GetVariableValue<ItemList<IntData>>(ALLOWEDFEATURES, scope, true);
    54117      int targetVariable = GetVariableValue<IntData>(TARGETVARIABLE, scope, true).Data;
    55 
    56       // remove the target-variable in case it occures in allowed features
    57       List<IntData> ts = allowedFeatures.FindAll(d => d.Data == targetVariable);
    58       foreach (IntData t in ts) allowedFeatures.Remove(t);
     118      int minTimeOffset = GetVariableValue<IntData>(MINTIMEOFFSET, scope, true).Data;
     119      int maxTimeOffset = GetVariableValue<IntData>(MAXTIMEOFFSET, scope, true).Data;
     120      bool autoregressive = GetVariableValue<BoolData>(AUTOREGRESSIVE, scope, true).Data;
     121
     122      if (autoregressive) {
     123        // make sure the target-variable occures in list of allowed features
     124        if (!allowedFeatures.Exists(d => d.Data == targetVariable)) allowedFeatures.Add(new IntData(targetVariable));
     125      } else {
     126        // remove the target-variable in case it occures in allowed features
     127        List<IntData> ts = allowedFeatures.FindAll(d => d.Data == targetVariable);
     128        foreach (IntData t in ts) allowedFeatures.Remove(t);
     129      }
    59130
    60131      variable = new StructId.Variable();
    61132      StructId.Constant constant = new StructId.Constant();
    62 
     133      StructId.Differential differential = new Differential();
    63134      StructId.Addition addition = new StructId.Addition();
    64135      StructId.And and = new StructId.And();
     
    93164      };
    94165      IFunction[] doubleFunctions = new IFunction[] {
     166        differential,
    95167        variable,
    96168        constant,
     
    136208
    137209      operatorLibrary = new GPOperatorLibrary();
    138       operatorLibrary.GPOperatorGroup.AddOperator(variable);
    139       operatorLibrary.GPOperatorGroup.AddOperator(constant);
    140       operatorLibrary.GPOperatorGroup.AddOperator(addition);
    141       operatorLibrary.GPOperatorGroup.AddOperator(average);
    142       operatorLibrary.GPOperatorGroup.AddOperator(and);
    143       operatorLibrary.GPOperatorGroup.AddOperator(cosinus);
    144       operatorLibrary.GPOperatorGroup.AddOperator(division);
    145       operatorLibrary.GPOperatorGroup.AddOperator(equal);
    146       operatorLibrary.GPOperatorGroup.AddOperator(exponential);
    147       operatorLibrary.GPOperatorGroup.AddOperator(greaterThan);
    148       operatorLibrary.GPOperatorGroup.AddOperator(ifThenElse);
    149       operatorLibrary.GPOperatorGroup.AddOperator(lessThan);
    150       operatorLibrary.GPOperatorGroup.AddOperator(logarithm);
    151       operatorLibrary.GPOperatorGroup.AddOperator(multiplication);
    152       operatorLibrary.GPOperatorGroup.AddOperator(not);
    153       operatorLibrary.GPOperatorGroup.AddOperator(power);
    154       operatorLibrary.GPOperatorGroup.AddOperator(or);
    155       operatorLibrary.GPOperatorGroup.AddOperator(signum);
    156       operatorLibrary.GPOperatorGroup.AddOperator(sinus);
    157       operatorLibrary.GPOperatorGroup.AddOperator(sqrt);
    158       operatorLibrary.GPOperatorGroup.AddOperator(subtraction);
    159       operatorLibrary.GPOperatorGroup.AddOperator(tangens);
    160       operatorLibrary.GPOperatorGroup.AddOperator(xor);
     210      ConditionalAddOperator(DIFFERENTIALS_ALLOWED, operatorLibrary, differential);
     211      ConditionalAddOperator(VARIABLES_ALLOWED, operatorLibrary, variable);
     212      ConditionalAddOperator(CONSTANTS_ALLOWED, operatorLibrary, constant);
     213      ConditionalAddOperator(ADDITION_ALLOWED, operatorLibrary, addition);
     214      ConditionalAddOperator(AVERAGE_ALLOWED, operatorLibrary, average);
     215      ConditionalAddOperator(AND_ALLOWED, operatorLibrary, and);
     216      ConditionalAddOperator(COSINUS_ALLOWED, operatorLibrary, cosinus);
     217      ConditionalAddOperator(DIVISION_ALLOWED, operatorLibrary, division);
     218      ConditionalAddOperator(EQUAL_ALLOWED, operatorLibrary, equal);
     219      ConditionalAddOperator(EXPONENTIAL_ALLOWED, operatorLibrary, exponential);
     220      ConditionalAddOperator(GREATERTHAN_ALLOWED, operatorLibrary, greaterThan);
     221      ConditionalAddOperator(IFTHENELSE_ALLOWED, operatorLibrary, ifThenElse);
     222      ConditionalAddOperator(LESSTHAN_ALLOWED, operatorLibrary, lessThan);
     223      ConditionalAddOperator(LOGARTIHM_ALLOWED, operatorLibrary, logarithm);
     224      ConditionalAddOperator(MULTIPLICATION_ALLOWED, operatorLibrary, multiplication);
     225      ConditionalAddOperator(NOT_ALLOWED, operatorLibrary, not);
     226      ConditionalAddOperator(POWER_ALLOWED, operatorLibrary, power);
     227      ConditionalAddOperator(OR_ALLOWED, operatorLibrary, or);
     228      ConditionalAddOperator(SIGNUM_ALLOWED, operatorLibrary, signum);
     229      ConditionalAddOperator(SINUS_ALLOWED, operatorLibrary, sinus);
     230      ConditionalAddOperator(SQRT_ALLOWED, operatorLibrary, sqrt);
     231      ConditionalAddOperator(SUBTRACTION_ALLOWED, operatorLibrary, subtraction);
     232      ConditionalAddOperator(TANGENS_ALLOWED, operatorLibrary, tangens);
     233      ConditionalAddOperator(XOR_ALLOWED, operatorLibrary, xor);
    161234
    162235      int[] allowedIndexes = new int[allowedFeatures.Count];
     
    165238      }
    166239
    167       variable.SetConstraints(allowedIndexes, 0, 0);
     240      variable.SetConstraints(allowedIndexes, minTimeOffset, maxTimeOffset);
     241      differential.SetConstraints(allowedIndexes, minTimeOffset, maxTimeOffset);
    168242
    169243      scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName(FUNCTIONLIBRARY), operatorLibrary));
     244
    170245      return null;
     246    }
     247
     248    private void ConditionalAddOperator(string condName, GPOperatorLibrary operatorLibrary, IOperator op) {
     249      if (GetVariableValue<BoolData>(condName, null, false).Data) operatorLibrary.GPOperatorGroup.AddOperator(op);
    171250    }
    172251
  • trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/HeuristicLab.GP.StructureIdentification-3.3.csproj

    r1894 r1908  
    8686    <Compile Include="Average.cs" />
    8787    <Compile Include="BakedTreeEvaluator.cs" />
    88     <Compile Include="ConfigurableFunctionLibraryInjector.cs" />
    8988    <Compile Include="Constant.cs" />
    9089    <Compile Include="AlgorithmBase.cs" />
  • trunk/sources/HeuristicLab.GP.StructureIdentification/3.3/StandardGP.cs

    r1906 r1908  
    142142
    143143    protected internal override IOperator CreateFunctionLibraryInjector() {
    144       ConfigurableFunctionLibraryInjector funLibInjector = new ConfigurableFunctionLibraryInjector();
     144      FunctionLibraryInjector funLibInjector = new FunctionLibraryInjector();
    145145      funLibInjector.GetVariableValue<BoolData>("Xor", null, false).Data = false;
    146146      funLibInjector.GetVariableValue<BoolData>("Average", null, false).Data = false;
Note: See TracChangeset for help on using the changeset viewer.