Pickup Route Planer is to find a comparatively better route probably best one by considering minimum penalty (according to client's satisfaction) using Simulated Annealing Algorithm.
This program takes clients' location (longitude and latitude) and preferable time slot (available to pickup) and generates a route with an as low possible penalty and set a pickup time for each of the selected clients. If the client is not selected in this route plan is set to pick up time ' -1'.
For more details check the file named 'Problem Descriptions'.
- ClientAddressGeneratorService: Generates Random Clients according to a pre-defined base or headquarter address and write it in the userdefined file.
- AddressReaderService: Read Clients info and base/HQ info form the user provided csv data file.
- Util: Contains most of the algorithms like distance calculator and time need to visit a node and so on.
- SimulatedAnnealing: Modified implementation of Simulated Annealing Algorithm with INITIAL_TEMPERATURE = 999, MIN_TEMPERATURE = 0.99, and RATE_OF_COOLING = 0.005 and the penalty checker check penalty with O(N) (N = Number of Clients) complexity.
- PickupBoyDriver: Driver class to calculate pickup time ann penalty for the user input and find a relatively better route.
Input
Longitude,Latitude,StartTime,EndTime
30.000000,70.000000,600,1800
30.069334,70.096248,1719,1800
30.091369,70.083614,1418,1496
30.092924,70.041599,1411,1491
30.086941,70.093421,1212,1286
30.048382,70.078103,796,804
30.029958,70.085493,1550,1566
30.038990,70.012508,1041,1077
30.097868,70.007142,878,898
30.003641,70.088746,830,889
30.048452,70.033175,1076,1086
Output
Longitude,Latitude,StartTime,EndTime,PickupTime
30.000000,70.000000,600,1800,600
30.091369,70.083614,1418,1496,626
30.097868,70.007142,878,898,646
30.048382,70.078103,796,804,669
30.069334,70.096248,1719,1800,688
30.086941,70.093421,1212,1286,705
30.038990,70.012508,1041,1077,722
30.048452,70.033175,1076,1086,733
30.003641,70.088746,830,889,755
30.092924,70.041599,1411,1491,775
30.029958,70.085493,1550,1566,796
30.000000,70.000000,600,1800,810
Penalty count for this route : 0