<html><body><div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:10pt">Hi,<br><br>Any one got an idea?<br><br>Thanks<br><div><span></span></div><div>&nbsp;</div><div>-----------------<br>http://www.codessentials.com - Your essential software, for free!<br>Follow us at http://twitter.com/#!/Codessentials<br></div>  <div style="font-family: arial, helvetica, sans-serif; font-size: 10pt;"> <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> <hr size="1">  <b><span style="font-weight:bold;">From:</span></b> Michiel Vermandel &lt;mvermand@yahoo.com&gt;<br> <b><span style="font-weight: bold;">To:</span></b> Rules lists.jboss.org &lt;rules-users@lists.jboss.org&gt; <br> <b><span style="font-weight: bold;">Sent:</span></b> Wednesday, February 6, 2013 8:44 AM<br> <b><span style="font-weight: bold;">Subject:</span></b> [rules-users] Planner:
 What is a good example/algo to chain entities?<br> </font> </div> <br>
<div id="yiv1704888858"><div><div style="color:#000;background-color:#fff;font-family:arial, helvetica, sans-serif;font-size:10pt;"><div><span>Hi,</span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><br><span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><span>I need to keep some Planning entities (Tasks) together and I am looking for some insights/ideas/examples in how to tackle this.</span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><span>Tasks are grouped by a groupId (Groups are problem facts).<br></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica,
 sans-serif;background-color:transparent;font-style:normal;"><span>The Tasks do not have to be grouped like a pillar but more like an accordion.</span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;">One of the planning variables is "Period", a Period typically is 3 weeks and we have 12 Periods to plan the tasks into.<br></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><br><span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><span>The requirement is that all tasks within&nbsp; a group need to be kept together in such a way that:</span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica,
 sans-serif;background-color:transparent;font-style:normal;"><span>- the spread (nr of periods) of the tasks is minimal</span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><span>- the spread is never more than the sum of the duration of the separate tasks in the group.</span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><br><span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><span>So given a group of 3 tasks:</span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><br><span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;
font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><span>1)This is good:</span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;font-family:arial, helvetica, sans-serif;background-color:transparent;font-style:normal;"><br></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;">Period 12345789ABC<br><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>T1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xxx</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace,
 sans-serif;"><span>T2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xx</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>T3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><br><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>2)This is better:</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="
font-family:Courier New, courier, monaco, monospace, sans-serif;"><br><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;">Period 12345789ABC<br><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>T1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xxx</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>T2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xx</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco,
 monospace, sans-serif;"><span>T3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</span></span></div><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><br></span><div><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>3)This is (one of) the best:</span></span><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><br><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;">Period 12345789ABC<br><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace,
 sans-serif;"><span>T1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xxx</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>T2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xx</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>T3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;font-family:Courier New, courier, monaco, monospace, sans-serif;"><br><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;
background-color:transparent;font-style:normal;font-family:Courier New, courier, monaco, monospace, sans-serif;">4<span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>)This is bad:</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><br><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;">Period 12345789ABC<br><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>T1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xxx</span></span></div><div style="color:rgb(0, 0,
 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>T2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xx</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span>T3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;font-family:Courier New, courier, monaco, monospace, sans-serif;"><br><span style="font-family:Courier New, courier, monaco, monospace, sans-serif;"><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span><span><span>Of course 3 is favorite, but maybe not possible due to other planning variables (-&gt;
 availability of
 people to execute the tasks)</span>.</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span><span>I need to plan a few hundred of such groups of tasks which all share the same Period space and list of available people.</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;font-family:arial, helvetica, sans-serif;"><span><span>(A person can only do one task per period)<br></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><br><span><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span><span>I have got the DRL rule that keeps the tasks together (rule counts the gaps) , but giving penalty for making gaps (by shifting a single task) makes it hard to find
 a good solution.</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span><span>What would be the best approach to solve this problem?</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><br><span><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span><span>- A combination of custom mover and swapper which moves/swaps groups instead of single tasks?</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;font-family:arial, helvetica, sans-serif;"><span><span>- The above in combination with a group shuffle factory (swapping tasks in a single group)?<br></span></span></div><div style="color:rgb(0, 0,
 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><br><span><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><span><span>Other ideas?</span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><br><span><span></span></span></div><div style="color:rgb(0, 0, 0);font-size:13.3333px;background-color:transparent;font-style:normal;"><br><span><span></span></span></div><span>Thanks a lot!</span><br></div><div>-----------------<br>http://www.codessentials.com - Your essential software, for free!<br>Follow us at http://twitter.com/#!/Codessentials</div></div></div></div><br>_______________________________________________<br>rules-users mailing list<br><a ymailto="mailto:rules-users@lists.jboss.org" 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> </div> </div>  </div></body></html>