コード例 #1
0
ファイル: Solution.cs プロジェクト: zhrsama/vrptw
        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();
        }
コード例 #2
0
ファイル: Solution.cs プロジェクト: zhrsama/vrptw
 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();
 }
コード例 #3
0
ファイル: Solution.cs プロジェクト: zhrsama/vrptw
 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();
 }