Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/14/08 17:49:47 (16 years ago)
Author:
gkronber
Message:

created a branch that uses XmlTextWriter instead of XMLDocument to save documents. Investigating ticket #103.

Location:
branches/XmlTextWriterBranch
Files:
2 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/XmlTextWriterBranch/HeuristicLab.Random/MersenneTwister.cs

    r2 r119  
    4848
    4949    public MersenneTwister() {
    50       if (!init) seed((uint)DateTime.Now.Ticks);
     50      if(!init) seed((uint)DateTime.Now.Ticks);
    5151      init = true;
    5252    }
     
    7070
    7171    public void Reset() {
    72       lock (locker)
     72      lock(locker)
    7373        seed((uint)DateTime.Now.Ticks);
    7474    }
    7575    public void Reset(int s) {
    76       lock (locker)
     76      lock(locker)
    7777        seed((uint)s);
    7878    }
    7979
    8080    public int Next() {
    81       lock (locker) {
     81      lock(locker) {
    8282        return (int)(rand_int32() >> 1);
    8383      }
    8484    }
    8585    public int Next(int maxVal) {
    86       lock (locker) {
    87         if (maxVal <= 0)
     86      lock(locker) {
     87        if(maxVal <= 0)
    8888          throw new ArgumentException("The interval [0, " + maxVal + ") is empty");
    8989        int limit = (Int32.MaxValue / maxVal) * maxVal;
    9090        int value = Next();
    91         while (value >= limit) value = Next();
     91        while(value >= limit) value = Next();
    9292        return value % maxVal;
    9393      }
    9494    }
    9595    public int Next(int minVal, int maxVal) {
    96       lock (locker) {
    97         if (maxVal <= minVal)
     96      lock(locker) {
     97        if(maxVal <= minVal)
    9898          throw new ArgumentException("The interval [" + minVal + ", " + maxVal + ") is empty");
    9999        return Next(maxVal - minVal) + minVal;
     
    101101    }
    102102    public double NextDouble() {
    103       lock (locker) {
     103      lock(locker) {
    104104        return rand_double53();
    105105      }
     
    107107
    108108    #region Persistence Methods
    109     public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
    110       XmlNode node = base.GetXmlNode(name, document, persistedObjects);
    111 
     109    //public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid,IStorable> persistedObjects) {
     110    //  XmlNode node = base.GetXmlNode(name, document, persistedObjects);
     111
     112    //  StringBuilder builder = new StringBuilder();
     113    //  builder.Append(state[0]);
     114    //  for (int i = 1; i < state.Length; i++) {
     115    //    builder.Append(';');
     116    //    builder.Append(state[i]);
     117    //  }
     118    //  XmlNode stateNode = document.CreateNode(XmlNodeType.Element, "State", null);
     119    //  stateNode.InnerText = builder.ToString();
     120    //  node.AppendChild(stateNode);
     121
     122    //  XmlNode pNode = document.CreateNode(XmlNodeType.Element, "P", null);
     123    //  pNode.InnerText = p.ToString();
     124    //  node.AppendChild(pNode);
     125
     126    //  XmlNode initNode = document.CreateNode(XmlNodeType.Element, "Init", null);
     127    //  initNode.InnerText = init.ToString();
     128    //  node.AppendChild(initNode);
     129
     130    //  return node;
     131    //}
     132    public override void Persist(string name, XmlWriter writer, IDictionary<Guid, IStorable> persistedObjects) {
     133      base.Persist(name, writer, persistedObjects);
    112134      StringBuilder builder = new StringBuilder();
    113135      builder.Append(state[0]);
    114       for (int i = 1; i < state.Length; i++) {
     136      for(int i = 1; i < state.Length; i++) {
    115137        builder.Append(';');
    116138        builder.Append(state[i]);
    117139      }
    118       XmlNode stateNode = document.CreateNode(XmlNodeType.Element, "State", null);
    119       stateNode.InnerText = builder.ToString();
    120       node.AppendChild(stateNode);
    121 
    122       XmlNode pNode = document.CreateNode(XmlNodeType.Element, "P", null);
    123       pNode.InnerText = p.ToString();
    124       node.AppendChild(pNode);
    125 
    126       XmlNode initNode = document.CreateNode(XmlNodeType.Element, "Init", null);
    127       initNode.InnerText = init.ToString();
    128       node.AppendChild(initNode);
    129 
    130       return node;
    131     }
    132     public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {
     140      writer.WriteStartElement("State");
     141      writer.WriteValue(builder.ToString());
     142      writer.WriteEndElement(); // </State>
     143      writer.WriteStartElement("P");
     144      writer.WriteValue(p.ToString());
     145      writer.WriteEndElement(); // </P>
     146      writer.WriteStartElement("Init");
     147      writer.WriteValue(init.ToString());
     148      writer.WriteEndElement(); // </Init>
     149    }
     150    public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
    133151      base.Populate(node, restoredObjects);
    134152
    135153      string stateString = node.SelectSingleNode("State").InnerText;
    136154      string[] tokens = stateString.Split(';');
    137       for (int i = 0; i < tokens.Length; i++)
     155      for(int i = 0; i < tokens.Length; i++)
    138156        state[i] = uint.Parse(tokens[i]);
    139157      p = int.Parse(node.SelectSingleNode("P").InnerText);
     
    145163    public void seed(uint s) {
    146164      state[0] = s & 0xFFFFFFFFU;
    147       for (int i = 1; i < n; ++i) {
     165      for(int i = 1; i < n; ++i) {
    148166        state[i] = 1812433253U * (state[i - 1] ^ (state[i - 1] >> 30)) + (uint)i;
    149167        state[i] &= 0xFFFFFFFFU;
     
    154172      seed(19650218U);
    155173      int i = 1, j = 0;
    156       for (int k = ((n > array.Length) ? n : array.Length); k > 0; --k) {
     174      for(int k = ((n > array.Length) ? n : array.Length); k > 0; --k) {
    157175        state[i] = (state[i] ^ ((state[i - 1] ^ (state[i - 1] >> 30)) * 1664525U))
    158176          + array[j] + (uint)j;
     
    160178        ++j;
    161179        j %= array.Length;
    162         if ((++i) == n) { state[0] = state[n - 1]; i = 1; }
    163       }
    164       for (int k = n - 1; k > 0; --k) {
     180        if((++i) == n) { state[0] = state[n - 1]; i = 1; }
     181      }
     182      for(int k = n - 1; k > 0; --k) {
    165183        state[i] = (state[i] ^ ((state[i - 1] ^ (state[i - 1] >> 30)) * 1566083941U)) - (uint)i;
    166184        state[i] &= 0xFFFFFFFFU;
    167         if ((++i) == n) { state[0] = state[n - 1]; i = 1; }
     185        if((++i) == n) { state[0] = state[n - 1]; i = 1; }
    168186      }
    169187      state[0] = 0x80000000U;
     
    174192    #region Random Number Generation Methods
    175193    private uint rand_int32() {
    176       if (p == n) gen_state();
     194      if(p == n) gen_state();
    177195      uint x = state[p++];
    178196      x ^= (x >> 11);
     
    202220    }
    203221    private void gen_state() {
    204       for (int i = 0; i < (n - m); ++i)
     222      for(int i = 0; i < (n - m); ++i)
    205223        state[i] = state[i + m] ^ twiddle(state[i], state[i + 1]);
    206       for (int i = n - m; i < (n - 1); ++i)
     224      for(int i = n - m; i < (n - 1); ++i)
    207225        state[i] = state[i + m - n] ^ twiddle(state[i], state[i + 1]);
    208226      state[n - 1] = state[m - 1] ^ twiddle(state[n - 1], state[0]);
  • branches/XmlTextWriterBranch/HeuristicLab.Random/NormalDistributedRandom.cs

    r2 r119  
    513513
    514514
    515     public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
    516       XmlNode node = base.GetXmlNode(name, document, persistedObjects);
    517 
    518       XmlNode muNode = document.CreateNode(XmlNodeType.Element, "Mu", null);
    519       muNode.InnerText = mu.ToString();
    520       node.AppendChild(muNode);
    521 
    522       XmlNode sigmaNode = document.CreateNode(XmlNodeType.Element, "Sigma", null);
    523       sigmaNode.InnerText = sigma.ToString();
    524       node.AppendChild(sigmaNode);
    525 
    526       node.AppendChild(PersistenceManager.Persist("UniformRandom", uniform, document, persistedObjects));
    527 
    528       return node;
     515    //public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
     516    //  XmlNode node = base.GetXmlNode(name, document, persistedObjects);
     517
     518    //  XmlNode muNode = document.CreateNode(XmlNodeType.Element, "Mu", null);
     519    //  muNode.InnerText = mu.ToString();
     520    //  node.AppendChild(muNode);
     521
     522    //  XmlNode sigmaNode = document.CreateNode(XmlNodeType.Element, "Sigma", null);
     523    //  sigmaNode.InnerText = sigma.ToString();
     524    //  node.AppendChild(sigmaNode);
     525
     526    //  node.AppendChild(PersistenceManager.Persist("UniformRandom", uniform, document, persistedObjects));
     527
     528    //  return node;
     529    //}
     530    public override void Persist(string name, XmlWriter writer, IDictionary<Guid, IStorable> persistedObjects) {
     531      base.Persist(name, writer, persistedObjects);
     532      writer.WriteStartElement("Mu");
     533      writer.WriteValue(mu.ToString());
     534      writer.WriteEndElement();
     535      writer.WriteStartElement("Sigma");
     536      writer.WriteValue(sigma.ToString());
     537      writer.WriteEndElement();
     538      PersistenceManager.Persist("UniformRandom", uniform, writer, persistedObjects);
    529539    }
    530540
Note: See TracChangeset for help on using the changeset viewer.