Hi Geoffrey,<div><br></div><div>Well I want to leave &#39;space&#39; between tasks in the situations where there are hard constraints that require me to put this space.</div><div><br></div><div>As a simple example:</div><div>

<br></div><div>Task A: Put pasta in boiling water (duration 40 seconds)</div><div>Task B: Take pasta out of boiling water (duration 50 seconds, cannot start before 7 mins after Task A finishes, cannot start after 8 mins after Task A finishes)</div>

<div>Task C: Chop vegetables (duration 2 minutes).</div><div><br></div><div>This will evidently leave some gaps. The ideal result from the solver should be:</div><div><br></div><div>Task A: at time 0 (ends at 40s)</div><div>

Task C: at time 41s (ends at 2:41)</div><div>Task B: at time 7:40</div><div><br></div><div>There is a gap between C and B which is OK. </div><div><br></div><div>If another Task is added to the story:</div><div><div>Task D: Prepare sauce (duration 7 minutes)</div>

</div><div><br></div><div>I would want the following result:</div><div><br></div><div>Task A: at time 0 (ends at 40s)</div><div>Task D: at time 41s (ends 7:41s)</div><div>Task B: at time 8:42s (ends 9:32s)</div><div>Task C: at time 9:33s (ends 11:33s)</div>

<div><br></div><div>Task C can actually take place before Task A too. </div><div><br></div><div>I still need to read and understand the chaining functionality properly. Do you think it would allow me to achieve the above?</div>

<div><br></div><div>thanks,</div><div><br></div><div>Josef</div><div><br></div><div><br><br><div class="gmail_quote">On 22 July 2012 20:05, Geoffrey De Smet <span dir="ltr">&lt;<a href="mailto:ge0ffrey.spam@gmail.com" target="_blank">ge0ffrey.spam@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    Presuming that you don&#39;t want to leave space between tasks, you can
    design your model differently by using the &quot;chained&quot; functionality:<br>
    it will be far more efficient and the planning variable won&#39;t be
    continuous.<br>
    <br>
    Let&#39;s presume you&#39;re scheduling Tasks to Persons.<br>
    <br>
    @PlanningEntity<br>
    class Task implements TaskOrPerson {<br>
    <br>
        ...<br>
    <br>
        @PlanningVariable(chained = true)<br>
        @ValueRanges({<br>
                @ValueRange(type =
    ValueRangeType.FROM_SOLUTION_PROPERTY, solutionProperty =
    &quot;taskList&quot;),<br>
                @ValueRange(type =
    ValueRangeType.FROM_SOLUTION_PROPERTY, solutionProperty =
    &quot;personList&quot;,<br>
                        excludeUninitializedPlanningEntity = true)})<br>
        public TaskOrPerson getPreviousTaskOrPerson() {<br>
            return previousTaskOrPerson;<br>
        }<br>
    <br>
        public int getDuration() {<br>
            return duration;<br>
        }<br>
    <br>
        public int getStartingTime() {<br>
              int startingTime = 0;<br>
              TaskOrPerson taskOrPerson = getPreviousTaskOrPerson();<br>
              while (taskOrPerson instanceof Task) { // Every chain is
    guarantee to end up with an anchor (= Person)<br>
                    startingTime += ((Task) taskOrPerson).getDuration();<br>
                    taskOrPerson = ((Task)
    taskOrPerson).getPreviousTaskOrPerson()<br>
              }<br>
              return startingTime;<br>
        }<br>
    <br>
    }<br>
    <br>
    class Person implements TaskOrPerson {<br>
    <br>
    }<br>
    <br>
    For a good example, take a look at the VehicleRouting example.<br>
    For more info about chaining, in the manual see section 4.3.4.2.6.
    Chained<br>
     
<a href="http://docs.jboss.org/drools/release/5.4.0.Final/drools-planner-docs/html_single/index.html" target="_blank">http://docs.jboss.org/drools/release/5.4.0.Final/drools-planner-docs/html_single/index.html</a><br>
    <br>
    <div>Op <a href="tel:22-07-12%2018" value="+35622071218" target="_blank">22-07-12 18</a>:00, Josef Bajada
      schreef:<br>
    </div>
    <blockquote type="cite"><div><div class="h5">Hi,
      <div><br>
      </div>
      <div>I am new to Drools and Drools Planner, so apologies if I am
        asking anything obvious.</div>
      <div><br>
      </div>
      <div>My objective is to implement a simple (for now) planner which
        schedules tasks according to 2 main criteria:</div>
      <div>- Their duration (in seconds)</div>
      <div>- Their dependencies on other tasks (e.g. Hard Constraint
        that Task B has to start between 180 and 200 seconds after Task
        A finishes).</div>
      <div><br>
      </div>
      <div>Since there are gaps between dependent tasks as part of the
        hard constraints other tasks can be fitted in between dependent
        tasks.</div>
      <div>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).</div>
      <div><br>
      </div>
      <div>The main problem I am finding is that this start time, which
        is essentially the planning variable is a continuous variable. </div>
      <div>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.</div>
      <div><br>
      </div>
      <div>Even if the planning variable was discrete (say bins of 5
        second intervals), there is no upper bound as such.</div>
      <div><br>
      </div>
      <div>How is it best to handle such planning variables in Drools
        Planner?</div>
      <div><br>
      </div>
      <div>thanks,<br>
        josef</div>
      <div><br>
      </div>
      <div><br>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
rules-users mailing list
<a href="mailto:rules-users@lists.jboss.org" target="_blank">rules-users@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><span class="HOEnZb"><font color="#888888">
</font></span></pre><span class="HOEnZb"><font color="#888888">
    </font></span></blockquote><span class="HOEnZb"><font color="#888888">
    <br>
    <pre cols="72">-- 
With kind regards,
Geoffrey De Smet</pre>
  </font></span></div>

<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br></div>