Optimization

Introduction

Optimization is the process by which APS creates a minute-by-minute schedule by assigning Activities to Resources at particular times according to all specified constraints, Release RulesOptimize Rules  and custom rules. If using the MRP option, Optimize also includes the process of comparing demands to supplies and creating Jobs or Purchase Orders to satisfy net demand.

Optimization can be run on-demand or it can be set to run automatically in configurable time intervals or at specific times of the day.

PlanetTogether has found these to be the most important optimization capabilities:

  1. Create a realistic schedule that adheres to constraints
  2. Honor preferences and user choices such as locked resources
  3. Create a schedule that performs well in terms of target metrics
  4. Speed for the sake of usability

Key Concepts

Understanding How Optimize Works

APS uses combination of simulation and rules to generate schedules. This approach provides the maximum flexibility and speed solving real-world scheduling problems with complex constraints. The way a simulation works is that it creates the schedule that would result over time if all Resources selected what to work on based on defined preferences and rules while respecting all constraints that are imposed on the system. CoPilot adds stochastic optimization which uses a form of random sampling to improve on the target KPI.

Most production scheduling problems are NP (non-deterministic polynomial-time) hard, so true global optimums cannot be guaranteed by any algorithm or software.

Example

This is a simple example that illustrates how APS would create a schedule:

Starting Data:

  • Two Resources: Resource 1 and Resource 2, each with the same Capability.
  • Two Jobs:
    • Job 1
      • Need By 1/15
      • Priority = 1
      • Two Operations:
        • Op 10: 1 day of work, requires 1 unit of Material A
        • Op 20: 3 days of work
    • Job 2
      • Need By 1/15
      • Priority = 3
      • Two Operations:
        • Op 10: 1 day of work, requires 1 unit of Material A
        • Op 20: 3 days of work
  • Inventory:
    • 1 unit of Material A is on-hand.
    • 1 unit of Material A is on-order with a purchase order due on 1/6.
  • Optimize Parameters:
    • Release Rule: JIT with 7 day slack
    • Current Clock Date: 1/1
    • Optimize Rule: 50% weight on Need Date and 50% weight on Priority.

Step-by-Step Optimize Process:

  1. Release dates are calculated for each Job. Since both Jobs have the same Need Date and same work hours their JIT Release Dates are identical: 1/4   (Need Date of 1/15 minus 4 days of work minus 7 days of slack)
  2. The first “event” to occur is the release of the two Jobs on 1/4. This result of this event is that Op 10 for each Job is added to the work queues for both Resources.
  3. The next event is for the Resource with the highest Id to review its queue and see if any work can be scheduled at the simulated event time.
  4. The Resource calculates a “score” for the operations in its queue. The results are:
    1. Job 1, Op 10 Score: 11 (Need Date minus event date) x 50% + 1 (Priority) x 50%  = 6
    2. Job 2, Op 10 Score: 11 (Need Date minus event date) x 50% + 3 (Priority) x 50%  = 7
  5. Job 1 has a lower score and therefore is selected first, in this case by Resource 1 since it was the first Resource to make a selection. Since there is enough material on-hand, the Operation is scheduled to run on 1/4. The material is allocated to Job 1, reducing the on-hand material to zero. No other Operations can schedule at this time due to the fact that there is insufficient material on-hand.
  6. The next event is the completion of Job 1 Op 10 on 1/5. This causes Resource 1 to become available and it also causes Job 1 Op 20 to become ready and therefore added to the queues. Again the scores are computed and since this is the only Operation that can start (Job 2 Op 10 is still awaiting material) it is scheduled to start on 1/5.
  7. The next event is the arrival of the purchase order on 1/6. This triggers the Resources to evaluate their queues. At this point, Job 2 Op 10 can now start since the material was received. Since Resource 2 is the only idle resource at this time, it selects the Operation and schedules it to run on 1/6.
  8. The next event is the completion of Job 2 Op 10 which causes Op 20 to become ready and to schedule, completing the scheduling process.

The events and resulting schedule are illustrated below:

Time:               1/1   …    1/4               1/5               1/6               1/7               1/8               1/9

->                            Jobs are released                PO arrives

Resource 1             [ Job 1 Op 10 ][                  Job 1 Op 20                ]

Resource 2                                                       [Job 2 Op 10][                 Job 2 Op 20              ]

Note: Each time Optimize is performed the JIT Start Dates are recalculated based on the resource the Activities are scheduled on and the actual setup times determined. Since JIT Dates change, subsequent use of the Optimize can potentially generate different schedules.

A new option was added to the “System Options” located on the Data tab. On the “Enable Features” tab of the System Options, a check box to named “Recalculate JIT on schedule Change Enabled” can be unchecked if the user desires the JIT dates to remain static after the initial Optimize.  This will stop Optimization from recalculating the JIT Start Dates again and again. 

Using Optimization to Model Preference

Many manufacturers use a system of preferences when deciding what products to run on certain machines, or even what routings to use. For example, a certain Item might run better or produce a higher yield on one resource than another. It may require less setup time on one resource than another. Perhaps one resource simply runs faster or more efficiently and it is therefore desired to constantly be busy. One routing may be more favorable than another.

Additionally, even with Infinite Capacity, Rough-Cut scheduling, APS can model level-loading to spread work across multiple Resources and increase utilization.

Product Rule HeadStartSpan: Using Product Rules creates a relationship specifically between an Item and a Resource that is producing it. Within the Product Rule is the HeadStartSpan which determines, for that particular item on that particular resource, how early a Job can be scheduled to that resource. Setting a longer HeadStartSpan for that resource will cause it to be preferred over other available resources. This will only take effect where that Product Rule is being invoked and is most useful when a manufacturer is basing preference on the Product that is being produced.

AlternatePath AutoUseReleaseOffsetDays: Each Manufacturing Order has one or more Alternate Paths. On one of the Alternate Paths (there may only be one) there is a setting for the AutoUseReleaseOffsetDays. This time span goes into effect when the “AutoUse” field is satisfied and will set the Release date for the Job. Defining a smaller time span will favor using that Alternate Path over others.

Resource HeadStart: On the Resource Properties, specifying a larger value will cause that Resource to be favored over other Resources that have the same Capability. This will allow more Jobs to be scheduled to the Resource before resorting to other, less favored, Resources.

Custom Add-in: Should APS not come with built-in functionality that can model the logic behind the manufacturer’s preferences, APS can leverage the fact that it’s written in the .NET Framework and a Custom Add-in could be created to model those preferences.