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); }
////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); }
//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); }
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); }
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); }