Heterogeneous fleet, multiple tank by vehicle, product not link to tank type

119 views
Skip to first unread message

Eric Marchetti

unread,
Aug 20, 2015, 12:50:48 PM8/20/15
to jsprit-mailing-list
Hi,

Completely new to the VRP problems, I try to solve this one:

I have a heterogeneous fleet, each vehicle can transport several products at the same time (from 1 to 6). Each tank has a different size and can contain any product in the size limit of the tank. The same product can occupied several tank but can not be mixed with any other product.

Ex:

Vehicle 1:
- Tank 1 capacity : 100
- Tank 2 capacity : 200

Vehicle 2:
- Tank 1 capacity : 500
- Tank 2 capacity : 500
- Tank 3 capacity : 100

Each delivery request an amount of a product (any product).

Customer 1:
- Product 1: 400

Customer 2:
- Product 2: 700

The solution could be :

Vehicle 1 deliver
- Customer 1 with 
    product 1 in tank 1 for 100
product 1 in tank 2 for 200

Vehicle 2 deliver
- Customer 1 with
product 1 in tank 3 for 100
- Customer 2 with 
product 2 in tank 1 for 500
product 2 in tank 2 for 200

Vehicle capacity is therefore not related to the type of product to be delivered but only to the sizes of different tanks.

In addition to these constraints, I have time constraints and skils constraints. (but those are already handle by jscript)

Currently I do not see how to solve the capacity problem with the functionality provided by jscript. (addCapacityDimension)

Would you have an idea to solve this?

Best regards.

(Sorry bad english, not my mother language)

Stefan Schroeder

unread,
Aug 24, 2015, 2:40:16 PM8/24/15
to jsprit-ma...@googlegroups.com
Hi,

Your problem requires jsprit to split deliveries. This is not possible yet. Currently, I only see one workaround. Split your deliveries into smaller units in advance, i.e. one service with a size of 300 might become 3 services each with a size of 100. However, it will certainly blow up your problem which in turn decreases performance, and I do not know whether this yields reasonable results. I assume that the smaller the splitted services are, the better the results (= the longer the computation time).

Best,
Stefan

Am 20/08/15 um 18:50 schrieb Eric Marchetti:
--
You received this message because you are subscribed to the Google Groups "jsprit-mailing-list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jsprit-mailing-...@googlegroups.com.
To post to this group, send email to jsprit-ma...@googlegroups.com.
Visit this group at http://groups.google.com/group/jsprit-mailing-list.
For more options, visit https://groups.google.com/d/optout.

Eric Marchetti

unread,
Aug 24, 2015, 4:25:47 PM8/24/15
to jsprit-mailing-list
Hi, thanks for your answer.

I don't think the main problem is the delivery splitting. 

Currently, as i have understood, jsprit is based on a scale optimization (quantity, area, volume, ...) I try to set up a optimization by product, but the products are not associated with a tank and are not associated with a dimension .

Best regards.

Stefan Schroeder

unread,
Aug 24, 2015, 4:29:41 PM8/24/15
to jsprit-ma...@googlegroups.com
If delivery splitting is not the problem, I have not entirely understood your problem. Could you make another simple example for me?

Am 24/08/15 um 22:25 schrieb Eric Marchetti:

Eric Marchetti

unread,
Aug 24, 2015, 7:28:49 PM8/24/15
to jsprit-mailing-list
For sure, my english is not the best of the world :p

Thanks for your patience.

As i have see, jscript allow to declare 6 dimensions by vehicle. A dimension is a number the vehicle can hold in one unit : ex : 1200 liter of water and 500kg of apple.

When a service is created, I can ask any number in any dimension : ex :
- Customer 1 want 500 liter of water
- Customer 2 want 100 kgs of apple.

-----------

In my case, my vehicle have from 1 to 6 tank. Each tank can carry any product but product can not be mixed. Ex:
Vehicle 1 : 
- Tank 1 : 1200 liter of any product (dimension 1)
- Tank 2 : 500 liter of any product (dimension 2)

When a customer make an order, i can't specify a dimension, I only know than a customer want 300 liter of a product. The product can be delivered by vehicle 1 with first tank or with second tank, depend on other deliveries. The product is not tied to a dimension and can fit in any tank. So i can't express the order with this :

Service.Builder.newInstance("1").addSizeDimension(<dimension_index>, 300)
<dimension_index> is not known when services are created.

Hoping to have been more explicit.

Best regards.
Eric.

in...@opendoorlogistics.com

unread,
Aug 25, 2015, 3:01:35 AM8/25/15
to jsprit-mailing-list
Hi Eric,

Are the tank capacities on a single vehicle different or is each tank identical? I suspect this will be harder to solve if they are different as you may also need to  consider the best tank to use when inserting a stop onto a route (which will be dependent on the remaining stops to be inserted).

Best regards, Phil

Philip Welch
Open Door Logistics Limited
Specialists in open source solutions for transport logistics.

Skype: opendoorlogistics


---- On Tue, 25 Aug 2015 00:28:49 +0100 eric.mar...@gmail.com wrote ----
--

Eric Marchetti

unread,
Aug 25, 2015, 8:24:25 AM8/25/15
to jsprit-mailing-list, in...@opendoorlogistics.com
Hi,

Tanks capacity are different.on a vehicle
To unsubscribe from this group and stop receiving emails from it, send an email to jsprit-mailing-list+unsub...@googlegroups.com.

in...@opendoorlogistics.com

unread,
Aug 25, 2015, 8:48:56 AM8/25/15
to jsprit-ma...@googlegroups.com
Tricky. I think you'd need some custom hard constraint. When a stop insertion is being tested the constraint would have to look at the sum of all the different products on the vehicles and work out very quickly if all the products could fit on. You'd need some heuristic rule for assigning tanks to products within this constraint. You'd need the rule to be very quick because the constraint would be called all the time - and unless your problem was small you would hit performance issues.

This solution is of course ignoring the split delivery issues.

Philip Welch
Open Door Logistics Limited
Specialists in open source solutions for transport logistics
Developers of ODL Studio - the open source system for territory alignment and vehicle routing.


---- On Tue, 25 Aug 2015 13:24:24 +0100 Eric Marchetti<eric.mar...@gmail.com> wrote ----
Hi,

Tanks capacity are different.on a vehicle

Le mardi 25 août 2015 09:01:35 UTC+2, Philip Welch - Open Door Logistics a écrit :
Hi Eric,

Are the tank capacities on a single vehicle different or is each tank identical? I suspect this will be harder to solve if they are different as you may also need to  consider the best tank to use when inserting a stop onto a route (which will be dependent on the remaining stops to be inserted).

Best regards, Phil

Philip Welch
Open Door Logistics Limited
Specialists in open source solutions for transport logistics.

Skype: opendoorlogistics
To unsubscribe from this group and stop receiving emails from it, send an email to jsprit-mailing-...@googlegroups.com.

Eric Marchetti

unread,
Aug 31, 2015, 5:36:26 PM8/31/15
to jsprit-mailing-list, in...@opendoorlogistics.com
Thanks, I will try.

Best regards.
Reply all
Reply to author
Forward
0 new messages