On 18-03-14 09:24, Scott Danner wrote:
Hello,

We have a resource allocation problem. Could this be solved with OptaPlanner?

Here it is:
There are N projects located in various places that need work done with machines (just one machine type for all machine work).
Work can be parallelized, e.g. 6 work days can be done in 6 calendar days by one machine or in 3 calendar days by two, or in 4 calendar days by 2 machines (one works 4, other 2).
Take a look at these examples:

Cloud Balancing
  https://www.youtube.com/watch?v=xhCtuM-Hiic
use as less machines as possible

Project Job Scheduling
  https://www.youtube.com/watch?v=_2zweB9JD7c
in case the work has dependencies on other work items

Vehicle routing with Time Windows
  https://www.youtube.com/watch?v=BxO3UFmtAPg
When a work gets assigned to a machine, use shadow variables to capture when the work will be done.
See docs about "variable listeners"


How to best allocate machines to projects?
Looking at planned project work, how many machines are needed for each calendar day? How many machines should we buy, and how many to rent, and when?


Details

For each project, the work can & must be done only in some selected calendar periods.
Machine locations are always known. 

Machine costs:
* moving from location A to location B (per km). Moving also takes time, and a machine can be moved a maximum amount of km per day.
* operating (per day)
* staying in a project location (per day)
* staying in a hangar (per day)
* being rented for one day from location L (total cost = transport from rent location to project location and back, and daily rent)
* being purchased

These are all just constraints, I don't see any special stuff there.
To make them easy to write, the domain classes will need a (shadow) variable that says when a work starts.


A machine also needs an operator, but for now that can be considered a single unit.

Ideally, also take into accounting weather for each project location. Weather might be known with 2 weeks in advance. Just re-plan by blocking the rainy days for some projects?
Yes, see docs on repeated planning.

Thanks,
Scott


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users