- Timestamp:
- 06/17/08 20:15:09 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Functions/BakedFunctionTree.cs
r319 r320 233 233 FlattenTrees(); 234 234 XmlNode node = base.GetXmlNode(name, document, persistedObjects); 235 throw new NotImplementedException(); 236 //XmlAttribute codeAttribute = document.CreateAttribute("LinearRepresentation"); 237 //codeAttribute.Value = GetString<int>(code); 238 //node.Attributes.Append(codeAttribute); 239 //return node; 235 XmlNode linearRepresentationNode = document.CreateElement("LinearRepresentation"); 236 foreach(LightWeightFunction f in linearRepresentation) { 237 XmlNode entryNode = PersistenceManager.Persist("FunctionType", f.functionType, document, persistedObjects); 238 XmlAttribute arityAttribute = document.CreateAttribute("Arity"); 239 arityAttribute.Value = f.arity+""; 240 entryNode.Attributes.Append(arityAttribute); 241 if(f.data.Count > 0) { 242 XmlAttribute dataAttribute = document.CreateAttribute("Data"); 243 dataAttribute.Value = GetString<double>(f.data); 244 entryNode.Attributes.Append(dataAttribute); 245 } 246 linearRepresentationNode.AppendChild(entryNode); 247 } 248 249 node.AppendChild(linearRepresentationNode); 250 return node; 240 251 } 241 252 242 253 public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 243 throw new NotImplementedException(); 244 //base.Populate(node, restoredObjects); 245 //XmlNode evaluatorNode = node.SelectSingleNode("Evaluator"); 246 //if(evaluatorNode != null) { 247 // this.evaluator = (BakedTreeEvaluator)PersistenceManager.Restore(evaluatorNode, restoredObjects); 248 //} 249 //code = GetList<int>(node.Attributes["Code"].Value, s => int.Parse(s, CultureInfo.InvariantCulture)); 250 //data = GetList<double>(node.Attributes["Data"].Value, s => double.Parse(s, CultureInfo.InvariantCulture)); 251 //treesExpanded = false; 252 //variablesExpanded = false; 253 } 254 255 //private string GetString<T>(IEnumerable<T> xs) where T : IConvertible { 256 // StringBuilder builder = new StringBuilder(); 257 // foreach(T x in xs) { 258 // builder.Append(x.ToString(CultureInfo.InvariantCulture) + "; "); 259 // } 260 // if(builder.Length > 0) builder.Remove(builder.Length - 2, 2); 261 // return builder.ToString(); 262 //} 263 264 //private List<T> GetList<T>(string s, Converter<string, T> converter) { 265 // List<T> result = new List<T>(); 266 // string[] tokens = s.Split(new char[] {';',' '}, StringSplitOptions.RemoveEmptyEntries); 267 // foreach(string token in tokens) { 268 // T x = converter(token.Trim()); 269 // result.Add(x); 270 // } 271 // return result; 272 //} 254 base.Populate(node, restoredObjects); 255 XmlNode linearRepresentationNode = node.SelectSingleNode("LinearRepresentation"); 256 foreach(XmlNode entryNode in linearRepresentationNode.ChildNodes) { 257 LightWeightFunction f = new LightWeightFunction(); 258 f.arity = int.Parse(entryNode.Attributes["Arity"].Value, CultureInfo.InvariantCulture); 259 if(entryNode.Attributes["Data"]!=null) 260 f.data = GetList<double>(entryNode.Attributes["Data"].Value, s => double.Parse(s, CultureInfo.InvariantCulture)); 261 f.functionType = (IFunction)PersistenceManager.Restore(entryNode, restoredObjects); 262 linearRepresentation.Add(f); 263 } 264 treesExpanded = false; 265 variablesExpanded = false; 266 } 267 268 private string GetString<T>(IEnumerable<T> xs) where T : IConvertible { 269 StringBuilder builder = new StringBuilder(); 270 foreach(T x in xs) { 271 builder.Append(x.ToString(CultureInfo.InvariantCulture) + "; "); 272 } 273 if(builder.Length > 0) builder.Remove(builder.Length - 2, 2); 274 return builder.ToString(); 275 } 276 277 private List<T> GetList<T>(string s, Converter<string, T> converter) { 278 List<T> result = new List<T>(); 279 string[] tokens = s.Split(new char[] { ';', ' ' }, StringSplitOptions.RemoveEmptyEntries); 280 foreach(string token in tokens) { 281 T x = converter(token.Trim()); 282 result.Add(x); 283 } 284 return result; 285 } 273 286 274 287 public override object Clone(IDictionary<Guid, object> clonedObjects) {
Note: See TracChangeset
for help on using the changeset viewer.