コード例 #1
0
        private List <TimeWindow> GenerateWindows_2(List <DateTime> DatesList, int WindowSize)
        {   //this includes the windows whose start date is not one of the loss date
            int      count    = DatesList.Count;
            TimeSpan diff     = DatesList[count - 1] - DatesList[0];
            int      daysBtwn = diff.Days;

            List <TimeWindow> lst_timeWindows = new List <TimeWindow>();

            DateTime lastStart = new DateTime();

            if (count > 0)
            {
                lastStart = DatesList[count - 1];
            }

            for (int i = 0; i <= daysBtwn; i++)
            {
                TimeWindow oneWindow = new TimeWindow();

                DateTime current  = DatesList[0].AddDays(i);
                DateTime upperlim = current.AddDays(WindowSize - 1);
                oneWindow.SetStartandEnd(current, upperlim);
                lst_timeWindows.Add(oneWindow);
            }

            return(lst_timeWindows);
        }
コード例 #2
0
        ////assuming dateslist is a sorted list of dates in integer format
        private List <TimeWindow> GenerateWindowsOnlyOneLO(List <DateTime> DatesList, int WindowSize)
        {
            int interval = WindowSize - 1;
            int count    = DatesList.Count;
            List <TimeWindow> lst_timeWindows = new List <TimeWindow>();

            for (int i = 0; i < count; i++)
            {
                DateTime current  = DatesList[i];
                DateTime lowerlim = current.AddDays(-interval);
                DateTime upperlim = current.AddDays(interval);
                double   datediff = 0;

                if (i < count - 1)
                {
                    datediff = (DatesList[i + 1] - DatesList[i]).TotalDays;
                }

                TimeWindow leftWindow = new TimeWindow();
                leftWindow.SetStartandEnd(lowerlim, current);
                lst_timeWindows.Add(leftWindow);
                //Console.WriteLine("Left Window - (" + leftWindow.start + "," + leftWindow.end + "]");

                //to eliminate empty windows and exclude the last window
                if (datediff <= interval && i < (count - 1))
                {
                    TimeWindow rightWindow = new TimeWindow();
                    rightWindow.SetStartandEnd(current, upperlim);
                    lst_timeWindows.Add(rightWindow);
                    //Console.WriteLine("Right Window - (" + rightWindow.start + "," + rightWindow.end + "]");
                }
            }
            return(lst_timeWindows);
        }
コード例 #3
0
        //assuming dateslist is a sorted list of dates in integer format
        private List <TimeWindow> GenerateWindows(ArrayList DatesList, int WindowSize)
        {
            double            interval        = WindowSize + 0.5;
            int               count           = DatesList.Count;
            List <TimeWindow> lst_timeWindows = new List <TimeWindow>();

            for (int i = 0; i < count; i++)
            {
                double current  = Convert.ToDouble(DatesList[i]);
                double lowerlim = Convert.ToDouble(DatesList[i]) - interval;
                double upperlim = Convert.ToDouble(DatesList[i]) + interval;
                double datediff = 0;

                if (i < count - 1)
                {
                    datediff = Convert.ToDouble(DatesList[i + 1]) - Convert.ToDouble(DatesList[i]);
                }

                TimeWindow leftWindow = new TimeWindow();
                leftWindow.SetStartandEnd(lowerlim, current);
                lst_timeWindows.Add(leftWindow);
                Console.WriteLine("Left Window - (" + leftWindow.start + "," + leftWindow.end + "]");

                //to eliminate empty windows and exclude the last window
                if (datediff <= interval && i < (count - 1))
                {
                    TimeWindow rightWindow = new TimeWindow();
                    rightWindow.SetStartandEnd(current, upperlim);
                    lst_timeWindows.Add(rightWindow);
                    //Console.WriteLine("Right Window - (" + rightWindow.start + "," + rightWindow.end + "]");
                }
            }
            return(lst_timeWindows);
        }
コード例 #4
0
        private List <TimeWindow> GenerateWindows_3(List <DateTime> DatesList, int WindowSize)
        {   //same logic as Windows_2, but remove the 0 loss windows and duplicate windows
            List <TimeWindow> lst_timeWindows = new List <TimeWindow>();

            int count = DatesList.Count;

            if (count == 0)
            {
                return(lst_timeWindows);
            }

            TimeSpan diff     = DatesList[count - 1] - DatesList[0];
            int      daysBtwn = diff.Days;

            DateTime lastStart = new DateTime();

            lastStart = DatesList[count - 1];


            List <DateTime> preWindowDates = new List <DateTime>();

            for (int i = 0; i <= daysBtwn; i++)
            {
                TimeWindow oneWindow = new TimeWindow();

                DateTime current  = DatesList[0].AddDays(i);
                DateTime upperlim = current.AddDays(WindowSize - 1);

                List <DateTime> tempDates = new List <DateTime>();

                for (DateTime dt = current; dt <= upperlim; dt = dt.AddDays(1))
                {
                    tempDates.Add(dt);
                }

                List <DateTime> currWindowDates = tempDates.Intersect(DatesList).ToList();
                //List<DateTime> inter1 = currWindowDates.Except(preWindowDates).ToList();
                //List<DateTime> inter2 =  preWindowDates.Except(currWindowDates).ToList();
                //if (currWindowDates.Count() > 0 && (inter1.Count() > 0 || inter2.Count() > 0))
                if (currWindowDates.Count() > 0)
                {
                    oneWindow.SetStartandEnd(current, upperlim);
                    lst_timeWindows.Add(oneWindow);
                }
                preWindowDates = currWindowDates;
            }
            return(lst_timeWindows);
        }
コード例 #5
0
        private List <TimeWindow> GenerateWindows(List <DateTime> DatesList, int WindowSize)
        {
            int count = DatesList.Count;

            List <TimeWindow> lst_timeWindows = new List <TimeWindow>();

            DateTime lastStart = new DateTime();

            if (count > 0)
            {
                lastStart = DatesList[count - 1];
            }

            for (int i = 0; i < count; i++)
            {
                TimeWindow oneWindow = new TimeWindow();
                DateTime   current   = DatesList[i];
                DateTime   upperlim  = DatesList[i].AddDays(WindowSize - 1);

                oneWindow.SetStartandEnd(current, upperlim);
                lst_timeWindows.Add(oneWindow);

                //if (upperlim >= lastStart)
                //{
                //    oneWindow.SetStartandEnd(current, upperlim);
                //    lst_timeWindows.Add(oneWindow);
                //    return lst_timeWindows;
                //}
                //else
                //{
                //    oneWindow.SetStartandEnd(current, upperlim);
                //    lst_timeWindows.Add(oneWindow);
                //}
            }

            return(lst_timeWindows);
        }