How to implement immovable planning entities for vehicle routing problem?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

How to implement immovable planning entities for vehicle routing problem?

Hagai
I am implementing a vehiclerouting like solution with OptaPlanner 6.0.1.Final.
According to the documentation for continuous planning, the way to 'lock' parts of the solution is by declaring a movableEntitySelectionFilter on the planning entity: Section 14.3.1. Immovable planning entities.
However, this does not work well with chained entities where parts of the solution is calculated, like in the vehiclerouting example.

For example, let's assume the following chains, where [Customer A] and [Customer C] are immovable:
[Vehicle 1] <- [Customer A] <- [Customer B]
[Vehicle 2] <- [Customer C] <- [Customer D]

Even if we filter immovable entities, a move to set the variable [Vehicle 2] as previous standstill to [Customer B] can be selected with the following result that changes the immovable entity [Customer C]:
[Vehicle 1] <- [Customer A] 
[Vehicle 2] <- [Customer B] <- [Customer C] <- [Customer D]

A workaround is to filter moves with immovable entities as well as moves with immovable variables (variables are also entities). However, this can only work when immovable entities are placed at the beginning of chines before any movable entities.

Is there a better way to implement immovable planning entities for vehicle routing problem?
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] How to implement immovable planning entities for vehicle routing problem?

ge0ffrey
Administrator

On 07-05-14 18:22, Hagai wrote:

> I am implementing a vehiclerouting like solution with OptaPlanner
> 6.0.1.Final.
> According to the documentation for continuous planning, the way to 'lock'
> parts of the solution is by declaring a movableEntitySelectionFilter on the
> planning entity: Section 14.3.1. Immovable planning entities.
> However, this does not work well with chained entities where parts of the
> solution is calculated, like in the vehiclerouting example.
>
> For example, let's assume the following chains, where [Customer A] and
> [Customer C] are immovable:
> [Vehicle 1] <- *[Customer A]* <- [Customer B]
> [Vehicle 2] <- *[Customer C]* <- [Customer D]
>
> Even if we filter immovable entities, a move to set the variable [Vehicle 2]
> as previous standstill to [Customer B] can be selected with the following
> result that changes the immovable entity [Customer C]:
> [Vehicle 1] <- *[Customer A]*
> [Vehicle 2] <- [Customer B] <- *[Customer C]* <- [Customer D]
>
> A workaround is to filter moves with immovable entities as well as moves
> with immovable variables (variables are also entities). However, this can
> only work when immovable entities are placed at the beginning of chines
> before any movable entities.
>
> Is there a better way to implement immovable planning entities for vehicle
> routing problem?

Can you report this in a jira?
As part of fixing that jira, I 'll add the ability to lock entities in
the example TSP or VRP (like it's possible in course scheduling).

>
>
> --
> View this message in context: http://drools.46999.n3.nabble.com/How-to-implement-immovable-planning-entities-for-vehicle-routing-problem-tp4029467.html
> Sent from the Drools: User forum mailing list archive at Nabble.com.
> _______________________________________________
> rules-users mailing list
> [hidden email]
> https://lists.jboss.org/mailman/listinfo/rules-users
>


_______________________________________________
rules-users mailing list
[hidden email]
https://lists.jboss.org/mailman/listinfo/rules-users
Reply | Threaded
Open this post in threaded view
|

Re: [rules-users] How to implement immovable planning entities for vehicle routing problem?

Hagai