- Timestamp:
- 09/25/15 14:39:59 (9 years ago)
- Location:
- branches/gteufl
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/gteufl
- Property svn:ignore
-
old new 8 8 FxCopResults.txt 9 9 Google.ProtocolBuffers-0.9.1.dll 10 Google.ProtocolBuffers-2.4.1.473.dll 10 11 HeuristicLab 3.3.5.1.ReSharper.user 11 12 HeuristicLab 3.3.6.0.ReSharper.user 12 13 HeuristicLab.4.5.resharper.user 13 14 HeuristicLab.ExtLibs.6.0.ReSharper.user 15 HeuristicLab.Scripting.Development 14 16 HeuristicLab.resharper.user 15 17 ProtoGen.exe … … 17 19 _ReSharper.HeuristicLab 18 20 _ReSharper.HeuristicLab 3.3 21 _ReSharper.HeuristicLab 3.3 Tests 19 22 _ReSharper.HeuristicLab.ExtLibs 20 23 bin 21 24 protoc.exe 22 _ReSharper.HeuristicLab 3.3 Tests 23 Google.ProtocolBuffers-2.4.1.473.dll 25 obj
-
- Property svn:mergeinfo changed
-
Property
svn:global-ignores
set to
*.nuget
packages
- Property svn:ignore
-
branches/gteufl/HeuristicLab.Problems.DataAnalysis.Symbolic
- Property svn:mergeinfo changed
-
branches/gteufl/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/InterpreterState.cs
r9456 r12969 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. -
branches/gteufl/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/OpCodes.cs
r9456 r12969 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 46 46 public const byte OR = 14; 47 47 public const byte NOT = 15; 48 public const byte XOR = 45; 48 49 49 50 … … 99 100 { typeof(Or), OpCodes.OR }, 100 101 { typeof(Not), OpCodes.NOT}, 102 { typeof(Xor),OpCodes.XOR}, 101 103 { typeof(Average), OpCodes.Average}, 102 104 { typeof(InvokeFunction), OpCodes.Call }, -
branches/gteufl/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs
r9828 r12969 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 138 138 #endregion 139 139 140 public IEnumerable<double> GetSymbolicExpressionTreeValues(ISymbolicExpressionTree tree, Dataset dataset, IEnumerable<int> rows) {140 public IEnumerable<double> GetSymbolicExpressionTreeValues(ISymbolicExpressionTree tree, IDataset dataset, IEnumerable<int> rows) { 141 141 if (CheckExpressionsWithIntervalArithmetic.Value) 142 142 throw new NotSupportedException("Interval arithmetic is not yet supported in the symbolic data analysis interpreter."); … … 161 161 } 162 162 163 private InterpreterState PrepareInterpreterState(ISymbolicExpressionTree tree, Dataset dataset) {163 private InterpreterState PrepareInterpreterState(ISymbolicExpressionTree tree, IDataset dataset) { 164 164 Instruction[] code = SymbolicExpressionTreeCompiler.Compile(tree, OpCodes.MapSymbolToOpCode); 165 165 Dictionary<string, int> doubleVariableNames = dataset.DoubleVariables.Select((x, i) => new { x, i }).ToDictionary(e => e.x, e => e.i); … … 182 182 } 183 183 184 private void CompileInstructions(ILGenerator il, InterpreterState state, Dataset ds) {184 private void CompileInstructions(ILGenerator il, InterpreterState state, IDataset ds) { 185 185 Instruction currentInstr = state.NextInstruction(); 186 186 int nArgs = currentInstr.nArguments; … … 447 447 il.Emit(System.Reflection.Emit.OpCodes.Sub); 448 448 il.Emit(System.Reflection.Emit.OpCodes.Neg); // * -1 449 return; 450 } 451 case OpCodes.XOR: { 452 CompileInstructions(il, state, ds); 453 il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4_0); 454 il.Emit(System.Reflection.Emit.OpCodes.Cgt);// > 0 455 456 for (int i = 1; i < nArgs; i++) { 457 CompileInstructions(il, state, ds); 458 il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4_0); 459 il.Emit(System.Reflection.Emit.OpCodes.Cgt);// > 0 460 il.Emit(System.Reflection.Emit.OpCodes.Xor); 461 } 462 il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, 2.0); // * 2 463 il.Emit(System.Reflection.Emit.OpCodes.Mul); 464 il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, 1.0); // - 1 465 il.Emit(System.Reflection.Emit.OpCodes.Sub); 449 466 return; 450 467 } -
branches/gteufl/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeInterpreter.cs
r9828 r12969 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 95 95 #endregion 96 96 97 public IEnumerable<double> GetSymbolicExpressionTreeValues(ISymbolicExpressionTree tree, Dataset dataset, IEnumerable<int> rows) {97 public IEnumerable<double> GetSymbolicExpressionTreeValues(ISymbolicExpressionTree tree, IDataset dataset, IEnumerable<int> rows) { 98 98 if (CheckExpressionsWithIntervalArithmetic.Value) 99 99 throw new NotSupportedException("Interval arithmetic is not yet supported in the symbolic data analysis interpreter."); … … 111 111 } 112 112 113 private static InterpreterState PrepareInterpreterState(ISymbolicExpressionTree tree, Dataset dataset) {113 private static InterpreterState PrepareInterpreterState(ISymbolicExpressionTree tree, IDataset dataset) { 114 114 Instruction[] code = SymbolicExpressionTreeCompiler.Compile(tree, OpCodes.MapSymbolToOpCode); 115 115 int necessaryArgStackSize = 0; … … 132 132 133 133 134 public virtual double Evaluate( Dataset dataset, ref int row, InterpreterState state) {134 public virtual double Evaluate(IDataset dataset, ref int row, InterpreterState state) { 135 135 Instruction currentInstr = state.NextInstruction(); 136 136 switch (currentInstr.opCode) { … … 343 343 case OpCodes.NOT: { 344 344 return Evaluate(dataset, ref row, state) > 0.0 ? -1.0 : 1.0; 345 } 346 case OpCodes.XOR: { 347 //mkommend: XOR on multiple inputs is defined as true if the number of positive signals is odd 348 // this is equal to a consecutive execution of binary XOR operations. 349 int positiveSignals = 0; 350 for (int i = 0; i < currentInstr.nArguments; i++) { 351 if (Evaluate(dataset, ref row, state) > 0.0) positiveSignals++; 352 } 353 return positiveSignals % 2 != 0 ? 1.0 : -1.0; 345 354 } 346 355 case OpCodes.GT: { -
branches/gteufl/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeLinearInterpreter.cs
r9944 r12969 1 1 #region License Information 2 2 /* HeuristicLab 3 * Copyright (C) 2002-201 3Heuristic and Evolutionary Algorithms Laboratory (HEAL)3 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 4 * 5 5 * This file is part of HeuristicLab. … … 102 102 #endregion 103 103 104 public IEnumerable<double> GetSymbolicExpressionTreeValues(ISymbolicExpressionTree tree, Dataset dataset, IEnumerable<int> rows) {104 public IEnumerable<double> GetSymbolicExpressionTreeValues(ISymbolicExpressionTree tree, IDataset dataset, IEnumerable<int> rows) { 105 105 if (CheckExpressionsWithIntervalArithmetic.Value) 106 106 throw new NotSupportedException("Interval arithmetic is not yet supported in the symbolic data analysis interpreter."); … … 115 115 } 116 116 117 private double Evaluate( Dataset dataset, int row, LinearInstruction[] code) {117 private double Evaluate(IDataset dataset, int row, LinearInstruction[] code) { 118 118 for (int i = code.Length - 1; i >= 0; --i) { 119 119 if (code[i].skip) continue; … … 311 311 } else if (instr.opCode == OpCodes.NOT) { 312 312 instr.value = code[instr.childIndex].value > 0.0 ? -1.0 : 1.0; 313 } else if (instr.opCode == OpCodes.XOR) { 314 int positiveSignals = 0; 315 for (int j = 0; j < instr.nArguments; j++) { 316 if (code[instr.childIndex + j].value > 0.0) positiveSignals++; 317 } 318 instr.value = positiveSignals % 2 != 0 ? 1.0 : -1.0; 313 319 } else if (instr.opCode == OpCodes.GT) { 314 320 double x = code[instr.childIndex].value; … … 346 352 } 347 353 348 p rivate static void PrepareInstructions(LinearInstruction[] code,Dataset dataset) {354 public static void PrepareInstructions(LinearInstruction[] code, IDataset dataset) { 349 355 for (int i = 0; i != code.Length; ++i) { 350 356 var instr = code[i];
Note: See TracChangeset
for help on using the changeset viewer.