0

I am a .NET Developer and in my company we have developed an engine that attributes missions (transport those packages from A to B) to the best matching driver based on simple rules (pickup address, delivery address, driver's address, driver's vehicule caracteristics (max weight, length), distance to travel, package types to transport, etc ...). This engine tries to make its best to provide to the user with the 3 best matching drivers the transport mission.

We are trying to address this scenario with machine learning (100000+ missions in our database). We want to answer this questions: - Who is the best matching driver for this mission? - What is the matching score for XXX driver for this mission?

As a side note, our pool of drivers is evolving (some drivers are removed while some others are added in our system over time).

I am discovering ML and learning about basic ML algorithms, but I can not find an algorithm that could answer to this question.

I would like to develop with the new (still in preview) Microsoft Framework for .NET developers (ML.NET), or maybe Azure Machine Learning Studio or Azure Machine Learning Service

Our data look like (simplified) :

Drivers :

Name        City            VehicleMaxWeight    VehicleLength ... StreetName, ZipCode, Country, Latitude, Longitude ... 
Pierre      Paris           19000Kg             12m
Francois    Bordeaux        26000Kg             12m
Guillaume   Montpellier     44000Kg             16.50m
Jacques     Montpellier     32000Kg             16.50m
Jean        Paris           12000Kg             8m
Bernard     Montauban       26000Kg             12m     

Transport mission history :

PickupCity      DeliveryCity    Service         TotalWeight     TotalLenght     DriverAssignment        (Distance to PickupCity)
Paris           Marseille       S1               2000Kg         5m              Jean                    (5km)
Paris           Lyon            S2              15000Kg         10m             Pierre                  (8km)
Toulouse        Lyon            S3              5000Kg          5m              Bernard                 (53km)
...             ...             ...             ...             ...             ...                     (...)
Lyon            Paris           S2              3000Kg          3m              ????????????????

Or if the first problem cannot be easily addressed, it would be useful to answer to this question : Which driver can I select to go from Lyon to Paris for service S2, given the following history ?

Transport mission history :

PickupCity      DeliveryCity    Service         DriverAssignment
Paris           Marseille       S1              Jean            
Paris           Lyon            S2              Pierre          
Toulouse        Lyon            S3              Bernard         
...             ...             ...             ...             
Lyon            Paris           S2              ????????????????

I would try to predict the column

DriverAssignment

Could you please help me find an algorithm for this task ? And maybe how I can implement it in ML.NET or Azure ML Studio / Service ?

Thank you !

Vincent
  • 687
  • 2
  • 6
  • 8
  • This appears to be a route optimization / resource allocation problem. ML is not necessarily the most suitable approach to such problems. The question that needs to be answered first is: Is ML the right approach to this problem? This can be illuminating: https://developers.google.com/optimization/routing/ – Reveille Nov 12 '18 at 22:28
  • We have other algrithm to compute the itinerary. In our case, we just want to choose a driver based on what we need to transport from an address to another and what capacity the driver is able to carry – Vincent Nov 13 '18 at 09:36
  • I have edited my question with a simplification if the first problem cannot be solved by ML. If we just take into account the history of previous transports, and which service did the drivers had to transport (S1, S2, S3...) and who was assigned, are we able to predict who we can assign for the next mission ? If I add or remove drivers in the system, do I need to train again the model ? – Vincent Nov 13 '18 at 10:09

1 Answers1

0

If ML is to be used, this can be formulated as a recommendation system problem: given the sequence of the drivers a mission has been matched to before, what drivers should be recommended for the next time this mission comes up again? Both content-based and collaborative filtering recommender systems can be used. If a mission occurs to be all new (no match history), collaborative filtering can still be used.

OR, however, might be a better fit for this problem. The underlying assumption of ML is: the past operation practices (the data you have shared) have been optimal; this is what the ML will learn as good practices and will use subsequently to give future recommendations. Unless reinforcement learning is used, in which case you need to come up with some notion of cumulative reward.

Reveille
  • 4,359
  • 3
  • 23
  • 46