Top Banner
Заголовок презентации Имя и фамилия автора доклада Компания Контактные данные 1 Контактные данные 2 Контактные данные 3 Контактные данные 4 Vehicle Routing Problem: how to solve it in Java? Stanislav Kyfenko SoftServe skype: stanislav.kyfenko LinkedIn: https://ua.linkedin.com/in/skyfenko
51

"Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Apr 15, 2017

Download

Technology

fwdays
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Заголовок презентации

Имя и фамилия автора докладаКомпания

Контактные данные 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?" Станислав Кифенко

StanislavKyfenko

• SeniorJavaDeveloperatSoftServe• 5+yearsofexperienceinJavadevelopment• SoftwareengineermainlyfocusedondistributedsystemsdevelopmentandVRPsolutions

https://ua.linkedin.com/in/skyfenko

Page 3: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Agenda

• WhatisVRP?• VRPcharacteristicsandgoals• VRPtypes:fromsimplicitytocomplexity• OptaPlanner andjsprit• Q&A

Page 4: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

WhatdoesVRPstandfor?

• VRPisoneofthemostpopularconstraintsatisfactionproblemsintheareasoftransportation,deliveryandlogistics• ThemainpurposeistodesignatleastonerouteforKvehicleswithLcapacityeachtodelivergoodsfromMdepotstoNcustomersinordertomeetthegivenconstraintsandtimewindows.• Effectiveutilizationofresources(vehicles)candecreasetransportationcostssignificantly

Page 5: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

VRPcharacteristics

Page 6: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Depot

TimeWindows

Location

Page 7: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Customer

TimeWindows

Location Accessibility

Demands

Page 8: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Vehicle

TimeWindows Returntodepot

Capacity Driverrestperiod

Page 9: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Route

Totalelapsedtime Timedelays

TotaldistanceTotalcost

Page 10: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

VRPgoals

Totalelapsedtime Totaldistance Totalcost

Totalconsumedfuel Fleetofvehicles

Page 11: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

VRPgoals

Totalprofit Customershappiness

Page 12: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

VehicleRoutingProblemtypes

Page 13: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

1.TravellingSalesmanProblem

Page 14: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Thesimplestone- TSP

Page 15: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
Page 16: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

2.CapacitatedVRP

Page 17: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

CapacitatedVRP

Page 18: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
Page 19: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

3.VRPwithmultipledepots

Page 20: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

VRPwithmultipledepots

Page 21: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
Page 22: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

4.SplitDeliveryVRP

Page 23: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

SplitDeliveryVRP

Page 24: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
Page 25: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

5.PeriodicVRP

Page 26: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

PeriodicVRP

Page 27: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
Page 28: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

6.StochasticVRP

Page 29: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

StochasticVRP

Page 30: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
Page 31: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

7.VRPwithTimeWindows

Page 32: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

VRPwithTimeWindows

Page 33: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
Page 34: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

OptaPlanner

Page 35: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

OptaPlanner

Page 36: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

OptaPlanner

Page 37: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Sample

Page 38: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Sample

Page 39: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Similartohard/softconstraints

Page 40: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
Page 41: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко
Page 42: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Samle

Page 43: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

GoogleDirectionsAPI

Page 44: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

GoogleDirectionsAPI

• Disadvantages:• 2,500freedirectionsrequestsperday• Upto23waypointsallowedineachrequestcontaininganAPIkey• Upto8waypointswhennoAPIkeyissupplied• 10requestspersecond• Optimizationbasedontrafficjamsandroadsinfoonly

Page 45: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

OptaPlanner demo

Page 46: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

jsprit

Page 47: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

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?" Станислав Кифенко

jsprit demo

Page 49: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

HowtocopewithVRPeffectively

• Don’tuseMDVRPwhencustomersaremostlyclusteredaroundonedepot• Themoreconstraintsyouhave,thelessprobabilityyousolveVRP• Don’tdefinecontroversialconstraintswiththesamestrength• Dohaveacodetosatisfyhardconstraintsfirst,thensoftones.• Usepositiveconstraintstomaximizevariableandnegativeones– tominimize

Page 50: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

Thankyouforattention

Page 51: "Vehicle Routing Problem. How to solve it in Java?" Станислав Кифенко

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