"Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
-
Upload
fwdays -
Category
Technology
-
view
2.493 -
download
0
Transcript of "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
![Page 1: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/1.jpg)
Заголовок презентации
Имя и фамилия автора докладаКомпания
Контактные данные 1Контактные данные 2Контактные данные 3Контактные данные 4
VehicleRoutingProblem:howtosolveitinJava?
StanislavKyfenkoSoftServe
skype:stanislav.kyfenkoLinkedIn:https://ua.linkedin.com/in/skyfenko
![Page 2: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/2.jpg)
StanislavKyfenko
• SeniorJavaDeveloperatSoftServe• 5+yearsofexperienceinJavadevelopment• SoftwareengineermainlyfocusedondistributedsystemsdevelopmentandVRPsolutions
https://ua.linkedin.com/in/skyfenko
![Page 3: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/3.jpg)
Agenda
• WhatisVRP?• VRPcharacteristicsandgoals• VRPtypes:fromsimplicitytocomplexity• OptaPlanner andjsprit• Q&A
![Page 4: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/4.jpg)
WhatdoesVRPstandfor?
• VRPisoneofthemostpopularconstraintsatisfactionproblemsintheareasoftransportation,deliveryandlogistics• ThemainpurposeistodesignatleastonerouteforKvehicleswithLcapacityeachtodelivergoodsfromMdepotstoNcustomersinordertomeetthegivenconstraintsandtimewindows.• Effectiveutilizationofresources(vehicles)candecreasetransportationcostssignificantly
![Page 5: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/5.jpg)
VRPcharacteristics
![Page 6: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/6.jpg)
Depot
TimeWindows
Location
![Page 7: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/7.jpg)
Customer
TimeWindows
Location Accessibility
Demands
![Page 8: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/8.jpg)
Vehicle
TimeWindows Returntodepot
Capacity Driverrestperiod
![Page 9: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/9.jpg)
Route
Totalelapsedtime Timedelays
TotaldistanceTotalcost
![Page 10: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/10.jpg)
VRPgoals
Totalelapsedtime Totaldistance Totalcost
Totalconsumedfuel Fleetofvehicles
![Page 11: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/11.jpg)
VRPgoals
Totalprofit Customershappiness
![Page 12: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/12.jpg)
VehicleRoutingProblemtypes
![Page 13: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/13.jpg)
1.TravellingSalesmanProblem
![Page 14: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/14.jpg)
Thesimplestone- TSP
![Page 15: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/15.jpg)
![Page 16: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/16.jpg)
2.CapacitatedVRP
![Page 17: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/17.jpg)
CapacitatedVRP
![Page 18: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/18.jpg)
![Page 19: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/19.jpg)
3.VRPwithmultipledepots
![Page 20: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/20.jpg)
VRPwithmultipledepots
![Page 21: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/21.jpg)
![Page 22: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/22.jpg)
4.SplitDeliveryVRP
![Page 23: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/23.jpg)
SplitDeliveryVRP
![Page 24: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/24.jpg)
![Page 25: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/25.jpg)
5.PeriodicVRP
![Page 26: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/26.jpg)
PeriodicVRP
![Page 27: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/27.jpg)
![Page 28: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/28.jpg)
6.StochasticVRP
![Page 29: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/29.jpg)
StochasticVRP
![Page 30: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/30.jpg)
![Page 31: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/31.jpg)
7.VRPwithTimeWindows
![Page 32: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/32.jpg)
VRPwithTimeWindows
![Page 33: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/33.jpg)
![Page 34: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/34.jpg)
OptaPlanner
![Page 35: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/35.jpg)
OptaPlanner
![Page 36: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/36.jpg)
OptaPlanner
![Page 37: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/37.jpg)
Sample
![Page 38: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/38.jpg)
Sample
![Page 39: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/39.jpg)
Similartohard/softconstraints
![Page 40: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/40.jpg)
![Page 41: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/41.jpg)
![Page 42: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/42.jpg)
Samle
![Page 43: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/43.jpg)
GoogleDirectionsAPI
![Page 44: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/44.jpg)
GoogleDirectionsAPI
• Disadvantages:• 2,500freedirectionsrequestsperday• Upto23waypointsallowedineachrequestcontaininganAPIkey• Upto8waypointswhennoAPIkeyissupplied• 10requestspersecond• Optimizationbasedontrafficjamsandroadsinfoonly
![Page 45: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/45.jpg)
OptaPlanner demo
![Page 46: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/46.jpg)
jsprit
![Page 47: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/47.jpg)
jsprit
• jsprit• cansolveproblemswithpickupsanddeliveries,backhauls,heterogeneousfleets,finiteandinfinitefleets,multipledepots,timewindows,openroutes,differentstartandendlocations,multiplecapacitydimensions,initialloads,skills…• allowsyoutodefineadditionalstateful andstatelessconstraintstoaccountfortherichnessofyourproblem.• isbenchmarkedagainstclassicalVRPinstances(e.g.Solomoninstances).• isreleasedunderLGPL(v3).
![Page 48: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/48.jpg)
jsprit demo
![Page 49: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/49.jpg)
HowtocopewithVRPeffectively
• Don’tuseMDVRPwhencustomersaremostlyclusteredaroundonedepot• Themoreconstraintsyouhave,thelessprobabilityyousolveVRP• Don’tdefinecontroversialconstraintswiththesamestrength• Dohaveacodetosatisfyhardconstraintsfirst,thensoftones.• Usepositiveconstraintstomaximizevariableandnegativeones– tominimize
![Page 50: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/50.jpg)
Thankyouforattention
![Page 51: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко](https://reader031.fdocuments.in/reader031/viewer/2022022414/587ac4391a28abc0478b781b/html5/thumbnails/51.jpg)
References
• https://github.com/graphhopper/jsprit• http://jsprit.github.io/• https://github.com/droolsjbpm/optaplanner• http://www.diku.dk/hjemmesider/ansatte/sropke/Papers/PHDThesis.pdf• https://docs.jboss.org/optaplanner/release/latest/optaplanner-docs/html_single