// Two partial plans are equal if they agree on how many ambulances have been assigned to each place/time slot public bool Equals(PartialEMSPlanBranch other) { for (int i = 0; i < FullAmbs.Length; i++) { if (FullAmbs[i] != other.FullAmbs[i] || PartAmbs[i] != other.PartAmbs[i]) { return(false); } } return(true); }
public override Branch[] GetBranches() { Branch[] regions = new Branch[2 * FullAmbs.Length]; for (int i = 0; i < FullAmbs.Length; i++) { // Add a plan with an extra full time ambulance in each possible way int[] newPlanFull = (int[])FullAmbs.Clone(); newPlanFull[i]++; regions[i] = new PartialEMSPlanBranch(newPlanFull, PartAmbs, TargetAmbulanceCount, rand); // Do the same for part time int[] newPlanPart = (int[])PartAmbs.Clone(); newPlanPart[i]++; regions[i + FullAmbs.Length] = new PartialEMSPlanBranch(FullAmbs, newPlanPart, TargetAmbulanceCount, rand); } return(regions); }