public void Test_NaN() { Probability p = new Probability(); p.Add("one", 1.0); p.Add("two", 2.0); p.Add("three", double.NaN); Assert.AreEqual(2, p.Prob.Count); }
public void Test_Serializing() { Probability p = new Probability(); p.Add("one", 1.0); p.Add("two", 2.0); p.Add("three", 3.0); Assert.AreEqual(3, p.Prob.Count); string str = p.ToString(); p = new Probability(str); Assert.AreEqual(3, p.Prob.Count); Assert.IsTrue(p.Prob.ContainsKey("one")); Assert.IsTrue(p.Prob.ContainsKey("two")); Assert.IsTrue(p.Prob.ContainsKey("three")); Assert.IsTrue(p.Prob.ContainsValue(1.0)); Assert.IsTrue(p.Prob.ContainsValue(2.0)); Assert.IsTrue(p.Prob.ContainsValue(3.0)); }
/// <summary> /// returns a list of the next likely events /// </summary> /// <param name="Description">description of each event</param> /// <param name="Probability">probability of each event</param> /// <param name="TimeToEventSec">number of seconds before each event is likely to occur</param> public void PredictNextEvents( ref List <string> Description, ref List <float> Probability, ref List <float> TimeToEventSec) { if (Description == null) { Description = new List <string>(); } if (Probability == null) { Probability = new List <float>(); } if (TimeToEventSec == null) { TimeToEventSec = new List <float>(); } Description.Clear(); Probability.Clear(); TimeToEventSec.Clear(); if (prev_node != null) { ulong total_hits = 0; for (int i = 0; i < prev_node.Links.Count; i++) { UsageLink lnk = (UsageLink)prev_node.Links[i]; UsageNode n = (UsageNode)lnk.From; total_hits += n.Hits; } for (int i = 0; i < prev_node.Links.Count; i++) { UsageLink lnk = (UsageLink)prev_node.Links[i]; UsageNode n = (UsageNode)lnk.From; Description.Add(n.Name); Probability.Add((float)((double)n.Hits / (double)total_hits)); double av_duration_mS = lnk.GetAverageDuration(); TimeSpan diff = DateTime.Now.Subtract(prev_node_time); float diff_sec = (float)(diff.TotalMilliseconds - av_duration_mS) / 1000.0f; if (diff_sec < 0) { diff_sec = 0; } TimeToEventSec.Add(diff_sec); } } }