[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