| /∗ Prestep (3.1.1) ∗/ |
| ConnectingToTheDatabase (connection); |
| DataInitialization (customersList, vehiclesList, depot, sdvrpConstraints); |
| PreparationOfTheInputData (customersList, vehiclesList, depot, sdvrpConstraints); |
| TimeWindowsTranspformations (customersList); |
| RoutesInitialization (customersList, routes); |
| /∗ First step (3.1.2) and (3.1.3) ∗/ |
| //initial solution becomes optimal routes |
| ClarkeWrightSavingsAlgorihm (routes, vehiclesList); |
| AssigningVehiclesToRoutes (routes, vehiclesList); |
| /∗ Second step (3.1.4) ∗/ |
| initialSolution = ReducingTheNumberOfRoutes (routes, customersList, vehiclesList); |
| /∗ Third step (3.1.5) ∗/ |
| //the initial solution marked as the initialSolution becomes the optimal routes |
| TabuSearch (initialSolution, customersList, vehiclesList, sdvrpConstraints); |
| /∗ Fourth step (3.1.6) ∗/ |
| RoutesOptimization(); |
| RoutesOptimization2Customers(); |
| RoutesOptimization3Customers(); |
| InverseTransformation (customersList, initialSolution); |
| /∗ Final step ∗/ |
| //the result of the fourth step, RouteResList, is the optimal list of routes by vehicle |
| StoreOptimalRoutesInTheDatabase (RouteResList); |