Distribution Planner¶
Warning
This task is sold separately from the available licenses. Contact us for specific pricing.
The Distribution Planner task plans goods distribution over a network within a specific timeframe, taking into account the cost of moving the goods, the lead time and the process time required in the warehouse.
This task calculates the best route goods need to follow both minimizing transport costs and fulfilling the demand for destination nodes in the required timeframe.
The output of the task are three columns, which are added at the end of the source dataset, containing:
the amount of goods moved. The attribute associated with this result in the output file is called moved.
the amount of goods remaining in the source location. The attribute associated with this result in the output file is called new(source_quantity_attribute).
the amount of goods now in the target location. The attribute associated with this result in the output file is called new(destination_quantity_attribute).
Note
The Distribution Planner task checks that the attributes defining the source and the destination are consistent with the dates. Basically, it performs two checks:
The task verifies that the attributes defining the source and destination are equal in number and compatible in type, based on the links connecting all source-destination pairs.
The task checks that the quantity of material in a specific node (which can be a source in a specific row and destination in another one) at a given date is always the same in the other rows of the dataset.
More specifically, on a given date, a source node must have an associated quantity. If, on the same date, that node is also a destination, it must have the same quantity associated with it. So, the linked attributes must match and have compatible data types.
The Distribution planner task has two main tabs:
the Options tab, where users can customize the available options to obtain the desired output.
the Results tab, where users can visualize the computation results.
The Options tab¶
The Options tab contains all the options which can be customized to obtain the desired output. It is divided into three sub-tabs, the Basic, the Edges and the Nodes tabs.
The Available attributes list, containing the dataset’s attributes available for the analysis, is always displayed, no matter which tab is being edited.
Basic tab
The Basic tab is divided into two areas:
an attribute drop area, called Source to destination attributes, whose layout is similar to the Join task, where the source and destination attributes will be dropped and linked one to the other. Multiple attributes can be specified there, as long as the source and destination number of attributes are equal. Every source attribute needs to be connected to a destination attribute, so no attribute both in the source and destination lists can be left unpaired.
- The following options are available in this area:
Source quantities: the attribute defining the initial quantity in the source. Its type must be ordered, and its values can be positive or negative. A positive value indicates the available material which can be moved, while a negative value indicates a demand which must be satisfied.
Destination quantities: the attribute defining the required quantity in the destination node. Its type must be ordered, and its values can be positive or negative. A positive value indicates the quantity available, while a negative value indicates a demand which must be satisfied.
Loading date: the attribute defining the date where goods in the source attribute can leave the warehouse and arrive to the destination on the date specified in the Unloading date attribute.
Unloading date: the attribute defining the date where goods which have left the source on the Loading date arrive to the destination.
A customization area, made of the following options:
Priority value: select the attribute defining the priority of the destinations to which the goods will be sent. Its type must be numeral. The value
1
indicates the highest priority,2
a priority lower than1
, and so on.Cumulate node quantities when changing priority: if selected (default), the node quantities will be cumulated when changing the priority.
Ascending values of the priority attributes refer to higher priorities: if selected, a higher value in the Priority value attribute indicates higher priority. (e.g.: if the Priority value ‘25’ has a higher priority than the Priority value ‘15’)
- Solver used for optimization: select the solver which will be used for the optimization operation. Possible solvers are:
Coin-or: it is a collection of interoperable open source solvers from the repository of open source software maintained by the COIN-OR Foundation. More information can be found in the website.
Symphony: it is an open-source generic MILP solver, callable library, and extensible framework for implementing customized solvers for mixed-integer linear programs (MILPs). More information can be found in the website.
Naive: it is an optimizer developed by Rulex delivering near-optimal solutions within a remarkably short timeframe.
Fast: it is an optimizer developed by Rulex which optimizes the results by prioritizing fast performance over achieving the optimal solution.
Append results: if selected, the results of this computation are appended to the dataset, otherwise they replace the results of the previous computations.
Maximum number of iterations: the maximum number of iterations during computation.
Merge results with original data: if selected, results will be included in the original dataset.
Edges tab
In the Edges tab, you can define the clustering edges. The following options are provided:
Attribute for transport cost: select the attribute defining the cost of moving a unit of material from the source to the destination.
Attribute for maximum quantity to move: select the attribute that defines the maximum total number of units that can be moved between the source and destination at a time.
Attribute for rounding value: select the attribute that defines the minimum number of units that can be moved at a time. For example, three items may be required, but the items may only be available in blocks of ten.
Attribute for time to wait before forwarding: indicate the waiting time in an intermediate node for the goods to their destination (e.g.: quality control, customs operations).
Node tab
In the Nodes tab, you can define the clustering nodes. The following options are provided:
Fixed cost of using a node: specify the inherent cost of shipping to a node as a mathematical weight to be applied in calculating the best solution.
Attribute specifying cost per item for unfulfilled destinations: select the attribute that defines the cost per unit of not satisfying destination requirements.
Default value for the remainder cost (<0 for choosing the maximum cost): define the default value used for the remainder cost when the corresponding attribute is not specified or its value is missing. The default value is ‘-1’, meaning that the remainder cost is more than any other transport cost.
Raise an error if the remainder cost is not provided: if selected, the software raises an error if the remainder cost attribute is not present.
The Results tab¶
In the Results tab, results on computation are displayed.
- In the General Info panel, the following information can be found:
the Task Label
the Elapsed time
the Optimum value of the cost function
Example¶
The following example uses the Demand dataset.
After having imported the dataset, add a Distribution Planner task onto the stage and link it to the import task.
- Open the Distribution Planner task and set the Basic tab options as follows:
Drag the Source and the Destination attributes onto the Source to destination attributes drop area, one on each side, and link them.
Select the Loading Quantity attribute as the Source quantities attribute.
Select the Unloading Quantity attribute as the Destination quantities attribute.
Select the Loading Date attribute as the Loading date attribute.
Select the Unloading Date attribute as the Unloading date attribute.
Select the Priority attribute as the Priority attribute.

