[rules-users] Continuous Planning values for task planning
Geoffrey De Smet
ge0ffrey.spam at gmail.com
Sun Jul 22 14:05:06 EDT 2012
Presuming that you don't want to leave space between tasks, you can
design your model differently by using the "chained" functionality:
it will be far more efficient and the planning variable won't be continuous.
Let's presume you're scheduling Tasks to Persons.
@PlanningEntity
class Task implements TaskOrPerson {
...
@PlanningVariable(chained = true)
@ValueRanges({
@ValueRange(type = ValueRangeType.FROM_SOLUTION_PROPERTY,
solutionProperty = "taskList"),
@ValueRange(type = ValueRangeType.FROM_SOLUTION_PROPERTY,
solutionProperty = "personList",
excludeUninitializedPlanningEntity = true)})
public TaskOrPerson getPreviousTaskOrPerson() {
return previousTaskOrPerson;
}
public int getDuration() {
return duration;
}
public int getStartingTime() {
int startingTime = 0;
TaskOrPerson taskOrPerson = getPreviousTaskOrPerson();
while (taskOrPerson instanceof Task) { // Every chain is
guarantee to end up with an anchor (= Person)
startingTime += ((Task) taskOrPerson).getDuration();
taskOrPerson = ((Task)
taskOrPerson).getPreviousTaskOrPerson()
}
return startingTime;
}
}
class Person implements TaskOrPerson {
}
For a good example, take a look at the VehicleRouting example.
For more info about chaining, in the manual see section 4.3.4.2.6. Chained
http://docs.jboss.org/drools/release/5.4.0.Final/drools-planner-docs/html_single/index.html
Op 22-07-12 18:00, Josef Bajada schreef:
> Hi,
>
> I am new to Drools and Drools Planner, so apologies if I am asking
> anything obvious.
>
> My objective is to implement a simple (for now) planner which
> schedules tasks according to 2 main criteria:
> - Their duration (in seconds)
> - Their dependencies on other tasks (e.g. Hard Constraint that Task B
> has to start between 180 and 200 seconds after Task A finishes).
>
> Since there are gaps between dependent tasks as part of the hard
> constraints other tasks can be fitted in between dependent tasks.
> So the Solver needs to find the optimal start time for each task that
> satisfies the hard constraints, and in the shortest total timeline
> possible to complete all tasks (soft constraint).
>
> The main problem I am finding is that this start time, which is
> essentially the planning variable is a continuous variable.
> Chapter 4 of the Drools documentation mentions very briefly (Section
> 4.3.4.1) that planning variables can be continuous, but there does
> not seem to be any more details about how to achieve this.
>
> Even if the planning variable was discrete (say bins of 5 second
> intervals), there is no upper bound as such.
>
> How is it best to handle such planning variables in Drools Planner?
>
> thanks,
> josef
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
--
With kind regards,
Geoffrey De Smet
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20120722/549b91d0/attachment.html
More information about the rules-users
mailing list