What Does Schedule Repair Do to Create a Valid Schedule?

What Does Schedule Repair Do to Create a Valid Schedule?

Note: Old name of the software was Preactor and new name is Opcenter APS.

Problem : What does schedule repair do to create a valid schedule? What do the different options mean?


Solution :

The schedule repair routine simply corrects constraint and operation sequence errors by remembering the order that the operations were scheduled in and the resource the operations were scheduled on. Then it removes them from the resource they were on and puts them back depending on which options were selected for the repair.

Allow Operations to be Scheduled Earlier

This allows operations that have not yet started processing (they are to the right of the terminator) to start earlier, otherwise they can start at the same time or later. Earliest Start Date is still respected.

Allow Sequence Change

The logic used is effectively a full sequence, but with the restriction that the operations can only be sequenced on the resource on which they were originally allocated. It allows the sequence of operations on a resource to change. Operations that are impossible to schedule are left unallocated.

Maintain Sequence when Possible

This option allows for the condition where an operation cannot be sequenced at all (such as a secondary constraint requirement being impossible to fulfil), but this unallocated operation does not prevent remaining operations from being scheduled. The remaining operations will be scheduled in the same sequence that they were originally placed on the resource. This option differs from the Allow Sequence Change option because with the operations that can be scheduled, it maintains the sequence. With the Allow Sequence Change option, any sequence change can occur. This option is also different than the Prevent any Sequence Change option, since Maintain Sequence when Possible allows remaining operations to be scheduled on the Resource. They are not left unallocated as they would be if the Prevent any Sequence Change option were used.

Prevent any Sequence Change

When this option is set and Schedule Repair runs, it will ensure that operations will be placed on the Gantt Chart in the same sequence they were scheduled prior to when Schedule Repair was run. If this option is not selected, then the schedule sequence may be changed when the schedule is repaired. If an operation cannot be sequenced, for example, a secondary constraint requirement is impossible to fulfil, then no subsequent operations on that resource will be scheduled because this would create a sequence change.


Schedule Repair uses the equivalent API methods to perform a repair in the following way:

1) The Setup Start time and Resource for every operation is saved.

2) All operations are removed from the Gantt Chart, following rules and options regarding locked operations etc.

3) An internal queue is created and ranked based on the original Setup Start time.

4) The queue is iterated through from the start to the end.

5) Each operation uses the equivalent of the API method TestOpOnResource to determine the Start Time.

6) Operations will only be placed on the Resource on which they were originally scheduled using the API equivalent of PutOpOnResource.

- If the option 'Allow Operations to be Schedule Earlier' is selected, then the Start Time is determined from the previous operations of the order.

- If the option 'Allow Sequence Change' is NOT selected, the Start Time must be equal to or greater than the end of the last operation on the resource.

- If the 'Allow Sequence Change' option is NOT selected and an operation can not be scheduled, no further operations can be scheduled on that resource.

- If the 'Allow Sequence Change' option is NOT selected, all operations must be placed on the resource in the same sequence that they were originally.

- If the 'Maintain Sequence when Possible' option is selected, then sequence change will only be permitted if an operation could not be scheduled or if the only way to schedule the operations correctly is to change the sequence, for example if the operations of an order were placed in the wrong order.

7) If the operation was placed successfully, the next operation in the queue is checked. If the operation was not placed, the queue is checked from the start in case operations have been scheduled on which previous operations in the queue depend (if, before repair, operations are out of sequence, they will also be out of sequence in the repair queue as detailed in step 3, for example, if Op. 10 is in the queue later than Op. 20. when the repair 'rule' iterates through the queue, it will find the Op. 20 first, which cannot be scheduled, then it will encounter Op. 10, which can be scheduled. So long as the selected schedule repair options are followed, Op. 20 can now be scheduled. If the queue index was not reset, Op. 20 would remain unchecked).


Additional Questions:

Q: Does the Schedule Repair functionality take into account the priority of an order?

A: The schedule repair routine takes no account of priority because that should have already been done by whatever rule was used to schedule the operations initially. The routine simply corrects constraint and operation sequence errors by remembering the order that the operations were scheduled on and the resource, removes the operations, and places them back on to the same resource with the sequence dependent on what options were selected for the repair.

Q: Does Schedule Repair move locked operations?

A: Schedule repair does not move locked operations unless the Ignore Locked Operations option has been switched on in the Sequencer.

Q: Why are some operations no longer scheduled by the end of the process?

A: The process removes operations and then sequences the operations again. If there is no room for the operation on the Gantt, it cannot be sequenced.