コード例 #1
0
ファイル: DateEncoderTest.cs プロジェクト: ArtiDi/HTM.Net
        //[TestMethod]
        public void TestScalarPeriodicDates()
        {
            builder = (DateEncoder.Builder)DateEncoder.GetBuilder();
            de      = (DateEncoder)builder
                      .DayOfWeek(11, 24)
                      .Weekend(0, 1)
                      .TimeOfDay(11, 9.5)
                      .Build();

            dt = new DateTime(2010, 7, 3, 6, 00, 00);
            int[] tempArray = new int[de.GetWidth()];
            de.EncodeIntoArray(dt, tempArray);
        }
コード例 #2
0
ファイル: DateEncoderTest.cs プロジェクト: ArtiDi/HTM.Net
        //[TestMethod]
        public void TestDateEncoderRanges()
        {
            // 3 bits for season, 1 bit for day of week, 3 for weekend, 5 for time of day
            // use of forced is not recommended, used here for readability.
            builder = (DateEncoder.Builder)DateEncoder.GetBuilder();

            de = (DateEncoder)builder
                 .DayOfWeek(11, 1.0)
                 .TimeOfDay(11, 2.0)
                 .Build();

            List <string> bitlist = new List <string>();

            Calendar c    = new GregorianCalendar();
            int      year = 2010;
            //for (int year = 1999; year < DateTime.Now.Year + 1; year++)
            {
                dt = new DateTime(year, 01, 01, 0, 0, 0);
                for (int day = 0; day < 7 /*c.GetDaysInYear(year)*/; day++)
                {
                    for (int hour = 0; hour < 24; hour++)
                    {
                        for (int minute = 0; minute < 60; minute += 15)
                        {
                            DateTime dt2 = dt.AddDays(day).AddHours(hour).AddMinutes(minute);
                            try
                            {
                                bits = de.Encode(dt2);
                            }
                            catch (Exception)
                            {
                                Debug.WriteLine("F****d up on date: " + dt2);
                                Assert.Fail();
                            }
                            Assert.IsNotNull(bits);
                            //Assert.AreEqual(63, bits.Length);
                            bitlist.Add(Arrays.ToString(bits));
                        }
                    }
                }
            }

            //bitlist.ForEach(Console.WriteLine);

            // All bits must be different!
            int count         = bitlist.Count;
            int distinctCount = bitlist.AsParallel().Distinct().Count();

            Assert.AreEqual(count, distinctCount);
        }
コード例 #3
0
ファイル: DateEncoderTest.cs プロジェクト: ArtiDi/HTM.Net
        private void SetUp()
        {
            // 3 bits for season, 1 bit for day of week, 3 for weekend, 5 for time of day
            // use of forced is not recommended, used here for readability.
            builder = (DateEncoder.Builder)DateEncoder.GetBuilder();

            de = (DateEncoder)builder.Season(3)
                 .DayOfWeek(1)
                 .Weekend(3)
                 .TimeOfDay(5)
                 .Build();

            //in the middle of fall, Thursday, not a weekend, afternoon - 4th Nov, 2010, 14:55
            dt = new DateTime(2010, 11, 4, 14, 55, 00);
            DateTime comparison = new DateTime(2010, 11, 4, 13, 55, 00);

            bits = de.Encode(dt);
            int[] comparisonBits = de.Encode(comparison);

            Console.WriteLine(Arrays.ToString(bits));
            Console.WriteLine(Arrays.ToString(comparisonBits));

            //
            //dt.GetMillis();

            // season is aaabbbcccddd (1 bit/month) # TODO should be <<3?
            // should be 000000000111 (centered on month 11 - Nov)
            int[] seasonExpected = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1 };

            // week is MTWTFSS
            // contrary to local time documentation, Monday = 0 (for python
            //  datetime.datetime.timetuple()
            int[] dayOfWeekExpected = { 0, 0, 0, 1, 0, 0, 0 };

            // not a weekend, so it should be "False"
            int[] weekendExpected = { 1, 1, 1, 0, 0, 0 };

            // time of day has radius of 4 hours and w of 5 so each bit = 240/5 min = 48min
            // 14:55 is minute 14*60 + 55 = 895; 895/48 = bit 18.6
            // should be 30 bits total (30 * 48 minutes = 24 hours)
            int[] timeOfDayExpected = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

            expected = ArrayUtils.ConcatAll(seasonExpected, dayOfWeekExpected, weekendExpected, timeOfDayExpected);
        }
コード例 #4
0
ファイル: DateEncoderTest.cs プロジェクト: ArtiDi/HTM.Net
        public void TestScalarDayOfWeek()
        {
            builder = (DateEncoder.Builder)DateEncoder.GetBuilder();
            de      = (DateEncoder)builder
                      .DayOfWeek(11, 24)
                      .Weekend(0, 1)
                      .TimeOfDay(11, 9.5)
                      .Build();

            dt = new DateTime(2016, 2, 15, 00, 00, 00); // monday, midnight
            for (int i = 0; i < 7; i++)
            {
                var scalars   = de.GetScalars(dt.AddDays(i));
                var dayOfWeek = scalars.First(); // first one is day of week
                Assert.AreEqual(i, dayOfWeek);
            }
            for (int i = 0; i < 24; i++)
            {
                var timeScalar = de.GetScalars(dt.AddHours(i)).Last();
                Assert.AreEqual(i, timeScalar);
            }
        }