Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #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);
                }
            }
        }