<html><body><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></body></html>