- Timestamp:
- 04/20/10 15:49:22 (15 years ago)
- Location:
- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/ArithmeticExpressionGrammar.cs
r3376 r3442 35 35 public class ArithmeticExpressionGrammar : DefaultSymbolicExpressionGrammar { 36 36 [Storable] 37 private List<string> variableNames = new List<string>();38 public IEnumerable<string> VariableNames {39 get { return variableNames; }40 set {41 variableNames = new List<string>(value);42 variableSymbol.VariableNames = variableNames;43 }44 }45 46 [Storable]47 37 private HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols.Variable variableSymbol; 48 38 … … 58 48 var div = new Division(); 59 49 var constant = new Constant(); 50 constant.MinValue = -20; 51 constant.MaxValue = 20; 60 52 variableSymbol = new HeuristicLab.Problems.DataAnalysis.Symbolic.Symbols.Variable(); 61 53 -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/SimpleArithmeticExpressionEvaluator.cs
r3409 r3442 44 44 this.row = row; 45 45 pc = 0; 46 argument s.Clear();46 argumentStack.Clear(); 47 47 var estimatedValue = Evaluate(); 48 48 if (double.IsNaN(estimatedValue) || double.IsInfinity(estimatedValue)) yield return 0.0; … … 51 51 } 52 52 53 private List<double> arguments = new List<double>();53 private Stack<List<double>> argumentStack = new Stack<List<double>>(); 54 54 public double Evaluate() { 55 55 var currentInstr = code[pc++]; … … 85 85 case CodeSymbol.Call: { 86 86 // save current arguments 87 var oldArgs = new List<double>(arguments); 88 arguments.Clear(); 87 List<double> arguments = new List<double>(); 89 88 // evaluate sub-trees 90 89 for (int i = 0; i < currentInstr.nArguments; i++) { 91 90 arguments.Add(Evaluate()); 92 91 } 92 argumentStack.Push(arguments); 93 93 // save the pc 94 94 int nextPc = pc; … … 97 97 // evaluate the function 98 98 double v = Evaluate(); 99 argumentStack.Pop(); 99 100 // restore the pc => evaluation will continue at point after my subtrees 100 101 pc = nextPc; 101 // restore arguments102 arguments = oldArgs;103 102 return v; 104 103 } 105 104 case CodeSymbol.Arg: { 106 return argument s[currentInstr.iArg0];105 return argumentStack.Peek()[currentInstr.iArg0]; 107 106 } 108 107 case CodeSymbol.Dynamic: { -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/ConstantTreeNode.cs
r3376 r3442 34 34 get { return (Constant)base.Symbol; } 35 35 } 36 public override bool HasLocalParameters {37 get {38 return true;39 }40 }41 36 42 37 private double constantValue; … … 54 49 public ConstantTreeNode(Constant constantSymbol) : base(constantSymbol) { } 55 50 51 public override bool HasLocalParameters { 52 get { 53 return true; 54 } 55 } 56 56 public override void ResetLocalParameters(IRandom random) { 57 57 base.ResetLocalParameters(random); … … 63 63 return new ConstantTreeNode(this); 64 64 } 65 66 public override string ToString() { 67 return constantValue.ToString("E5"); 68 } 65 69 } 66 70 } -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Variable.cs
r3376 r3442 52 52 private List<string> variableNames; 53 53 [Storable] 54 public I Collection<string> VariableNames {54 public IEnumerable<string> VariableNames { 55 55 get { return variableNames; } 56 56 set { -
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableTreeNode.cs
r3376 r3442 56 56 public VariableTreeNode(Variable variableSymbol) : base(variableSymbol) { } 57 57 58 public override bool HasLocalParameters { 59 get { 60 return true; 61 } 62 } 63 58 64 public override void ResetLocalParameters(IRandom random) { 59 65 base.ResetLocalParameters(random); … … 68 74 return new VariableTreeNode(this); 69 75 } 76 77 public override string ToString() { 78 return weight.ToString("E5") + " * " + variableName; 79 } 70 80 } 71 81 }
Note: See TracChangeset
for help on using the changeset viewer.