- In the Edges tab, configure the following options:
Select the TransportCost attribute as the Attribute for transport cost.
Select MaximumQuantity attribute as the Attribute for maximum quantity to move.
Select the RoundingValue attribute as the Attribute for rounding value.
Select the Flag attribute as the Attribute for time to wait before forwarding.

In the Nodes tab, select the Remainder Cost as the Attribute specifying cost per item for unfulfilled destinations.
Leave all the default settings unchanged.

Save and compute the task.
Right-click on the task and select Take a look, alternatively add a Data Manager task to the flow and link it to the Distribution Planner task.
This is how the output dataset should look like.

See also

This is a sample of the logic which has been followed by the task with the configurations above. Considering the same date of departure, each node has a demand.
There are five nodes, the N1 is the source node, while the N5 is the destination node.
For each node, two values are indicated: the value on the left has higher priority, while the value on the right has lower priority. Remember that positive values indicate the availability, while negative values indicate the demand.
The difficulty of this optimization problem is that the intermediate nodes, which are N2, N3, N4, are intermediate steps to reach the destination N5, and they have no supply to send to the destination node, even though they are both source and destination nodes.
So, it is necessary that the goods go through these intermediate steps to satisfy the demand of N5.
Starting to analyze the first priority, we observe that with an initial availability of 1,000 items in N1, the demands of all other nodes can be fully satisfied according to their maximum load requirements. As these demands are 0, 200, 300, and 400 items, respectively. After having subtracted the demand to the availability, 100 goods are still available in the first priority amount, which will be summed to the availability in the second priority, as in the example above we have checked the Cumulate node quantities when changing priority option.
Analyzing the second priority, which has a starting availability of 1000 (which is 900 in the diagram plus the 100 cumulated from the first priority), we can notice that all the demands can be satisfied as well, having 300, 400, 100, 200 as demand values. If these demands are subtracted to the starting value, the N1 node has 0 availability for both priorities.
The values in the diagram already take into account the cost of moving goods as well as the rounding value and the waiting time.
As it can be seen from the output dataset, the optimal solution is the one going from N1 to N5 going through the N2 and N4 nodes.