private void AddNode(AbsNode newNode) { AbsNode lastCustomer = RouteList.Count == 0 ? newNode : RouteList[RouteList.Count - 1]; double lastServiceTime = RouteList.Count == 0 ? 0 : ServiceBeginingTimes[ServiceBeginingTimes.Count - 1]; double serviceBegins = NextServiceBeginTime(newNode, lastCustomer, lastServiceTime); RouteList.Add(newNode); ServiceBeginingTimes.Add(serviceBegins); UpdateId(); }
public void RemoveAt(int position) { RouteList.RemoveAt(position); ServiceBeginingTimes.RemoveAt(position); for (int i = position; i < RouteList.Count; ++i) { double newTime = NextServiceBeginTime(RouteList[i], RouteList[i - 1], ServiceBeginingTimes[i - 1]); ServiceBeginingTimes[i] = newTime; } UpdateId(); }
public void InsertCustomer(Customer newCustomer, int position) { newCustomer = (Customer)newCustomer.ShallowCopy(); newCustomer.Route = this; RouteList.Insert(position, newCustomer); ServiceBeginingTimes.Insert(position, 0.0); for (int i = position; i < RouteList.Count; ++i) { double newTime = NextServiceBeginTime(RouteList[i], RouteList[i - 1], ServiceBeginingTimes[i - 1]); ServiceBeginingTimes[i] = newTime; } UpdateId(); }