Changeset 2216 for branches/GP-Refactoring-713
- Timestamp:
- 07/30/09 19:41:58 (16 years ago)
- Location:
- branches/GP-Refactoring-713/sources
- Files:
-
- 6 added
- 41 edited
- 16 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/BooleanTreeInterpreter.cs
r2174 r2216 24 24 using System.Linq; 25 25 using System.Text; 26 using HeuristicLab.DataAnalysis;27 26 using HeuristicLab.Core; 28 27 using System.Xml; 29 28 using System.Diagnostics; 30 29 using HeuristicLab.Data; 30 using HeuristicLab.GP.Interfaces; 31 using HeuristicLab.DataAnalysis; 31 32 32 33 namespace HeuristicLab.GP.Boolean { … … 34 35 private const double EPSILON = 0.00001; 35 36 private Dataset dataset; 36 private List<LightWeightFunction> expression;37 private IFunctionTree tree; 37 38 private int targetVariable; 38 39 private int currentRow; 39 private int pc;40 40 41 public void Reset(Dataset dataset, BakedFunctionTree tree, int targetVariable) {41 public void Reset(Dataset dataset, IFunctionTree tree, int targetVariable) { 42 42 this.dataset = dataset; 43 this. expression = tree.LinearRepresentation;43 this.tree = tree; 44 44 this.targetVariable = targetVariable; 45 45 } … … 48 48 int errors = 0; 49 49 for (int i = start; i < end; i++) { 50 pc = 0;51 50 currentRow = i; 52 int result = Step( ) ? 1 : 0;51 int result = Step(tree) ? 1 : 0; 53 52 if (Math.Abs(result - dataset.GetValue(i, targetVariable)) > EPSILON) errors++; 54 53 } … … 56 55 } 57 56 58 internal bool Step() { 59 LightWeightFunction curFun = expression[pc++]; 60 int symbol = SymbolTable.MapFunction(curFun.functionType); 57 internal bool Step(IFunctionTree t) { 58 int symbol = SymbolTable.MapFunction(t.Function); 61 59 switch (symbol) { 62 case SymbolTable.AND: return Step() & Step(); 63 case SymbolTable.OR: return Step() | Step(); 64 case SymbolTable.NOT: return !Step(); 65 case SymbolTable.XOR: return Step() ^ Step(); 66 case SymbolTable.NAND: return !(Step() & Step()); 67 case SymbolTable.NOR: return !(Step() | Step()); 68 case SymbolTable.VARIABLE: 69 return dataset.GetValue(currentRow, (int)curFun.localData[0]) != 0.0; 60 case SymbolTable.AND: return Step(t.SubTrees[0]) && Step(t.SubTrees[1]); 61 case SymbolTable.OR: return Step(t.SubTrees[0]) || Step(t.SubTrees[1]); 62 case SymbolTable.NOT: return !Step(t.SubTrees[0]); 63 case SymbolTable.XOR: return Step(t.SubTrees[0]) ^ Step(t.SubTrees[1]); 64 case SymbolTable.NAND: return !(Step(t.SubTrees[0]) && Step(t.SubTrees[1])); 65 case SymbolTable.NOR: return !(Step(t.SubTrees[0]) || Step(t.SubTrees[1])); 66 case SymbolTable.VARIABLE: { 67 var varNode = (VariableFunctionTree)t; 68 int index = dataset.GetVariableIndex(varNode.VariableName); 69 return !IsAlmost(dataset.GetValue(currentRow, index), 0.0); 70 } 70 71 case SymbolTable.UNKNOWN: 71 72 default: 72 throw new InvalidOperationException(curFun.functionType.ToString()); 73 throw new UnknownFunctionException(t.Function.Name); 74 } 75 } 73 76 74 } 77 private bool IsAlmost(double x, double y) { 78 return Math.Abs(x - y) < EPSILON; 75 79 } 76 80 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/Evaluator.cs
r1529 r2216 26 26 using HeuristicLab.Core; 27 27 using HeuristicLab.Data; 28 using HeuristicLab.GP.Interfaces; 28 29 using HeuristicLab.DataAnalysis; 29 30 … … 32 33 public Evaluator() 33 34 : base() { 34 AddVariableInfo(new VariableInfo("FunctionTree", "The function tree representing the ant", typeof(BakedFunctionTree), VariableKind.In));35 AddVariableInfo(new VariableInfo("FunctionTree", "The function tree representing the boolean expression to evaluate", typeof(IGeneticProgrammingModel), VariableKind.In)); 35 36 AddVariableInfo(new VariableInfo("Dataset", "The boolean dataset (values 0.0 = false, 1.0=true)", typeof(Dataset), VariableKind.In)); 36 37 AddVariableInfo(new VariableInfo("TargetVariable", "Index of the column of the dataset that holds the target variable", typeof(IntData), VariableKind.In)); … … 41 42 42 43 public override IOperation Apply(IScope scope) { 43 BakedFunctionTree tree = GetVariableValue<BakedFunctionTree>("FunctionTree", scope, true);44 IGeneticProgrammingModel gpModel = GetVariableValue<IGeneticProgrammingModel>("FunctionTree", scope, true); 44 45 Dataset dataset = GetVariableValue<Dataset>("Dataset", scope, true); 45 46 int targetVariable = GetVariableValue<IntData>("TargetVariable", scope, true).Data; … … 48 49 49 50 BooleanTreeInterpreter interpreter = new BooleanTreeInterpreter(); 50 interpreter.Reset(dataset, tree, targetVariable);51 interpreter.Reset(dataset, gpModel.FunctionTree, targetVariable); 51 52 int errors = interpreter.GetNumberOfErrors(start, end); 52 53 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/FunctionLibraryInjector.cs
r2202 r2216 27 27 using HeuristicLab.Data; 28 28 using HeuristicLab.DataAnalysis; 29 using HeuristicLab.Constraints; 29 using HeuristicLab.GP.Interfaces; 30 using HeuristicLab.GP.SantaFe; 30 31 31 32 namespace HeuristicLab.GP.Boolean { 32 public class FunctionLibraryInjector : OperatorBase { 33 private const string TARGETVARIABLE = "TargetVariable"; 34 private const string OPERATORLIBRARY = "FunctionLibrary"; 35 36 private FunctionLibrary operatorLibrary; 37 private Variable variable; 38 33 public class FunctionLibraryInjector : FunctionLibraryInjectorBase { 39 34 public override string Description { 40 35 get { return @"Injects a function library for boolean logic."; } … … 43 38 public FunctionLibraryInjector() 44 39 : base() { 45 AddVariableInfo(new VariableInfo(TARGETVARIABLE, "The target variable", typeof(IntData), VariableKind.In));46 AddVariableInfo(new VariableInfo(OPERATORLIBRARY, "Preconfigured default operator library", typeof(FunctionLibrary), VariableKind.New));47 40 } 48 41 49 public override IOperation Apply(IScope scope) { 50 int targetVariable = GetVariableValue<IntData>(TARGETVARIABLE, scope, true).Data; 51 52 InitDefaultOperatorLibrary(); 53 54 scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName(OPERATORLIBRARY), operatorLibrary)); 55 return null; 56 } 57 58 private void InitDefaultOperatorLibrary() { 42 protected override FunctionLibrary CreateFunctionLibrary() { 59 43 And and = new And(); 60 44 Or or = new Or(); 61 //Not not = new Not();45 Not not = new Not(); 62 46 Nand nand = new Nand(); 63 47 Nor nor = new Nor(); 64 //Xor xor = new Xor();65 variable = new HeuristicLab.GP.Boolean.Variable();48 Xor xor = new Xor(); 49 Variable variable = new Variable(); 66 50 67 51 IFunction[] allFunctions = new IFunction[] { 68 52 and, 69 53 or, 70 //not,54 not, 71 55 nand, 72 56 nor, 73 //xor,57 xor, 74 58 variable 75 59 }; … … 77 61 SetAllowedSubOperators(and, allFunctions); 78 62 SetAllowedSubOperators(or, allFunctions); 79 //SetAllowedSubOperators(not, allFunctions);63 SetAllowedSubOperators(not, allFunctions); 80 64 SetAllowedSubOperators(nand, allFunctions); 81 65 SetAllowedSubOperators(nor, allFunctions); 82 //SetAllowedSubOperators(xor, allFunctions);66 SetAllowedSubOperators(xor, allFunctions); 83 67 84 operatorLibrary = new FunctionLibrary(); 85 operatorLibrary.FunctionGroup.AddFunction(and); 86 operatorLibrary.FunctionGroup.AddFunction(or); 87 //operatorLibrary.GPOperatorGroup.AddOperator(not); 88 operatorLibrary.FunctionGroup.AddFunction(nand); 89 operatorLibrary.FunctionGroup.AddFunction(nor); 90 //operatorLibrary.GPOperatorGroup.AddOperator(xor); 91 operatorLibrary.FunctionGroup.AddFunction(variable); 92 } 93 94 private void SetAllowedSubOperators(IFunction f, IFunction[] gs) { 95 foreach (IConstraint c in f.Constraints) { 96 if (c is SubOperatorTypeConstraint) { 97 SubOperatorTypeConstraint typeConstraint = c as SubOperatorTypeConstraint; 98 typeConstraint.Clear(); 99 foreach (IFunction g in gs) { 100 typeConstraint.AddOperator(g); 101 } 102 } else if (c is AllSubOperatorsTypeConstraint) { 103 AllSubOperatorsTypeConstraint typeConstraint = c as AllSubOperatorsTypeConstraint; 104 typeConstraint.Clear(); 105 foreach (IFunction g in gs) { 106 typeConstraint.AddOperator(g); 107 } 108 } 109 } 68 var functionLibrary = new FunctionLibrary(); 69 functionLibrary.AddFunction(and); 70 functionLibrary.AddFunction(or); 71 functionLibrary.AddFunction(not); 72 functionLibrary.AddFunction(nand); 73 functionLibrary.AddFunction(nor); 74 functionLibrary.AddFunction(xor); 75 functionLibrary.AddFunction(variable); 76 return functionLibrary; 110 77 } 111 78 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/HeuristicLab.GP.Boolean-3.3.csproj
r1534 r2216 81 81 <ItemGroup> 82 82 <Compile Include="BooleanTreeInterpreter.cs" /> 83 <Compile Include="Not.cs" /> 84 <Compile Include="Xor.cs" /> 85 <Compile Include="Or.cs" /> 86 <Compile Include="Nand.cs" /> 87 <Compile Include="Nor.cs" /> 83 <Compile Include="Symbols\And.cs" /> 84 <Compile Include="Symbols\Nand.cs" /> 85 <Compile Include="Symbols\Nor.cs" /> 86 <Compile Include="Symbols\Not.cs" /> 87 <Compile Include="Symbols\Or.cs" /> 88 <Compile Include="Symbols\SymbolTable.cs" /> 89 <Compile Include="Symbols\Variable.cs" /> 90 <Compile Include="Symbols\VariableFunctionTree.cs" /> 91 <Compile Include="Symbols\Xor.cs" /> 88 92 <Compile Include="Evaluator.cs" /> 89 93 <Compile Include="FunctionLibraryInjector.cs" /> 90 94 <Compile Include="HeuristicLabGPBooleanPlugin.cs" /> 91 <Compile Include="And.cs" />92 <Compile Include="Variable.cs" />93 95 <Compile Include="Properties\AssemblyInfo.cs" /> 94 <Compile Include="SymbolTable.cs" />95 96 </ItemGroup> 96 97 <ItemGroup> … … 99 100 </ItemGroup> 100 101 <ItemGroup> 101 <ProjectReference Include="..\..\HeuristicLab.Constraints\3.2\HeuristicLab.Constraints-3.2.csproj">102 <Project>{FCD62C6F-4793-4593-AE9A-0BDCA256EE99}</Project>103 <Name>HeuristicLab.Constraints-3.2</Name>104 </ProjectReference>105 102 <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj"> 106 103 <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project> … … 114 111 <Project>{F473D9AF-3F09-4296-9F28-3C65118DAFFA}</Project> 115 112 <Name>HeuristicLab.Data-3.2</Name> 113 </ProjectReference> 114 <ProjectReference Include="..\..\HeuristicLab.GP.Interfaces\3.3\HeuristicLab.GP.Interfaces-3.3.csproj"> 115 <Project>{924B6BEA-9A99-40FE-9334-5C01E8D540EC}</Project> 116 <Name>HeuristicLab.GP.Interfaces-3.3</Name> 116 117 </ProjectReference> 117 118 <ProjectReference Include="..\..\HeuristicLab.GP\3.3\HeuristicLab.GP-3.3.csproj"> -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/HeuristicLabGPBooleanPlugin.cs
r1529 r2216 28 28 [ClassInfo(Name = "HeuristicLab.GP.Boolean-3.3")] 29 29 [PluginFile(Filename = "HeuristicLab.GP.Boolean-3.3.dll", Filetype = PluginFileType.Assembly)] 30 [Dependency(Dependency = "HeuristicLab.Constraints-3.2")]31 [Dependency(Dependency = "HeuristicLab.GP-3.3")]32 30 [Dependency(Dependency = "HeuristicLab.Core-3.2")] 33 31 [Dependency(Dependency = "HeuristicLab.Data-3.2")] 34 32 [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")] 33 [Dependency(Dependency = "HeuristicLab.GP-3.3")] 34 [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")] 35 35 [Dependency(Dependency = "HeuristicLab.Operators-3.2")] 36 36 [Dependency(Dependency = "HeuristicLab.Random-3.2")] -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/Symbols/And.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 22 31 23 namespace HeuristicLab.GP.Boolean{ 32 public sealed class And : FunctionBase { 33 34 public override string Description { 35 get { return ""; } 36 } 37 38 public And() 39 : base() { 40 MinArity = 2; MaxArity = 2; 41 } 24 public sealed class And : BinaryFunction { 42 25 } 43 26 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/Symbols/Nand.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 22 31 23 namespace HeuristicLab.GP.Boolean{ 32 public sealed class Nand : FunctionBase { 33 34 public override string Description { 35 get { return ""; } 36 } 37 38 public Nand() 39 : base() { 40 MinArity = 2; MaxArity = 2; 41 } 24 public sealed class Nand : BinaryFunction { 42 25 } 43 26 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/Symbols/Nor.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 31 22 namespace HeuristicLab.GP.Boolean{ 32 public sealed class Nor : FunctionBase { 33 34 public override string Description { 35 get { return ""; } 36 } 37 38 public Nor() 39 : base() { 40 MinArity = 2; MaxArity = 2; 41 } 23 public sealed class Nor : BinaryFunction { 42 24 } 43 25 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/Symbols/Not.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 31 22 namespace HeuristicLab.GP.Boolean{ 32 public sealed class Not : FunctionBase { 33 34 public override string Description { 35 get { return ""; } 36 } 37 38 public Not() 39 : base() { 40 MinArity = 1; MaxArity = 1; 41 } 23 public sealed class Not : UnaryFunction { 42 24 } 43 25 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/Symbols/Or.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 31 22 namespace HeuristicLab.GP.Boolean{ 32 public sealed class Or : FunctionBase { 33 34 public override string Description { 35 get { return ""; } 36 } 37 38 public Or() 39 : base() { 40 MinArity = 2; MaxArity = 2; 41 } 23 public sealed class Or : BinaryFunction { 42 24 } 43 25 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/Symbols/SymbolTable.cs
r2211 r2216 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Linq;25 using System.Text;26 24 using HeuristicLab.Core; 27 using System.Xml;25 using HeuristicLab.GP.Interfaces; 28 26 29 27 namespace HeuristicLab.GP.Boolean { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/Symbols/Variable.cs
r2211 r2216 26 26 using HeuristicLab.Core; 27 27 using System.Xml; 28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 28 using HeuristicLab.Operators; 31 29 using HeuristicLab.Random; 32 30 33 31 namespace HeuristicLab.GP.Boolean { 34 public sealed class Variable : FunctionBase { 35 public const string INDEX = "Variable"; 36 37 private int minIndex; 38 private int maxIndex; 39 40 public override string Description { 41 get { return ""; } 42 } 32 public sealed class Variable : Terminal { 33 public const string VARIABLENAME = "Variable"; 43 34 44 35 public Variable() 45 36 : base() { 46 AddVariableInfo(new VariableInfo(INDEX, "Index of the variable in the dataset representing this feature", typeof(ConstrainedIntData), VariableKind.None));47 GetVariableInfo(INDEX).Local = true;48 AddVariableInfo(new VariableInfo(INITIALIZATION, "Initialization operator for variables", typeof(CombinedOperator), VariableKind.None));49 GetVariableInfo(INITIALIZATION).Local = false;50 AddVariableInfo(new VariableInfo(MANIPULATION, "Manipulation operator for variables", typeof(CombinedOperator), VariableKind.None));51 GetVariableInfo(MANIPULATION).Local = false;52 53 MinArity = 0; MaxArity = 0;54 55 ConstrainedIntData variable = new ConstrainedIntData();56 AddVariable(new HeuristicLab.Core.Variable(INDEX, variable));57 minIndex = 0; maxIndex = 100;58 59 37 SetupInitialization(); 60 38 SetupManipulation(); 39 } 61 40 41 public override HeuristicLab.GP.Interfaces.IFunctionTree GetTreeNode() { 42 return new VariableFunctionTree(this); 62 43 } 63 44 … … 65 46 CombinedOperator combinedOp = new CombinedOperator(); 66 47 SequentialProcessor seq = new SequentialProcessor(); 67 UniformRandomizer indexRandomizer = new UniformRandomizer(); 68 indexRandomizer.Min = minIndex; 69 indexRandomizer.Max = maxIndex + 1; // uniform randomizer generates numbers in the range [min, max[ 70 indexRandomizer.GetVariableInfo("Value").ActualName = INDEX; 71 indexRandomizer.Name = "Index Randomizer"; 48 UniformItemChooser variableRandomizer = new UniformItemChooser(); 49 variableRandomizer.GetVariableInfo("Value").ActualName = VARIABLENAME; 50 variableRandomizer.GetVariableInfo("Values").ActualName = "InputVariables"; 51 variableRandomizer.Name = "Variable randomizer"; 72 52 73 53 combinedOp.OperatorGraph.AddOperator(seq); 74 combinedOp.OperatorGraph.AddOperator( indexRandomizer);54 combinedOp.OperatorGraph.AddOperator(variableRandomizer); 75 55 combinedOp.OperatorGraph.InitialOperator = seq; 76 seq.AddSubOperator( indexRandomizer);56 seq.AddSubOperator(variableRandomizer); 77 57 Initializer = combinedOp; 78 58 } … … 82 62 CombinedOperator combinedOp = new CombinedOperator(); 83 63 SequentialProcessor seq = new SequentialProcessor(); 84 UniformRandomizer indexRandomizer = new UniformRandomizer(); 85 indexRandomizer.Min = minIndex; 86 indexRandomizer.Max = maxIndex + 1; 87 indexRandomizer.GetVariableInfo("Value").ActualName = INDEX; 88 indexRandomizer.Name = "Index Randomizer"; 64 UniformItemChooser variableRandomizer = new UniformItemChooser(); 65 variableRandomizer.GetVariableInfo("Value").ActualName = VARIABLENAME; 66 variableRandomizer.GetVariableInfo("Values").ActualName = "InputVariables"; 67 variableRandomizer.Name = "Variable randomizer"; 89 68 90 69 combinedOp.OperatorGraph.AddOperator(seq); 91 combinedOp.OperatorGraph.AddOperator( indexRandomizer);70 combinedOp.OperatorGraph.AddOperator(variableRandomizer); 92 71 combinedOp.OperatorGraph.InitialOperator = seq; 93 seq.AddSubOperator( indexRandomizer);72 seq.AddSubOperator(variableRandomizer); 94 73 Manipulator = combinedOp; 95 }96 97 public void SetConstraints(int[] allowedIndexes) {98 //ConstrainedIntData index = GetVariableValue<ConstrainedIntData>(INDEX, null, false);99 Array.Sort(allowedIndexes);100 minIndex = allowedIndexes[0]; maxIndex = allowedIndexes[allowedIndexes.Length - 1];101 List<IConstraint> constraints = new List<IConstraint>();102 int start = allowedIndexes[0];103 int prev = start;104 for(int i = 1; i < allowedIndexes.Length; i++) {105 if(allowedIndexes[i] != prev + 1) {106 IntBoundedConstraint lastRange = new IntBoundedConstraint();107 lastRange.LowerBound = start;108 lastRange.LowerBoundEnabled = true;109 lastRange.LowerBoundIncluded = true;110 lastRange.UpperBound = prev;111 lastRange.UpperBoundEnabled = true;112 lastRange.UpperBoundIncluded = true;113 constraints.Add(lastRange);114 start = allowedIndexes[i];115 prev = start;116 }117 prev = allowedIndexes[i];118 }119 IntBoundedConstraint range = new IntBoundedConstraint();120 range.LowerBound = start;121 range.LowerBoundEnabled = true;122 range.LowerBoundIncluded = true;123 range.UpperBound = prev;124 range.UpperBoundEnabled = true;125 range.UpperBoundIncluded = true;126 constraints.Add(range);127 if(constraints.Count > 1) {128 OrConstraint or = new OrConstraint();129 foreach(IConstraint c in constraints) or.Clauses.Add(c);130 index.AddConstraint(or);131 } else {132 index.AddConstraint(constraints[0]);133 }134 135 SetupInitialization();136 SetupManipulation();137 74 } 138 75 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Boolean/3.3/Symbols/Xor.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 31 22 namespace HeuristicLab.GP.Boolean{ 32 public sealed class Xor : FunctionBase { 33 34 public override string Description { 35 get { return ""; } 36 } 37 38 public Xor() 39 : base() { 40 MinArity = 2; MaxArity = 2; 41 } 23 public sealed class Xor : BinaryFunction { 42 24 } 43 25 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Interfaces/3.3/HeuristicLab.GP.Interfaces-3.3.csproj
r2210 r2216 83 83 <SubType>Code</SubType> 84 84 </Compile> 85 <Compile Include="IFunctionTreeSerializer.cs" /> 85 86 <Compile Include="IGeneticProgrammingModel.cs" /> 86 87 <Compile Include="HeuristicLabGPInterfacesPlugin.cs" /> 87 88 <Compile Include="IFunction.cs" /> 88 89 <Compile Include="IFunctionTree.cs" /> 89 <Compile Include="IFunctionTreeExporter.cs" />90 90 <Compile Include="Properties\AssemblyInfo.cs" /> 91 91 </ItemGroup> -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.Interfaces/3.3/IFunctionTreeSerializer.cs
r2211 r2216 26 26 27 27 namespace HeuristicLab.GP.Interfaces { 28 public interface IFunctionTree Exporter {28 public interface IFunctionTreeSerializer { 29 29 string Name { get; } 30 30 string Export(IFunctionTree tree); 31 31 bool TryExport(IFunctionTree tree, out string exported); 32 IFunctionTree Import(string tree); 33 bool TryImport(string tree, out IFunctionTree importedTree); 32 34 } 33 35 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/AntInterpreter.cs
r1529 r2216 21 21 22 22 using System; 23 using System.Collections.Generic; 24 using System.Linq; 25 using System.Text; 26 using HeuristicLab.DataAnalysis; 27 using HeuristicLab.Core; 28 using System.Xml; 29 using System.Diagnostics; 23 using HeuristicLab.GP.Interfaces; 30 24 31 25 namespace HeuristicLab.GP.SantaFe { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/Evaluator.cs
r1529 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 22 using HeuristicLab.Core; 27 23 using HeuristicLab.Data; 28 using HeuristicLab. DataAnalysis;24 using HeuristicLab.GP.Interfaces; 29 25 30 26 namespace HeuristicLab.GP.SantaFe { … … 32 28 public Evaluator() 33 29 : base() { 34 AddVariableInfo(new VariableInfo("FunctionTree", "The function tree representing the ant", typeof(I FunctionTree), VariableKind.In));30 AddVariableInfo(new VariableInfo("FunctionTree", "The function tree representing the ant", typeof(IGeneticProgrammingModel), VariableKind.In)); 35 31 AddVariableInfo(new VariableInfo("FoodEaten", "Number of food items that the ant found", typeof(DoubleData), VariableKind.New | VariableKind.Out)); 36 32 } 37 33 38 34 public override IOperation Apply(IScope scope) { 39 I FunctionTree tree = GetVariableValue<IFunctionTree>("FunctionTree", scope, false);35 IGeneticProgrammingModel gpModel = GetVariableValue<IGeneticProgrammingModel>("FunctionTree", scope, false); 40 36 AntInterpreter interpreter = new AntInterpreter(); 41 37 interpreter.MaxTimeSteps = 600; 42 interpreter.Run( tree);38 interpreter.Run(gpModel.FunctionTree); 43 39 44 40 scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName("FoodEaten"), new DoubleData(interpreter.FoodEaten))); -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/FunctionLibraryInjector.cs
r2202 r2216 20 20 #endregion 21 21 22 using System; 23 using System.Collections.Generic; 24 using System.Text; 25 using System.Xml; 26 using HeuristicLab.Core; 27 using HeuristicLab.Data; 28 using HeuristicLab.DataAnalysis; 29 using HeuristicLab.Constraints; 22 using HeuristicLab.GP.Interfaces; 30 23 31 24 namespace HeuristicLab.GP.SantaFe { 32 public class FunctionLibraryInjector : OperatorBase { 33 private const string OPERATORLIBRARY = "FunctionLibrary"; 34 35 private FunctionLibrary operatorLibrary; 25 public class FunctionLibraryInjector : FunctionLibraryInjectorBase { 36 26 37 27 public override string Description { … … 41 31 public FunctionLibraryInjector() 42 32 : base() { 43 AddVariableInfo(new VariableInfo(OPERATORLIBRARY, "Preconfigured default operator library", typeof(FunctionLibrary), VariableKind.New));44 33 } 45 34 46 public override IOperation Apply(IScope scope) { 47 InitDefaultOperatorLibrary(); 48 scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName(OPERATORLIBRARY), operatorLibrary)); 49 return null; 50 } 51 52 private void InitDefaultOperatorLibrary() { 35 protected override FunctionLibrary CreateFunctionLibrary() { 36 FunctionLibrary funLib = new FunctionLibrary(); 53 37 IfFoodAhead ifFoodAhead = new IfFoodAhead(); 54 38 Prog2 prog2 = new Prog2(); … … 71 55 SetAllowedSubOperators(prog3, allFunctions); 72 56 73 operatorLibrary = new FunctionLibrary(); 74 operatorLibrary.FunctionGroup.AddFunction(ifFoodAhead); 75 operatorLibrary.FunctionGroup.AddFunction(prog2); 76 operatorLibrary.FunctionGroup.AddFunction(prog3); 77 operatorLibrary.FunctionGroup.AddFunction(move); 78 operatorLibrary.FunctionGroup.AddFunction(left); 79 operatorLibrary.FunctionGroup.AddFunction(right); 80 } 81 82 private void SetAllowedSubOperators(IFunction f, IFunction[] gs) { 83 foreach(IConstraint c in f.Constraints) { 84 if(c is SubOperatorTypeConstraint) { 85 SubOperatorTypeConstraint typeConstraint = c as SubOperatorTypeConstraint; 86 typeConstraint.Clear(); 87 foreach(IFunction g in gs) { 88 typeConstraint.AddOperator(g); 89 } 90 } else if(c is AllSubOperatorsTypeConstraint) { 91 AllSubOperatorsTypeConstraint typeConstraint = c as AllSubOperatorsTypeConstraint; 92 typeConstraint.Clear(); 93 foreach(IFunction g in gs) { 94 typeConstraint.AddOperator(g); 95 } 96 } 97 } 57 funLib.AddFunction(ifFoodAhead); 58 funLib.AddFunction(prog2); 59 funLib.AddFunction(prog3); 60 funLib.AddFunction(move); 61 funLib.AddFunction(left); 62 funLib.AddFunction(right); 63 return funLib; 98 64 } 99 65 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/HeuristicLab.GP.SantaFe-3.3.csproj
r1534 r2216 83 83 <Compile Include="AntInterpreter.cs" /> 84 84 <Compile Include="FunctionLibraryInjector.cs" /> 85 <Compile Include="Prog3.cs" />86 <Compile Include="Prog2.cs" />87 <Compile Include="IfFoodAhead.cs" />88 <Compile Include="Right.cs" />89 <Compile Include="Left.cs" />90 <Compile Include="Move.cs" />91 85 <Compile Include="HeuristicLabGPSantaFePlugin.cs" /> 92 86 <Compile Include="Properties\AssemblyInfo.cs" /> 93 87 <Compile Include="Evaluator.cs" /> 94 <Compile Include="SymbolTable.cs" /> 88 <Compile Include="Symbols\IfFoodAhead.cs" /> 89 <Compile Include="Symbols\Left.cs" /> 90 <Compile Include="Symbols\Move.cs" /> 91 <Compile Include="Symbols\Prog2.cs" /> 92 <Compile Include="Symbols\Prog3.cs" /> 93 <Compile Include="Symbols\Right.cs" /> 94 <Compile Include="Symbols\SymbolTable.cs" /> 95 95 </ItemGroup> 96 96 <ItemGroup> 97 <ProjectReference Include="..\..\HeuristicLab.Constraints\3.2\HeuristicLab.Constraints-3.2.csproj">98 <Project>{FCD62C6F-4793-4593-AE9A-0BDCA256EE99}</Project>99 <Name>HeuristicLab.Constraints-3.2</Name>100 </ProjectReference>101 97 <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj"> 102 98 <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project> 103 99 <Name>HeuristicLab.Core-3.2</Name> 104 100 </ProjectReference> 105 <ProjectReference Include="..\..\HeuristicLab.DataAnalysis\3.2\HeuristicLab.DataAnalysis-3.2.csproj">106 <Project>{7DD3A97A-56E9-462F-90E2-A351FE7AF5C2}</Project>107 <Name>HeuristicLab.DataAnalysis-3.2</Name>108 </ProjectReference>109 101 <ProjectReference Include="..\..\HeuristicLab.Data\3.2\HeuristicLab.Data-3.2.csproj"> 110 102 <Project>{F473D9AF-3F09-4296-9F28-3C65118DAFFA}</Project> 111 103 <Name>HeuristicLab.Data-3.2</Name> 104 </ProjectReference> 105 <ProjectReference Include="..\..\HeuristicLab.GP.Interfaces\3.3\HeuristicLab.GP.Interfaces-3.3.csproj"> 106 <Project>{924B6BEA-9A99-40FE-9334-5C01E8D540EC}</Project> 107 <Name>HeuristicLab.GP.Interfaces-3.3</Name> 112 108 </ProjectReference> 113 109 <ProjectReference Include="..\..\HeuristicLab.GP\3.3\HeuristicLab.GP-3.3.csproj"> -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/HeuristicLabGPSantaFePlugin.cs
r1529 r2216 28 28 [ClassInfo(Name = "HeuristicLab.GP.SantaFe-3.3")] 29 29 [PluginFile(Filename = "HeuristicLab.GP.SantaFe-3.3.dll", Filetype = PluginFileType.Assembly)] 30 [Dependency(Dependency = "HeuristicLab.Constraints-3.2")]31 [Dependency(Dependency = "HeuristicLab.GP-3.3")]32 30 [Dependency(Dependency = "HeuristicLab.Core-3.2")] 33 31 [Dependency(Dependency = "HeuristicLab.Data-3.2")] 32 [Dependency(Dependency = "HeuristicLab.GP-3.3")] 33 [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")] 34 34 [Dependency(Dependency = "HeuristicLab.DataAnalysis-3.2")] 35 35 [Dependency(Dependency = "HeuristicLab.Random-3.2")] -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/Symbols/IfFoodAhead.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 using HeuristicLab.Random;31 32 22 namespace HeuristicLab.GP.SantaFe { 33 public sealed class IfFoodAhead : FunctionBase { 34 35 public override string Description { 36 get { return ""; } 37 } 38 39 public IfFoodAhead() 40 : base() { 41 MinArity = 2; MaxArity = 2; 42 } 23 public sealed class IfFoodAhead : BinaryFunction { 43 24 } 44 25 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/Symbols/Left.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 using HeuristicLab.Random;31 32 22 namespace HeuristicLab.GP.SantaFe { 33 public sealed class Left : FunctionBase { 34 35 public override string Description { 36 get { return ""; } 37 } 38 39 public Left() 40 : base() { 41 MinArity = 0; MaxArity = 0; 42 } 23 public sealed class Left : Terminal { 43 24 } 44 25 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/Symbols/Move.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 using HeuristicLab.Random;31 32 22 namespace HeuristicLab.GP.SantaFe { 33 public sealed class Move : FunctionBase { 34 35 public override string Description { 36 get { return ""; } 37 } 38 39 public Move() 40 : base() { 41 MinArity = 0; MaxArity = 0; 42 } 23 public sealed class Move : Terminal { 43 24 } 44 25 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/Symbols/Prog2.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 using HeuristicLab.Random;31 22 32 23 namespace HeuristicLab.GP.SantaFe { 33 public sealed class Prog2 : FunctionBase { 34 35 public override string Description { 36 get { return ""; } 37 } 38 39 public Prog2() 40 : base() { 41 MinArity = 2; MaxArity = 2; 42 } 24 public sealed class Prog2 : BinaryFunction { 43 25 } 44 26 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/Symbols/Prog3.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 using HeuristicLab.Random;31 32 22 namespace HeuristicLab.GP.SantaFe { 33 23 public sealed class Prog3 : FunctionBase { 34 24 35 public override string Description {36 get { return ""; }37 }38 39 25 public Prog3() 40 26 : base() { 41 Min Arity = 3; MaxArity= 3;27 MinSubTrees = 3; MaxSubTrees = 3; 42 28 } 43 29 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/Symbols/Right.cs
r2211 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Text;25 using HeuristicLab.Data;26 using HeuristicLab.Core;27 using System.Xml;28 using HeuristicLab.Constraints;29 using HeuristicLab.DataAnalysis;30 using HeuristicLab.Random;31 32 22 namespace HeuristicLab.GP.SantaFe { 33 public sealed class Right : FunctionBase { 34 public override string Description { 35 get { return ""; } 36 } 37 38 public Right() 39 : base() { 40 MinArity = 0; MaxArity = 0; 41 } 23 public sealed class Right : Terminal { 42 24 } 43 25 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.SantaFe/3.3/Symbols/SymbolTable.cs
r2211 r2216 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Linq;25 using System.Text;26 24 using HeuristicLab.Core; 27 using System.Xml;25 using HeuristicLab.GP.Interfaces; 28 26 29 27 namespace HeuristicLab.GP.SantaFe { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/AccuracyEvaluator.cs
r1891 r2216 21 21 22 22 using System; 23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 23 using HeuristicLab.Core; 27 24 using HeuristicLab.Data; 28 using HeuristicLab.GP.StructureIdentification;29 25 using HeuristicLab.DataAnalysis; 30 26 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/ClassificationMeanSquaredErrorEvaluator.cs
r1891 r2216 21 21 22 22 using System; 23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 23 using HeuristicLab.Core; 27 24 using HeuristicLab.Data; 28 using HeuristicLab.GP.StructureIdentification;29 25 30 26 namespace HeuristicLab.GP.StructureIdentification.Classification { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/ConfusionMatrixEvaluator.cs
r1891 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 22 using HeuristicLab.Core; 27 23 using HeuristicLab.Data; 28 using HeuristicLab.GP.StructureIdentification;29 24 30 25 namespace HeuristicLab.GP.StructureIdentification.Classification { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/CrossValidation.cs
r1529 r2216 21 21 22 22 using System; 23 using System.Collections.Generic;24 using System.Text;25 using System.Xml;26 23 using HeuristicLab.Core; 27 24 using HeuristicLab.Data; 28 25 using HeuristicLab.DataAnalysis; 29 26 30 namespace HeuristicLab.GP.StructureIdentification.Classification 31 { 32 public class CrossValidation : OperatorBase 33 { 27 namespace HeuristicLab.GP.StructureIdentification.Classification { 28 public class CrossValidation : OperatorBase { 34 29 35 36 37 38 39 40 41 42 30 private const string DATASET = "Dataset"; 31 private const string NFOLD = "n-Fold"; 32 private const string TRAININGSAMPLESSTART = "TrainingSamplesStart"; 33 private const string TRAININGSAMPLESEND = "TrainingSamplesEnd"; 34 private const string VALIDATIONSAMPLESSTART = "ValidationSamplesStart"; 35 private const string VALIDATIONSAMPLESEND = "ValidationSamplesEnd"; 36 private const string TESTSAMPLESSTART = "TestSamplesStart"; 37 private const string TESTSAMPLESEND = "TestSamplesEnd"; 43 38 44 public override string Description 45 { 46 get { return @"TASK"; } 47 } 39 public override string Description { 40 get { return @"TASK"; } 41 } 48 42 49 public CrossValidation() 50 : base() 51 { 52 AddVariableInfo(new VariableInfo(DATASET, "The original dataset and the new datasets in the newly created subscopes", typeof(Dataset), VariableKind.In)); 53 AddVariableInfo(new VariableInfo(NFOLD, "Number of folds for the cross-validation", typeof(IntData), VariableKind.In)); 54 AddVariableInfo(new VariableInfo(TRAININGSAMPLESSTART, "The start of training samples in the original dataset and starts of training samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New)); 55 AddVariableInfo(new VariableInfo(TRAININGSAMPLESEND, "The end of training samples in the original dataset and ends of training samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New)); 56 AddVariableInfo(new VariableInfo(VALIDATIONSAMPLESSTART, "The start of validation samples in the original dataset and starts of validation samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New)); 57 AddVariableInfo(new VariableInfo(VALIDATIONSAMPLESEND, "The end of validation samples in the original dataset and ends of validation samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New)); 58 AddVariableInfo(new VariableInfo(TESTSAMPLESSTART, "The start of the test samples in the new datasets", typeof(IntData), VariableKind.New)); 59 AddVariableInfo(new VariableInfo(TESTSAMPLESEND, "The end of the test samples in the new datasets", typeof(IntData), VariableKind.New)); 60 } 43 public CrossValidation() 44 : base() { 45 AddVariableInfo(new VariableInfo(DATASET, "The original dataset and the new datasets in the newly created subscopes", typeof(Dataset), VariableKind.In)); 46 AddVariableInfo(new VariableInfo(NFOLD, "Number of folds for the cross-validation", typeof(IntData), VariableKind.In)); 47 AddVariableInfo(new VariableInfo(TRAININGSAMPLESSTART, "The start of training samples in the original dataset and starts of training samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New)); 48 AddVariableInfo(new VariableInfo(TRAININGSAMPLESEND, "The end of training samples in the original dataset and ends of training samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New)); 49 AddVariableInfo(new VariableInfo(VALIDATIONSAMPLESSTART, "The start of validation samples in the original dataset and starts of validation samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New)); 50 AddVariableInfo(new VariableInfo(VALIDATIONSAMPLESEND, "The end of validation samples in the original dataset and ends of validation samples in the new datasets", typeof(IntData), VariableKind.In | VariableKind.New)); 51 AddVariableInfo(new VariableInfo(TESTSAMPLESSTART, "The start of the test samples in the new datasets", typeof(IntData), VariableKind.New)); 52 AddVariableInfo(new VariableInfo(TESTSAMPLESEND, "The end of the test samples in the new datasets", typeof(IntData), VariableKind.New)); 53 } 61 54 62 55 public override IOperation Apply(IScope scope) { 63 56 Dataset origDataset = GetVariableValue<Dataset>(DATASET, scope, true); 64 57 int nFolds = GetVariableValue<IntData>(NFOLD, scope, true).Data; 65 if (nFolds < 2) throw new ArgumentException("The number of folds (nFolds) has to be >=2 for cross validation"); 58 if (nFolds < 2) throw new ArgumentException("The number of folds (nFolds) has to be >=2 for cross validation"); 66 59 int origTrainingSamplesStart = GetVariableValue<IntData>(TRAININGSAMPLESSTART, scope, true).Data; 67 60 int origTrainingSamplesEnd = GetVariableValue<IntData>(TRAININGSAMPLESEND, scope, true).Data; 68 61 int origValidationSamplesStart = GetVariableValue<IntData>(VALIDATIONSAMPLESSTART, scope, true).Data; 69 62 int origValidationSamplesEnd = GetVariableValue<IntData>(VALIDATIONSAMPLESEND, scope, true).Data; 70 int n =origDataset.Rows;71 int origTrainingSamples = (origTrainingSamplesEnd -origTrainingSamplesStart);72 int origValidationSamples = (origValidationSamplesEnd -origValidationSamplesStart);63 int n = origDataset.Rows; 64 int origTrainingSamples = (origTrainingSamplesEnd - origTrainingSamplesStart); 65 int origValidationSamples = (origValidationSamplesEnd - origValidationSamplesStart); 73 66 74 67 double percentTrainingSamples = origTrainingSamples / (double)(origValidationSamples + origTrainingSamples); … … 82 75 int newTestSamplesEnd = n; 83 76 84 for (int i = 0; i < nFolds; i++) {77 for (int i = 0; i < nFolds; i++) { 85 78 Scope childScope = new Scope(i.ToString()); 86 79 Dataset rotatedSet = new Dataset(); … … 106 99 } 107 100 108 private void RotateArray(double[] samples, int p) 109 { 110 Array.Reverse(samples, 0, p); 111 Array.Reverse(samples, p, samples.Length - p); 112 Array.Reverse(samples); 113 } 101 private void RotateArray(double[] samples, int p) { 102 Array.Reverse(samples, 0, p); 103 Array.Reverse(samples, p, samples.Length - p); 104 Array.Reverse(samples); 114 105 } 106 } 115 107 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/GPClassificationEvaluatorBase.cs
r1891 r2216 21 21 22 22 using System; 23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 23 using HeuristicLab.Core; 27 24 using HeuristicLab.Data; 28 using HeuristicLab.GP.StructureIdentification;29 25 using HeuristicLab.DataAnalysis; 30 26 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/HeuristicLabGPClassificationPlugin.cs
r2210 r2216 28 28 [ClassInfo(Name = "HeuristicLab.GP.StructureIdentification.Classification-3.3")] 29 29 [PluginFile(Filename = "HeuristicLab.GP.StructureIdentification.Classification-3.3.dll", Filetype = PluginFileType.Assembly)] 30 [Dependency(Dependency = "HeuristicLab.Constraints-3.2")]31 30 [Dependency(Dependency = "HeuristicLab.Core-3.2")] 32 31 [Dependency(Dependency = "HeuristicLab.Data-3.2")] -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/MulticlassModeller.cs
r1529 r2216 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Text;25 using System.Xml;26 24 using HeuristicLab.Core; 27 25 using HeuristicLab.Data; -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/MulticlassOneVsOneAnalyzer.cs
r2211 r2216 21 21 22 22 using System; 23 using System.Collections.Generic;24 using System.Text;25 using System.Xml;26 23 using HeuristicLab.Core; 27 24 using HeuristicLab.Data; 28 25 using HeuristicLab.DataAnalysis; 29 using HeuristicLab.GP.StructureIdentification;30 26 using HeuristicLab.GP.Interfaces; 31 27 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/OffspringSelectionGP.cs
r2161 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 22 using HeuristicLab.Core; 27 using System.Xml;28 using System.Diagnostics;29 using HeuristicLab.DataAnalysis;30 using HeuristicLab.Random;31 using HeuristicLab.Data;32 23 using HeuristicLab.Modeling; 33 24 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/ROCAnalyzer.cs
r1529 r2216 20 20 #endregion 21 21 22 using System;23 22 using System.Collections.Generic; 24 23 using System.Linq; 25 using System.Text;26 24 using HeuristicLab.Core; 27 25 using HeuristicLab.Data; 28 using HeuristicLab.DataAnalysis;29 26 30 27 … … 89 86 foreach (double key in classes.Keys) 90 87 classes[key].Sort(); 91 88 92 89 //calculate ROC Curve 93 90 foreach (double key in classes.Keys) { … … 133 130 } 134 131 } 135 136 137 132 myAucValues.Add(new DoubleData(bestAUC)); 133 myRocValues.Add(Convert(bestROC)); 134 138 135 } else { //last class 139 136 actNegatives = negatives.Where<double>(value => value > classes[positiveClassKey].Min<double>()).ToList<double>(); … … 158 155 159 156 actTP = positives.Count<double>(value => minThreshold <= value && value <= negatives.Max<double>()); 160 actFP = negatives.Count<double>(value => minThreshold <= value 157 actFP = negatives.Count<double>(value => minThreshold <= value); 161 158 //add point (1,TPR) for AUC 'correct' calculation 162 159 roc.Add(new KeyValuePair<double, double>(1, actTP / positives.Count)); … … 222 219 223 220 //stop calculation if truePositiveRate == 0 => straight line with y=0 & save runtime 224 if (actTP == 0 || actFP ==0)221 if (actTP == 0 || actFP == 0) 225 222 break; 226 223 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.Classification/3.3/StandardGP.cs
r2161 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 22 using HeuristicLab.Core; 27 using System.Xml; 28 using System.Diagnostics; 29 using HeuristicLab.DataAnalysis; 30 using HeuristicLab.Random; 31 using HeuristicLab.Data; 23 using HeuristicLab.Modeling; 32 24 using HeuristicLab.Operators; 33 using HeuristicLab.Modeling;34 25 35 26 namespace HeuristicLab.GP.StructureIdentification.Classification { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/AveragePercentageChangeEvaluator.cs
r1891 r2216 21 21 22 22 using System; 23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 23 using HeuristicLab.Core; 27 24 using HeuristicLab.Data; 28 using HeuristicLab.GP.StructureIdentification;29 25 30 26 namespace HeuristicLab.GP.StructureIdentification.TimeSeries { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/HeuristicLab.GP.StructureIdentification.TimeSeries-3.3.csproj
r2210 r2216 91 91 </ItemGroup> 92 92 <ItemGroup> 93 <ProjectReference Include="..\..\HeuristicLab.Constraints\3.2\HeuristicLab.Constraints-3.2.csproj">94 <Project>{FCD62C6F-4793-4593-AE9A-0BDCA256EE99}</Project>95 <Name>HeuristicLab.Constraints-3.2</Name>96 </ProjectReference>97 93 <ProjectReference Include="..\..\HeuristicLab.Core\3.2\HeuristicLab.Core-3.2.csproj"> 98 94 <Project>{F43B59AB-2B8C-4570-BC1E-15592086517C}</Project> -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/HeuristicLabGPTimeSeriesPlugin.cs
r2210 r2216 35 35 [Dependency(Dependency = "HeuristicLab.GP.Interfaces-3.3")] 36 36 [Dependency(Dependency = "HeuristicLab.GP.StructureIdentification-3.3")] 37 [Dependency(Dependency = "HeuristicLab.Logging-3.2")] 37 38 [Dependency(Dependency = "HeuristicLab.Modeling-3.2")] 38 [Dependency(Dependency = "HeuristicLab.Logging-3.2")]39 39 [Dependency(Dependency = "HeuristicLab.Operators-3.2")] 40 40 public class HeuristicLabGPTimeSeriesPlugin : PluginBase { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/OffspringSelectionGP.cs
r2161 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 22 using HeuristicLab.Core; 27 using System.Xml; 28 using System.Diagnostics; 29 using HeuristicLab.DataAnalysis; 30 using HeuristicLab.Data; 23 using HeuristicLab.Modeling; 31 24 using HeuristicLab.Operators; 32 using HeuristicLab.Logging;33 using HeuristicLab.Modeling;34 25 35 26 namespace HeuristicLab.GP.StructureIdentification.TimeSeries { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/ProfitEvaluator.cs
r1891 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 22 using HeuristicLab.Core; 27 23 using HeuristicLab.Data; 28 using HeuristicLab.GP.StructureIdentification;29 24 30 25 namespace HeuristicLab.GP.StructureIdentification.TimeSeries { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/StandardGP.cs
r2161 r2216 20 20 #endregion 21 21 22 using System;23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 22 using HeuristicLab.Core; 27 using System.Xml;28 using System.Diagnostics;29 using HeuristicLab.DataAnalysis;30 23 using HeuristicLab.Data; 31 using HeuristicLab.Operators;32 24 using HeuristicLab.Logging; 33 25 using HeuristicLab.Modeling; 26 using HeuristicLab.Operators; 34 27 35 28 namespace HeuristicLab.GP.StructureIdentification.TimeSeries { -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification.TimeSeries/3.3/TheilInequalityCoefficientEvaluator.cs
r1891 r2216 21 21 22 22 using System; 23 using System.Collections.Generic;24 using System.Linq;25 using System.Text;26 23 using HeuristicLab.Core; 27 24 using HeuristicLab.Data; 28 using HeuristicLab.GP.StructureIdentification;29 25 using HeuristicLab.DataAnalysis; 30 26 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification/3.3/FunctionLibraryInjector.cs
r2212 r2216 24 24 using HeuristicLab.Data; 25 25 using HeuristicLab.GP.Interfaces; 26 using HeuristicLab.GP.SantaFe; 26 27 27 28 namespace HeuristicLab.GP.StructureIdentification { 28 public class FunctionLibraryInjector : OperatorBase { 29 private const string FUNCTIONLIBRARY = "FunctionLibrary"; 30 private const string TARGETVARIABLE = "TargetVariable"; 29 public class FunctionLibraryInjector : FunctionLibraryInjectorBase { 31 30 private const string MINTIMEOFFSET = "MinTimeOffset"; 32 31 private const string MAXTIMEOFFSET = "MaxTimeOffset"; … … 57 56 private const string XOR_ALLOWED = "Xor"; 58 57 58 private int minTimeOffset; 59 private int maxTimeOffset; 59 60 60 61 public override string Description { … … 64 65 public FunctionLibraryInjector() 65 66 : base() { 66 AddVariableInfo(new VariableInfo(TARGETVARIABLE, "The target variable", typeof(IntData), VariableKind.In));67 67 AddVariableInfo(new VariableInfo(MINTIMEOFFSET, "Minimal time offset for all features", typeof(IntData), VariableKind.In)); 68 68 AddVariableInfo(new VariableInfo(MAXTIMEOFFSET, "Maximal time offset for all feature", typeof(IntData), VariableKind.In)); 69 AddVariableInfo(new VariableInfo(FUNCTIONLIBRARY, "Preconfigured default function library", typeof(FunctionLibrary), VariableKind.New));70 69 71 70 AddVariable(DIFFERENTIALS_ALLOWED, false); … … 102 101 103 102 public override IOperation Apply(IScope scope) { 104 FunctionLibrary functionLibrary = new FunctionLibrary();105 int targetVariable = GetVariableValue<IntData>(TARGETVARIABLE, scope, true).Data;106 107 103 // try to get minTimeOffset (use 0 as default if not available) 108 104 IItem minTimeOffsetItem = GetVariableValue(MINTIMEOFFSET, scope, true, false); 109 intminTimeOffset = minTimeOffsetItem == null ? 0 : ((IntData)minTimeOffsetItem).Data;105 minTimeOffset = minTimeOffsetItem == null ? 0 : ((IntData)minTimeOffsetItem).Data; 110 106 // try to get maxTimeOffset (use 0 as default if not available) 111 107 IItem maxTimeOffsetItem = GetVariableValue(MAXTIMEOFFSET, scope, true, false); 112 int maxTimeOffset = maxTimeOffsetItem == null ? 0 : ((IntData)maxTimeOffsetItem).Data; 108 maxTimeOffset = maxTimeOffsetItem == null ? 0 : ((IntData)maxTimeOffsetItem).Data; 109 110 return base.Apply(scope); 111 } 112 113 protected override FunctionLibrary CreateFunctionLibrary() { 114 FunctionLibrary functionLibrary = new FunctionLibrary(); 113 115 114 116 Variable variable = new Variable(); … … 218 220 differential.SetConstraints(minTimeOffset, maxTimeOffset); 219 221 220 scope.AddVariable(new HeuristicLab.Core.Variable(scope.TranslateName(FUNCTIONLIBRARY), functionLibrary)); 221 222 return null; 222 return functionLibrary; 223 223 } 224 224 … … 230 230 if (GetVariableValue<BoolData>(condName, null, false).Data) functionLib.AddFunction(op); 231 231 } 232 233 private void SetAllowedSubOperators(IFunction f, List<IFunction> gs) {234 for (int i = 0; i < f.MaxSubTrees; i++) {235 SetAllowedSubOperators(f, i, gs);236 }237 }238 239 private void SetAllowedSubOperators(IFunction f, int i, List<IFunction> gs) {240 gs.ForEach((g) => f.AddAllowedSubFunction(g, i));241 }242 232 } 243 233 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification/3.3/ModelAnalyzerExporter.cs
r2212 r2216 21 21 22 22 using HeuristicLab.GP.Interfaces; 23 using System; 23 24 24 25 namespace HeuristicLab.GP.StructureIdentification { 25 public class ModelAnalyzerExporter : IFunctionTree Exporter, IFunctionTreeNameGenerator {26 public class ModelAnalyzerExporter : IFunctionTreeSerializer, IFunctionTreeNameGenerator { 26 27 #region IFunctionTreeExporter Members 27 28 … … 53 54 if(tree.SubTrees.Count > 0) result += ")"; 54 55 return result; 56 } 57 58 public IFunctionTree Import(string tree) { 59 throw new UnknownFunctionException(tree); 60 } 61 62 public bool TryImport(string tree, out IFunctionTree importedTree) { 63 try { 64 importedTree = Import(tree); 65 return true; 66 } 67 catch (UnknownFunctionException) { 68 importedTree = null; 69 return false; 70 } 55 71 } 56 72 … … 104 120 105 121 #endregion 122 123 106 124 } 107 125 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification/3.3/SymbolicExpressionExporter.cs
r2212 r2216 22 22 using System.Text; 23 23 using HeuristicLab.GP.Interfaces; 24 using System; 25 using System.Collections.Generic; 24 26 25 27 namespace HeuristicLab.GP.StructureIdentification { 26 public class SymbolicExpressionExporter : IFunctionTree Exporter, IFunctionTreeNameGenerator {28 public class SymbolicExpressionExporter : IFunctionTreeSerializer, IFunctionTreeNameGenerator { 27 29 private StringBuilder builder; 28 30 private string currentIndent; … … 48 50 } catch(UnknownFunctionException) { 49 51 exported = ""; 52 return false; 53 } 54 } 55 56 public IFunctionTree Import(string tree) { 57 Queue<string> tokens = new Queue<string>(tree.Split(' ', '\n', '\t')); 58 return ParseTree(tokens); 59 } 60 61 private IFunctionTree ParseTree(Queue<string> tokens) { 62 Expect("(", tokens); 63 string funSymb = tokens.Peek(); 64 double constValue; 65 if (double.TryParse(funSymb, out constValue)) { 66 throw new UnknownFunctionException(funSymb); 67 } 68 switch (funSymb) { 69 case "variable": return ParseVariable(tokens); 70 case "differential": return ParseDifferential(tokens); 71 default: 72 IFunctionTree fNode = ParseFunction(tokens); 73 Expect(")", tokens); 74 return fNode; 75 } 76 77 } 78 79 private IFunctionTree ParseFunction(Queue<string> tokens) { 80 throw new UnknownFunctionException(tokens.Dequeue()); 81 } 82 83 private IFunctionTree ParseDifferential(Queue<string> tokens) { 84 throw new UnknownFunctionException(tokens.Dequeue()); 85 } 86 87 private IFunctionTree ParseVariable(Queue<string> tokens) { 88 throw new UnknownFunctionException(tokens.Dequeue()); 89 } 90 91 private void Expect(string p, Queue<string> tokens) { 92 throw new NotImplementedException(); 93 } 94 95 public bool TryImport(string tree, out IFunctionTree importedTree) { 96 try { 97 importedTree = Import(tree); 98 return true; 99 } 100 catch (UnknownFunctionException) { 101 importedTree = null; 50 102 return false; 51 103 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification/3.3/Symbols/Constant.cs
r2212 r2216 31 31 public override string Description { 32 32 get { return "Returns the value of local variable 'Value'."; } 33 }34 35 public override IEnumerable<string> LocalParameterNames {36 get {37 return new string[] { VALUE };38 }39 33 } 40 34 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification/3.3/Symbols/ConstantFunctionTree.cs
r2212 r2216 26 26 27 27 namespace HeuristicLab.GP.StructureIdentification { 28 public class ConstantFunctionTree : FunctionTreeBase { 29 private static readonly IList<IFunctionTree> subTrees = new List<IFunctionTree>().AsReadOnly(); 28 public class ConstantFunctionTree : TerminalTreeNode { 30 29 public double Value { get; set; } 31 30 32 public ConstantFunctionTree(Constant constant) { 33 Function = constant; 31 public ConstantFunctionTree(Constant constant) : base(constant){ 34 32 } 35 33 36 protected ConstantFunctionTree(ConstantFunctionTree original) { 37 Function = original.Function; 34 protected ConstantFunctionTree(ConstantFunctionTree original) : base(original){ 38 35 Value = original.Value; 39 }40 41 public override IList<IFunctionTree> SubTrees {42 get {43 return subTrees;44 }45 36 } 46 37 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP.StructureIdentification/3.3/Symbols/VariableFunctionTree.cs
r2212 r2216 26 26 27 27 namespace HeuristicLab.GP.StructureIdentification { 28 public class VariableFunctionTree : FunctionTreeBase { 29 private static readonly IList<IFunctionTree> subTrees = new List<IFunctionTree>().AsReadOnly(); 28 public class VariableFunctionTree : TerminalTreeNode { 30 29 public double Weight { get; set; } 31 30 public string VariableName { get; set; } 32 31 public int SampleOffset { get; set; } 33 32 34 public VariableFunctionTree(Variable variable) {35 Function = variable;33 public VariableFunctionTree(Variable variable) 34 : base(variable) { 36 35 } 37 36 38 protected VariableFunctionTree(VariableFunctionTree original) {39 Function = original.Function;37 protected VariableFunctionTree(VariableFunctionTree original) 38 : base(original) { 40 39 Weight = original.Weight; 41 40 VariableName = original.VariableName; 42 41 SampleOffset = original.SampleOffset; 43 }44 45 public override IList<IFunctionTree> SubTrees {46 get {47 return subTrees;48 }49 42 } 50 43 … … 66 59 public override IOperation CreateInitOperation(IScope scope) { 67 60 Scope myVariableScope = new Scope(); 68 scope.AddSubScope(myVariableScope); 61 scope.AddSubScope(myVariableScope); 69 62 myVariableScope.AddVariable(CreateWeightVariable()); 70 63 myVariableScope.AddVariable(CreateVariableNameVariable()); -
branches/GP-Refactoring-713/sources/HeuristicLab.GP/3.3/BaseClasses/FunctionBase.cs
r2212 r2216 101 101 } 102 102 103 public virtual IEnumerable<string> LocalParameterNames {104 get { return new string[0]; }105 }106 107 103 public virtual IFunctionTree GetTreeNode() { 108 104 return new FunctionTreeBase(this); … … 158 154 minTreeHeight = height + 1; 159 155 } 156 157 public override object Clone(IDictionary<Guid, object> clonedObjects) { 158 throw new NotSupportedException(); 159 } 160 161 public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 162 XmlNode node = base.GetXmlNode(name, document, persistedObjects); 163 XmlAttribute minSubTreesAttr = document.CreateAttribute("MinSubTrees"); 164 minSubTreesAttr.Value = XmlConvert.ToString(MinSubTrees); 165 XmlAttribute maxSubTreesAttr = document.CreateAttribute("MaxSubTrees"); 166 maxSubTreesAttr.Value = XmlConvert.ToString(MaxSubTrees); 167 node.Attributes.Append(minSubTreesAttr); 168 node.Attributes.Append(maxSubTreesAttr); 169 for (int i = 0; i < MaxSubTrees; i++) { 170 XmlNode slotNode = document.CreateElement("AllowedSubFunctions"); 171 XmlAttribute slotAttr = document.CreateAttribute("Slot"); 172 slotAttr.Value = XmlConvert.ToString(i); 173 slotNode.Attributes.Append(slotAttr); 174 node.AppendChild(slotNode); 175 foreach (IFunction f in GetAllowedSubFunctions(i)) { 176 slotNode.AppendChild(PersistenceManager.Persist(f, document, persistedObjects)); 177 } 178 } 179 return node; 180 } 181 182 public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 183 base.Populate(node, restoredObjects); 184 MinSubTrees = XmlConvert.ToInt32(node.Attributes["MinSubTrees"].Value); 185 MaxSubTrees = XmlConvert.ToInt32(node.Attributes["MaxSubTrees"].Value); 186 foreach (XmlNode allowedSubFunctionsNode in node.SelectNodes("AllowedSubFunctions")) { 187 int slot = XmlConvert.ToInt32(allowedSubFunctionsNode.Attributes["Slot"].Value); 188 foreach (XmlNode fNode in allowedSubFunctionsNode.ChildNodes) { 189 AddAllowedSubFunction((IFunction)PersistenceManager.Restore(fNode, restoredObjects), slot); 190 } 191 } 192 } 160 193 } 161 194 } -
branches/GP-Refactoring-713/sources/HeuristicLab.GP/3.3/BaseClasses/FunctionTreeBase.cs
r2211 r2216 58 58 public IFunction Function { 59 59 get { return function; } 60 protected set { 61 function = value; 62 } 60 protected set { function = value; } 63 61 } 64 62 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP/3.3/FunctionLibrary.cs
r2212 r2216 58 58 } 59 59 60 public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 61 XmlNode node = base.GetXmlNode(name, document, persistedObjects); 62 foreach (IFunction f in functions) { 63 node.AppendChild(PersistenceManager.Persist("Function", f, document, persistedObjects)); 64 } 65 return node; 66 } 67 68 public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 69 base.Populate(node, restoredObjects); 70 foreach (XmlNode fNode in node.SelectNodes("Function")) { 71 AddFunction((IFunction)PersistenceManager.Restore(fNode, restoredObjects)); 72 } 73 } 74 60 75 public override IView CreateView() { 61 76 return new FunctionLibraryEditor(this); -
branches/GP-Refactoring-713/sources/HeuristicLab.GP/3.3/FunctionTreeView.cs
r2212 r2216 67 67 treeNodeContextMenu.MenuItems.Add(representationsMenu); 68 68 DiscoveryService discoveryService = new DiscoveryService(); 69 IFunctionTree Exporter[] exporters = discoveryService.GetInstances<IFunctionTreeExporter>();70 foreach (IFunctionTree Exporter exporter in exporters) {69 IFunctionTreeSerializer[] exporters = discoveryService.GetInstances<IFunctionTreeSerializer>(); 70 foreach (IFunctionTreeSerializer exporter in exporters) { 71 71 string result; 72 72 // register a menu item for the exporter … … 101 101 } 102 102 103 private EventHandler MakeExporterDelegate(IFunctionTree Exporter exporter) {103 private EventHandler MakeExporterDelegate(IFunctionTreeSerializer exporter) { 104 104 return delegate(object source, EventArgs args) { 105 105 TreeNode node = funTreeView.SelectedNode; -
branches/GP-Refactoring-713/sources/HeuristicLab.GP/3.3/GeneticProgrammingModel.cs
r2210 r2216 25 25 using HeuristicLab.Core; 26 26 using HeuristicLab.GP.Interfaces; 27 using System.Xml; 27 28 28 29 namespace HeuristicLab.GP { … … 56 57 } 57 58 58 public override System.Xml.XmlNode GetXmlNode(string name, System.Xml.XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 59 throw new NotImplementedException(); 59 public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 60 XmlNode node = base.GetXmlNode(name, document, persistedObjects); 61 node.Value = GeneralTreeSerializer.Export(FunctionTree); 62 return node; 60 63 } 61 64 62 public override void Populate(System.Xml.XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 63 throw new NotImplementedException(); 65 public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 66 base.Populate(node, restoredObjects); 67 FunctionTree = GeneralTreeSerializer.Import(node.Value); 64 68 } 65 69 -
branches/GP-Refactoring-713/sources/HeuristicLab.GP/3.3/HeuristicLab.GP-3.3.csproj
r2212 r2216 83 83 <ItemGroup> 84 84 <Compile Include="BaseClasses\BinaryFunction.cs" /> 85 <Compile Include="BaseClasses\FunctionLibraryInjectorBase.cs" /> 86 <Compile Include="BaseClasses\TerminalTreeNode.cs" /> 85 87 <Compile Include="BaseClasses\FunctionBase.cs" /> 86 88 <Compile Include="BaseClasses\FunctionTreeBase.cs" /> 87 89 <Compile Include="BaseClasses\Terminal.cs" /> 88 90 <Compile Include="BaseClasses\UnaryFunction.cs" /> 91 <Compile Include="FunctionTreeSerializer.cs" /> 89 92 <Compile Include="FunctionLibrary.cs" /> 90 93 <Compile Include="FunctionLibraryEditor.cs">
Note: See TracChangeset
for help on using the changeset viewer.