51
Заголовок презентации Имя и фамилия автора доклада Компания Контактные данные 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

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

  • Upload
    fwdays

  • View
    2.497

  • Download
    0

Embed Size (px)

Citation preview

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