The Combinations Engine
Plainly speaking, the Combinations engine searches for possibilities to schedule a new activity or move an existing activity's cell without causing any conflicts. Now, when we are saying "possibilities", we are not referring only to single step possibilities (such as move an activity from Monday to Tuesday – this can be easily accomplished using drag & drop), but rather to complex multi-step, multi-dimensional possibilities which involve several moves that eventually end up with a move that achieves the original goal.
This is a very powerful feature of the program which can be incredibly helpful in "tight" scheduling scenarios. The program's ability to search through an enormous range of moves, like in a chess game, can be a gigantic time saver. In some institutions, the late stages of schedule construction are often the ones that take the most time. The reason is, that when almost all activities are scheduled, there are nearly no vacant cells to schedule the remaining few activities, especially when the resource allocation is close to full capacity. In that case, "squeezing in" a new activity is not a trivial task. That's when the combinations engine is a great helper.
To enter the combinations mode, the first thing that you should do is click on the "Combinations" tab at the bottom of the screen.
All the combinations that the program finds are displayed in this Combinations pane in a form of thumbnails. Each thumbnail is one combination (which may of course include multiple steps). If you move the mouse over a combination, its steps will be shown in the main schedule view (you will see arrows depicting the movement of cells).
If you click on a thumbnail, the clicked combination becomes selected, which means that its arrows are "frozen" and will remain even if you move the mouse over other combinations. This allows you to examine it more thoroughly and decide if it is suitable.
If you click again, the combination becomes deselected. To actually apply a combination and have the program execute its moves, double click on it.
Combinations Use Cases
There are 4 scenarios for which the combinations engine finds move possibilities.
Schedule an Activity
You select an activity in the list of activities.
The program then suggests combinations which start by scheduling that activity into some cell. If the target cell is not empty, the program further suggests possibilities to move it to a different time (in order to free the cell for the activity you are trying to schedule), and if needed repeats this process until it finds a multi-step move combination which does not cause any conflicts.
Move an Existing Cell
You start by selecting some scheduled cell. The program then suggests possibilities to move that cell to a different time. If the target time's cell is occupied, the program further suggests possibilities to move that cell's activity to a different time and so on and on until all cells are settled in a way that no conflicts arise.
Fill an Empty Cell
This time you start by selecting an empty cell. The program suggests possibilities to move some already scheduled activity into that cell. Then it also suggests possibilities to move a second scheduled cell into the left vacant cell of the first (which has been used to fill the empty cell), and so on and on.
Move an Activity into a Different Room
You select a cell in the bottom Rooms pane. If the activity can be scheduled in a different room by definition (either multiple rooms are defined for it using the "Any" inclusion type or the room property of the activity is completely empty which means any room will do), the program suggests possibilities to move the activity into a different room. This movement may also have multiple steps, each moving some other activity from one room to another, ending up with a conflict-free room-switch resolution.
There is one important thing to understand about the kind of combinations that are found when you use the Combinations engine. The single and simple rule is this – only combinations which involve the visible cells are displayed. This means that the arrows that you see on screen depicting the combination's move involve only the cells that you currently see on screen. No combination which involves other cells or resources will be displayed. This rule has an important consequence, which we will now explain.
Suppose you are now viewing the weekly timetable of a teacher. If you select a cell and click on the Combinations tab, the program will start searching for combinations to move that cell. However, it will be limited. The reason that it will be limited is that it will only find combinations which involve the cells of only that teacher whose timetable is now displayed.
In theory (and usually in practice too) there are plenty of other combinations which exist. For example, it may be that the reason that a cell cannot be moved to, say, Monday 10:00, is because the room that is booked for the cell is not vacant on Monday 10:00. It is being used at that time by some other teacher. So, a combination which does move the cell to Monday 10:00 would have to involve another teacher's activity. Unfortunately, that activity is now not shown because you are viewing the weekly timetable of the original single teacher.
How is it possible then to expand the coverage of the combinations engine to include all teachers? Quite simply. To begin with, you should display the weekly timetable of all teachers instead of a single teacher. Remember that the popup list of resources at the navigation pane allows multiple selections. So you can select several teachers or even all of them. Once you do and you see the weekly timetable of all teachers, if you select a cell, the combinations engine will have a far larger "search space". That's because now it will be allowed to consider combinations which affect any teacher, not just one. There are by far more potential combinations this way.
Of course, the downside is that the combinations become more complex and have a wider scale effect on multiple resources. What we suggest is that you start by looking at the combinations in a single resource's timetable, and if necessary, upscale to a multiple resources search space.