Changeset 16603 for branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/OdeParameterIdentification.cs
- Timestamp:
- 02/13/19 16:04:10 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Problems.DynamicalSystemsModelling/3.3/OdeParameterIdentification.cs
r16602 r16603 189 189 problem.Analyze(new[] { ind }, new[] { quality }, Results, rand); 190 190 } 191 192 // private ISymbolicExpressionTree Convert(ISymbolicExpressionTree tree) {193 // return new SymbolicExpressionTree(Convert(tree.Root));194 // }195 196 197 // for translation from symbolic expressions to simple symbols198 // private static Dictionary<Type, string> sym2str = new Dictionary<Type, string>() {199 // {typeof(Addition), "+" },200 // {typeof(Subtraction), "-" },201 // {typeof(Multiplication), "*" },202 // {typeof(Sine), "sin" },203 // {typeof(Cosine), "cos" },204 // {typeof(Square), "sqr" },205 // };206 207 // private ISymbolicExpressionTreeNode Convert(ISymbolicExpressionTreeNode node) {208 // if (sym2str.ContainsKey(node.Symbol.GetType())) {209 // var children = node.Subtrees.Select(st => Convert(st)).ToArray();210 // return Make(sym2str[node.Symbol.GetType()], children);211 // } else if (node.Symbol is ProgramRootSymbol) {212 // var child = Convert(node.GetSubtree(0));213 // node.RemoveSubtree(0);214 // node.AddSubtree(child);215 // return node;216 // } else if (node.Symbol is StartSymbol) {217 // var child = Convert(node.GetSubtree(0));218 // node.RemoveSubtree(0);219 // node.AddSubtree(child);220 // return node;221 // } else if (node.Symbol is Division) {222 // var children = node.Subtrees.Select(st => Convert(st)).ToArray();223 // if (children.Length == 1) {224 // return Make("%", new[] { new SimpleSymbol("θ", 0).CreateTreeNode(), children[0] });225 // } else if (children.Length != 2) throw new ArgumentException("Division is not supported for multiple arguments");226 // else return Make("%", children);227 // } else if (node.Symbol is Constant) {228 // return new SimpleSymbol("θ", 0).CreateTreeNode();229 // } else if (node.Symbol is DataAnalysis.Symbolic.Variable) {230 // var varNode = node as VariableTreeNode;231 // if (!varNode.Weight.IsAlmost(1.0)) throw new ArgumentException("Variable weights are not supported");232 // return new SimpleSymbol(varNode.VariableName, 0).CreateTreeNode();233 // } else throw new ArgumentException("Unsupported symbol: " + node.Symbol.Name);234 // }235 236 // private ISymbolicExpressionTreeNode Make(string op, ISymbolicExpressionTreeNode[] children) {237 // if (children.Length == 1) {238 // var s = new SimpleSymbol(op, 1).CreateTreeNode();239 // s.AddSubtree(children.First());240 // return s;241 // } else {242 // var s = new SimpleSymbol(op, 2).CreateTreeNode();243 // var c0 = children[0];244 // var c1 = children[1];245 // s.AddSubtree(c0);246 // s.AddSubtree(c1);247 // for (int i = 2; i < children.Length; i++) {248 // var sn = new SimpleSymbol(op, 2).CreateTreeNode();249 // sn.AddSubtree(s);250 // sn.AddSubtree(children[i]);251 // s = sn;252 // }253 // return s;254 // }255 // }256 191 #endregion 257 192 }
Note: See TracChangeset
for help on using the changeset viewer.