//public void CalculateStaffingRequirement(int index) //{ // StaffingRequirement[index] = ForceastStaffing[index] - AssignedStaffing[index]; //} public virtual void CalculateAssignedServiceLevel(int index) { //(SL + Math.Max( SL, Math.Min( Staff/CV , 1.0 ))) / 2 var cv = _cvs[index]; var staffing = this.AssignedStaffing[index]; var staffRate = Math.Min(cv == 0 ? 0 : staffing / cv, 1.0); var sl = ForecastLibrary.GetServiceLevel(cv, _ahts[index], AbadonRate, ServiceLevelSecond, staffing); (sl < staffRate ? (sl + staffRate) / 2 : sl).Self(r => { AssignedServiceLevel[index] = r; _weightedSL[index] = cv * r; }); }
public virtual void CalculateForecastStaffing(double[][] shrinkage, int startWeekDayIndex) { var count = _dateIndexer.Count * 96; ForceastStaffing = ForecastLibrary.ForecastStaffing(count, _cvs, _ahts, AbadonRate, ServiceLevelSecond, _goals, shrinkage, startWeekDayIndex, out _goalsExt); }