Skip to main content
Cluster Optimization

Learn more about how to Cluster Optimization works.

e
Written by eLogii
Updated over 2 months ago

Cluster optimization allows users to create Routes and optimize them based on a cluster or Tasks. In eLogii, a cluster represents a group of Tasks in an approximate vicinity, which can be adjusted based on your preferences, meaning that a Cluster can be expanded, or broken down.

Cluster optimization can be performed as a general optimization for all your Tasks, or you can perform it as a part of Team-based optimization by selecting the Team (or Teams) you want to perform this type of optimization for. You can do this by clicking on the Teams section on the planning screen option bar. If you select a specific Team to optimize for, only the Tasks assigned to that Team will be shown on the map and only those Tasks will be taken into account for optimization.

How Cluster Optimization Works

Once this feature is enabled, an additional option will appear in the Optimization dialogue called Cluster Optimization. Once you click this option, a pop-up will appear, as shown in the image below.

You will be presented with the option to choose the clustering basis, which can be by the number of clusters, or by distance, and you will be able to make adjustments within these bases.

  • By number of clusters - This lets you define the maximum number of clusters you would like to create. This will tell the system to adjust the cluster distances to be able to create a defined number of clusters.

  • By distance - Doesn't impose a limit in terms of how many clusters will be created, it allows you to specify the maximum distance between the points (Tasks), and it creates clusters based on that. The number of clusters will depend entirely on the provided data.

Number of Clusters

This basis allows you to select a method based on which clusters are formed. It is possible to choose between the following 3 methods.

  1. K-Means++ (Non-deterministic) - Default option. It works quickly, and it's an improved version of the regular K-Means clustering algorithm, which means that it avoids local minimums. Because this method uses a non-deterministic algorithm to create clusters, we can run it multiple times and we may get different results.

  2. Constrained K-Means - This method comes with additional options to further constrain cluster creation by defining the Minimum and the Maximum number of cluster items. This works well in tandem with other constraints you might already have on your account, so for example, if you have Route Stop Limit defined, it would be useful to use that value for the maximum number of cluster items (Tasks), and if you would like to avoid very small clusters, a number of a minimum number of items (Tasks) should be defined.

    It is also important to note that the number we get by multiplying Cluster count with the Maximum number of items must be greater than the number of Tasks you have available. If we define a smaller number than the number of available Tasks, it will be impossible to perform clustering because not all Tasks can be included.

    Constrained K-Mean is particularly useful when we want to balance work for an unknown number of Drivers.

  3. K-Means (Deterministic) - This method uses the regular K-Means algorithm, which can run into the aforementioned local minimum problems, however because this method is deterministic, it means that you will always get the same result for the same data, regardless of how many times you run this process.

Distance

This basis has a singular algorithm currently and the number of clusters will solely depend on the predefined distance between the points and how geographically dispersed the points are.

It is important to mention that the clusters are interactable, meaning that they can be broken down or combined.

To join clusters, simply drag and drop one cluster onto another, or press Shift and click on the desired cluster to split it.

Task selection also works here, so you're able to select a particular Task and drag it to a desired cluster. Press Ctrl + Shift to select the Task (or Tasks) you want to join into a specific cluster and drag them onto that cluster.

Optimization

Once we're happy with our clusters we can run the optimization. The engine will take into account all our presets regarding clustering, as well as other constraints, and run the optimization.

It is important to note that this feature is available on both engines.

Additional options

Once you generate clusters, before optimizing, you can view basic data such as the number of Tasks associated with each cluster, the total service duration for each cluster, and the total dimension sum for all Tasks in each cluster.

It's also possible to assign one or more Drivers to a specific cluster by selecting them and dragging and dropping them into the desired cluster on the list. this will also prompt a custom optimization dialogue allowing you to customize each assignment. Once you're happy with your optimization setup click Optimize.

Did this answer your question?