Hi,
I need to keep some Planning entities (Tasks) together and I am looking for some
insights/ideas/examples in how to tackle this.
Tasks are grouped by a groupId (Groups are problem facts).
The Tasks do not have to be grouped like a pillar but more like an accordion.
One of the planning variables is "Period", a Period typically is 3 weeks and we
have 12 Periods to plan the tasks into.
The requirement is that all tasks within a group need to be kept together in such a way
that:
- the spread (nr of periods) of the tasks is minimal
- the spread is never more than the sum of the duration of the separate tasks in the
group.
So given a group of 3 tasks:
1)This is good:
Period 12345789ABC
T1: xxx
T2: xx
T3: x
2)This is better:
Period 12345789ABC
T1: xxx
T2: xx
T3: x
3)This is (one of) the best:
Period 12345789ABC
T1: xxx
T2: xx
T3: x
4)This is bad:
Period 12345789ABC
T1: xxx
T2: xx
T3: x
Of course 3 is favorite, but maybe not possible due to other planning variables (->
availability of people to execute the tasks).
I need to plan a few hundred of such groups of tasks which all share the same Period space
and list of available people.
(A person can only do one task per period)
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.
What would be the best approach to solve this problem?
- A combination of custom mover and swapper which moves/swaps groups instead of single
tasks?
- The above in combination with a group shuffle factory (swapping tasks in a single
group)?
Other ideas?
Thanks a lot!
-----------------
http://www.codessentials.com - Your essential software, for free!
Follow us at
http://twitter.com/#!/Codessentials