Font size

NO Shipments Scheduling

In this example, we will learn how we can model storage at a customer site by representing such customer as a DC. Also, in this example we will be using a shadow DC to make a model more flexible. This will help us create a schedule of shipments of different products by different transportation means within 1 month.

For a better understanding of the scenario and its key features you can watch the demo video of this example.

Problem definition

We consider a supply chain in Norway comprising:

  • Distribution center supplying customers
  • 11 customers
  • 11 petroleum products

Delivery can be made by: RTC (Rail Tank Car), Tanker, PL, PL 1, and PL 2 (Oil products pipelines). The delivery method is agreed upon in advance.


Organize shipping schedule, allowing us to satisfy demand of all customers, deliver shipments by the corresponding vehicle type, and meet the physical restrictions of distribution center (max stock and max throughput).

Replacing Customers with DCs

Customer objects in ALX do not have their storage and thus cannot accumulate products. That means that all the products should be stored at DCs and delivered to the customers on the last day.

As an oil supplier we are committed to supply a certain amount of goods by the end of the month, and we only need to optimally schedule shipments. We do not have data on demand per period (daily demand in our case), and since we know only total demand, we need to represent customers as sites. This can be done by using DCs. We will specify their demand as Min Stock and Max Stock for the last period (31st day).

This way we defined delivery schedule for a month for customers (represented by DCs). These customers will be accumulating products until the 31st day.

Shadow objects

The shadow DCs that we are using in this scenario are located in the same place as main DCs. This is done to define the supplier and the customer objects.

Since some products need to be delivered to one customer by more than one vehicle type, we need to define different facilities for every vehicle type. For example, Customer 2 should receive Product 2 by the PL 2 and the RTC vehicle types, so we define at least 2 facilities Customer 2 PL 2 and Customer 2 RTC in the same location. The same is done for every customer.

As for the supplier, we define 7 facilities in total. The objects representing the oil suppliers are:

  • DC — defines the shipment plan of oil products per day.
  • Trestle 1, Trestle 2, Trestle 3 — defines the trestles throughput and products distribution by the RTC.
  • MPPL 1, MPPL 2 — defines pipeline throughput and products distribution by PL 1 and PL 2.
  • Port — defines port throughput and products distribution by the Tanker.
Negative revenue and validation

Since we cannot get revenue in a usual way (because we cannot sell products to DCs), we define carrying costs for the customers on the last day of the month as a negative number. That way all the products, which will be delivered to the customers up to the end of the optimization, will be considered sold. The revenue in this case is estimated as a carrying cost multiplied by the number of delivered products.

On running the experiment a validation window will pop-up warning us that the carrying cost is a negative number. We did that on purpose, so we can skip the warning and proceed to the network optimization experiment.


The result of the experiment shows that we satisfy total customers demand without violating the limitations of port, trestles, pipelines throughput and storage capacity.

How can we improve this article?