public virtual int NumberOfMissingBreaks() { var santaBreaks = new Dictionary <int, int>(); foreach (var v in OptimizationInput.Visits.Where(v => v.IsBreak)) { if (santaBreaks.ContainsKey(v.SantaId)) { throw new InvalidOperationException("each santa can only have at most one break"); } santaBreaks.Add(v.SantaId, v.Id); } return(NonEmptyRoutes.Count(r => santaBreaks.ContainsKey(r.SantaId) && r.Waypoints.All(wp => wp.VisitId != santaBreaks[r.SantaId]))); }
public int NumberOfRoutes() { return(NonEmptyRoutes.Count()); }