Hi Geoffrey,
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@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
-- With kind regards, Geoffrey De Smet
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users