Optimization Methods for Production Scheduling with Asprova

2011/05/11

Infographic structuring Asprova's production scheduling and optimization methods

The production scheduler Asprova generates work input and output instructions by referencing the BOM during the command execution phase, following the order list or work list generation phase. Then, the order allocation/linking command generates work usage instructions to allocate resources.

Structured diagram of production schedulers, PSI tables, and load planning in Indonesia

Production Scheduler in Indonesia

Production planning and load planning are closely related and require verification based on quantities. It is important to compare production quantities,…

続きを見る

What this article covers

  • Asprova generates work instructions by referencing the BOM with the order expansion command.
  • The order allocation/linking command generates work usage instructions for resources.
  • During order expansion, the automatic replenishment function generates manufacturing orders for shortages.
  • Unassigning returns the work status to unassigned, allowing for rescheduling.
  • There are 11 standard evaluation formulas for resource evaluation, and additional formulas can also be used.

Flow of Plan Creation

Order List or Task List Generation Phase

Order collection involves generating an order list from Asprova's order table, while task collection involves generating a task list from the task table. These are saved in the parent plan parameters.

  1. Order Collection (Prepare for assignment): Collect into order list from order table
  2. Order Filtering (Filter orders): Narrow down from order list
  3. Unassign All: Unassign tasks in the task list

Task filtering is set in the task filtering condition expression of the parent plan parameters.

  1. Task Collection (Upload operations): Collect into task list from task table
  2. Task Filtering (Filter operations): Narrow down from task list
  3. Unassign All: Unassign tasks in the task list

The "Task Collection" command is not needed before the order assignment/linking command in the default plan parameters because tasks generated by the order explosion command are already stored in the task list within the default plan parameters, which is the parent command object.

Command Execution Phase

In Order Explosion (Explode orders), manufacturing orders (MPS) are generated as replenishment orders (child) to fulfill the order list by referencing the manufacturing BOM through the automatic replenishment function, and manufacturing orders for the shortage of task input instructions of MPS are generated as replenishment orders (grandchild).

Task input instructions and task output instructions are generated for registered orders and replenishment orders stored in the order list. The linkage between orders is the initial process task (task input instruction) of the order itself and the final process task (task output instruction) of the preceding order, and replenishment orders generated by automatic replenishment or manufacturing orders connected by the manufacturing BOM are linked.

  1. Generate replenishment orders through automatic replenishment by referencing BOM
  2. Generate task list from order list (task input instructions and task output instructions)
  3. Linkage between orders

In order assignment/linking, task usage instructions are generated and assigned from the task list while considering dispatching rules and resource evaluation properties. After temporarily assigning to all candidate resources in provisional assignment, reassign to the highest evaluated resource in actual assignment.

  1. Order Assignment/Linking (Assign/peg orders): Generate and assign task usage instructions from task list

The linkage between orders is performed twice, during order explosion and order assignment/linking, because there are cases where it is necessary to re-link based on the assignment results (if there is a stock MIN, shift the linkage to the left by the stock MIN).

schedulingcommand

Meaning of Unassign

When tasks are generated through order expansion and assigned through order allocation/linking, if manual plan adjustments or actual input are made, the task status remains "Assigned" and rescheduling will not change the results. This is because the order expansion command does not affect tasks that are "Assigned."

Therefore, it is necessary to first unassign, revert the task status to "Unassigned," and then perform order expansion or order allocation/linking to create a schedule that reflects the updates. Unassigning is necessary not to delete actuals but to reassign based on the entered actuals.

  1. If the assignment flag for tasks in the order list is "Assigned" during order expansion, tasks will not be generated, so unassigning is necessary before order expansion.
  2. Order allocation/linking generates task instructions, resulting in tasks with a status of "Assigned."
  3. Entering actual quantities or acquisition dates for tasks alone will not move the schedule.
  4. Generate a task list through task collection and filtering, and revert the task status to "Unassigned" through unassigning.
  5. A schedule reflecting the entered actuals is created through order allocation/linking.

Relationship Between Orders, Operations, Tasks, and Instructions

In a complete make-to-order (MTO) production, the confirmed order shipment schedule becomes the material requirements (Master Production Schedule, MPS). In contrast, for make-to-stock (MTS) production, it is necessary to separately import the material requirements of MRP based on confirmed orders. This clarifies the relationship between orders, operations, tasks, and instructions.

An order refers to a customer's request, operations are the specific processes to fulfill that order, tasks are further subdivisions of operations, and instructions include directives to execute those tasks. By coordinating these elements, an efficient production schedule can be achieved.

task

Case: For example, in a certain manufacturing industry, when an order is received, an operations plan is first established, then each operation is broken down into tasks. Instructions are issued, and workers proceed with production according to them. This process allows for efficient production while considering setup and mold constraints.

Takeaway: By clarifying the relationship between orders, operations, tasks, and instructions, an efficient production schedule can be realized.

Reassigning Forward After Overall Backward

Based on the start date and time of the tasks assigned backward, we reassign them forward from the first thing in the morning. In the composite planning parameters, it is necessary to align the hierarchical structure of the sub-planning parameters, such as "expanding orders from the order list to create tasks" and "narrowing down the task list to assign tasks."

backforward

The meaning of StartOfNextDay(ME.製造開始日時,0) is "the start (Start) of 0 days later (NextDay) from the production start date and time," which means it returns the start time of the production start date and time of the assigned tasks. This implies "reassigning all tasks assigned backward forward, but not before the start time = assigning from the first thing in the morning of that day."

Incidentally, if it is StartOfNextMonth, it becomes "the start of 0 months later from the production start date and time," which is the first day of the month. Also, if you want to start first thing in the morning but want to place a 15-minute buffer for exercise time, you can shift it like AdvanceAlongResourceWorkingTime(ME.主資源,StartOfNextDay(ME.製造開始日時,0),15M).

When reassigning forward, assign in order from the tasks with the earliest start date and time among those assigned backward.

reschedule

After Overall Forward, Backward Only for Previous Process

In production processes where bottlenecks exist, performing forward allocation can result in waiting times in the previous processes. In such situations, it is effective to reallocate only the previous processes using backward allocation. Specifically, by using the task narrowing function to focus on the tasks of the previous processes and canceling the allocation, it prevents the tasks of subsequent processes from being mistakenly deallocated.

This method is particularly effective in production scheduling using APS or MRP. It is an important technique for achieving efficient production planning while considering setup, molds, and worker constraints when planning finite or infinite loads.

bottleneck

Linking Between Scheduler Orders

In the requirements expansion of MRP, the generation of manufacturing orders and purchase orders is similar in the scheduler. Orders generate tasks composed of input instructions, usage instructions, and output instructions, linking the output instructions of the current process tasks with the input instructions of subsequent process tasks within the same order. For linking between orders, the output instructions of the final process in the current order are linked with the input instructions of the initial process in the subsequent order.

This function is designed to achieve the scheduler-specific goal of "ordering orders and linking them to allocate resources." An order list is generated from the order (MPS), and a task list is generated from the order list. Linking is done using FIFO of order deadlines, but it is also possible to manipulate the order by writing a sorting formula, such as linking and allocating from orders with available material inventory first.

Timing of Pegging Between Orders

There are two main flows of scheduling logic. Within these, linking between orders occurs twice during "order expansion" and "order allocation/linking."

  1. Order Collection⇒Order Narrowing⇒Allocation Release⇒Order Expansion⇒Order Allocation/Linking
    • Collect orders from the order table and generate an order list in the parent planning parameters
    • Generate tasks and create a task list in the parent planning parameters
  2. Task Collection⇒Task Narrowing⇒Allocation Release⇒Order Allocation/Linking
    • Collect tasks from the task table and generate a task list in the parent planning parameters

This is because when creating a schedule considering the inventory MIN in the manufacturing BOM, the inventory MIN is referenced at the time of order allocation/linking.

  1. Linking of orders during order expansion (excess or shortage of raw materials is identified at this point)
  2. Re-linking by referencing the inventory MIN of the manufacturing BOM during order allocation/linking

Thus, there are two stages of processing logic.

Linked Object Table and Task Table

The orders generated as a result of rescheduling are linked by the linked object class, and are materialized in the linked object table (Peg table) as links between output instructions and input instructions. In the order expansion process, tasks (input instructions and output instructions) are first generated from the orders, and then linked using linked objects. This process is executed by preparing a list of task input instructions and task output instructions for each item, sorting that list, and linking them sequentially.

  1. Generate tasks (input instructions and output instructions) from orders
  2. Link using linked objects

The "Task Input Instruction Sorting Expression at Linking" and "Task Output Instruction Sorting Expression at Linking" of the item class specify the sorting method of the list and can change the linking order performed in FIFO of the order's delivery date. The linked object table is a collection of mappings between task output instructions and task input instructions, suitable for referencing materials or work-in-progress linked 1-to-N for each order. On the other hand, the task table is suitable for aggregating tasks by resources allocated by task usage instructions.

Planning from Downstream, Results from Upstream

When orders are linked one-to-one, batch consolidation becomes ineffective because batch sizes differ for each process, necessitating a one-to-many linkage of orders. If production is not carried out and results are not achieved based on order-based planning, the shop floor may produce at its own discretion, leading to a disconnect between sales and manufacturing. This was emphasized based on personal experience in furniture production in Bali (The Necessity of Linking Plans and Results in Manufacturing Instructions). In such cases, discrepancies arise between planned and actual results.

In make-to-order production like furniture manufacturing in Bali, it is necessary to produce the discrepancy before shipping to meet the order quantity. However, delays in repetitive production plans based on orders do not necessarily need to be recovered on an order-by-order basis; sometimes they are completed with delays and compensated by subsequent orders.

The difference between MRP and schedulers is the difference between infinite capacity loading and finite capacity scheduling. When considering the handling of discrepancies between plans and results, MRP is based on the quantity of the master production schedule, and the quantity of manufacturing orders is determined to meet the master production schedule. On the other hand, schedulers have the function to automatically adjust the order quantity of subsequent processes according to actual results.

MRP, known as a "push system," is based on the master production schedule with a completion date for the main product as a prerequisite, and post-adjustment of planned quantities according to results is not effective. However, schedulers can automatically adjust planned quantities according to actual results. This can be described as overwriting the manufacturing order quantity generated from downstream (orders) by inputting results from upstream (initial process).

There are two reasons why this is possible. Schedulers have a method of generating orders (automatic replenishment) against requirements (master production schedule = MPS) other than the batch consolidation method like MRP, with an MRP function for order management that maintains the linkage from orders and generates manufacturing orders one-to-one. By linking orders one-to-one, the planned quantity for subsequent processes is adjusted according to actual quantities.

The other reason is that the scheduler's results are entered per task, but all tasks have a fixed quantity level (The Impact of Inputting and Modifying Results on Task and Order Status), and tasks with high fixed quantity levels determine the quantity of preceding and subsequent tasks within the same order. This functions when the master structure is set to multiple processes per product (multiple tasks per order).

Contradiction Between 1-to-1 Linking and Batch Consolidation

The creation of scheduler masters can be broadly divided into the following two types:

  1. One item, one process (one order, one task)
  2. One item, multiple processes (one order, multiple tasks)

In production management systems, performance is input on an order (manufacturing instruction) basis, but in schedulers, performance is usually input on a task basis after process expansion. If the master is set to one item, one process, one order, one task is generated, resulting in matching performance input units.

Whether or not to consider work-in-progress inventory depends on the presence of automatic replenishment settings for work-in-progress. It is unrelated to how the master is created. To reflect the performance of the previous process in the planned quantity of the subsequent process, it is necessary for tasks to be linked within the same order in the case of one item, multiple processes, or for automatic replenishment to be 1-to-1 in the case of one item, one process.

If automatic replenishment is 1-to-N, it links with a different order in the subsequent process to meet the planned quantity of the previous process, so the planned quantity cannot be overwritten with performance. Reflecting the performance quantity of the previous process in the planned quantity of the subsequent process is only effective when creating forward plans.

Contradiction Between 1-to-1 Pegging and Lot Consolidation

Linking 1-to-1 means matching the batch size of either the preceding or following process, and in this case, the batch size setting is invalidated. If different batch sizes are set, it inevitably links 1-to-N, and the concept of correcting preceding and following processes with performance quantities does not hold.

To reflect the discrepancy between planned and actual in the planned quantity of the subsequent process, it is a prerequisite that the order is not linked to other orders.

Optimization Indicators

The core function of scheduling logic is to generate tasks from orders and allocate them to resources. This is achieved through two commands: order expansion and order allocation/linking.

1. Order Expansion

  1. Generate tasks (task input instructions and task output instructions).
  2. Automatically generate orders for any shortages in input instructions.
  3. Link the input instructions of the initial process of an order with the output instructions of the final process of the previous order.

2. Order Allocation/Linking

  1. Tentative allocation: Use master usage instructions and dispatching rules.
  2. Resource evaluation: Use 11 types of standard evaluation formulas plus additional evaluation formulas.
  3. Perform actual allocation.

Common optimization indicators include improvements in operating rates and lead times. The following adjustment parameters can be considered to achieve this:

  1. Resource evaluation (selection of alternative resources)
  2. Allocation direction (bottleneck-focused TOC)
  3. Task division (reduction of waiting time)
  4. Overlap method (reduction of waiting time)
  5. Task order (reduction of setup frequency, externalization of internal setups, prioritization of tasks with available materials)

Optimization policies vary by factory, but by adjusting these parameters, a tendency in task allocation during schedule creation can be established, leading to the creation of a uniquely optimized schedule.

Adjusting Resource Allocation Method for Resource Evaluation

During the order allocation and linking process, resource evaluation is conducted based on provisional allocation to resources, and actual allocation is performed.

Applying Only Resource Priority of Manufacturing BOM

By selecting "Priority Resource" in the allocation resource property, allocation is made only to the resource with the highest resource priority in the manufacturing BOM. Normally, the "Resource with Maximum Evaluation Value" is chosen.

Allocate to Alternative Resources if the Resource with Maximum Priority is Full

By setting the weight "Weight - Resource Priority" to 1 in resource evaluation, allocation is preferentially made to the resource with the highest resource priority, and if it is full, allocation is made to alternative resources.

Load Leveling Allocation

By setting the weight "Weight - Load Leveling" to 1 in resource evaluation, allocation is evenly distributed to alternative resources as well.

Adjusting Resource Allocation Method with Additional Evaluation Formulas

Resource Evaluation and Additional Evaluation Formulas

There are 11 standard properties for resource evaluation, and it is possible to change the evaluation method for each resource to allocate work. However, it is not possible to change the evaluation method for each output item to allocate work to resources.

  1. Weight - Load Leveling
  2. Weight - Setup Time Minimization
  3. Weight - Resource Priority
  4. Weight - Waiting Time Minimization
  5. Weight - Due Date Delay Minimization
  6. Weight - Manufacturing Time Minimization
  7. Weight - Same Order Priority
  8. Weight - Same Item Priority

If conditions that cannot be handled by the 11 types of resource evaluations are required, additional evaluation formulas can be used in conjunction with standard resource evaluations. However, since work is not yet allocated when additional evaluation formulas are called, it is necessary to use allocation evaluation formulas starting with ME.TentAssign to perform additional evaluations based on tentative allocation results.

  1. Evaluation Time - Master Usage Instruction (me.TentAssignCurrUseBomInst)
  2. Evaluation Time - Target Operation (me.TentAssignCurrOper)
  3. Evaluation Time - Right Operation (me.TentAssignRightOper)
  4. Evaluation Time - Left Operation (me.TentAssignLeftOper)
  5. Evaluation Time - Target Resource (me.TentAssignCurrRes)

If the target operation at evaluation time is work-in-progress for product 51096-BZ010 (press product containing 51096-BZ010 in the parent item), allocate to level the load rate calculated by ResourceLoad (same as "Weight - Load Leveling" in resource evaluation). For other operations, refer to resource priority (same as "Weight - Resource Priority" in resource evaluation).

  • IF(CheckAllContents_Or(ME.Evaluation Time - Target Operation.Main Product Item.'Parent Item (Recursive)','==','51096-BZ010'),ResourceLoad(ME.Evaluation Time - Target Resource,PROJECT.Allocation Start Date,PROJECT.Allocation End Date), ME.Evaluation Time - Master Usage Instruction.Resource Priority)
  • CheckAllContents_Or: OR check based on a condition for all data (single/multiple) of a property
  • ResourceLoad: Calculate load rate from resources

Prioritize Allocation to Resource if Specification 1 of Left Operation is the Same

Perform resource evaluation so that it becomes 1 if the left operation and the current operation have the same Specification 1, and 0 otherwise. If Specification 1 of the left operation is the same, prioritize allocation to that resource.

  • 1*IF(GetApplicableSpec(1,ME.Evaluation Time - Target Operation)==GetApplicableSpec(1,ME.Evaluation Time - Left Operation),1,0)
  • GetApplicableSpec: Returns the value of Specification 1 of the specified operation when the first argument is the specification (Specification 1) and the second argument specifies the operation. If Specification 1 of the left operation and the current operation do not match, set 1 to consider "Weight - Load Leveling".

Overlap Between Processes

The overlap between processes varies depending on how the relationship between the preceding and subsequent processes is set. The overlap method and overlap MIN are set in the subsequent process, and if the work is not divided into lots, set ES or SSEE. SSEE (Start-Start End-End) associates the start and end of the preceding and subsequent processes and is used when the subsequent process finishes early.

  • SSEE (Start-Start End-End) associates the start and end of the preceding and subsequent processes but is used when the subsequent process finishes early.

Process Overlap Method

  • EES (End-Each-Start) is used when the subsequent process is divided (Each), starting work from the middle of the preceding process.

Process Overlap Method

Case: For example, by using EES, the subsequent process can start before the preceding process finishes, reducing the overall production time.

Takeaway: Properly setting the overlap between processes can improve production efficiency.

Difference Between Reference from ME and Reference from PROJECT

If you want to reference specific item objects or resource objects from outside rather than from the currently running instance, you reference them as child objects based on the Project.

Displays the value of the Code property, which is the key of the final object of the child object (process) of the current object in the item table, i.e., the final process code.

  • ME.ChildObject[0]

Displays the final object of the child object (process) of the first object (where the key property Code is ProductA) of the Item table object.

  • Project.ChildObject['Item'].ChildObject[1].ChildObject[0]
  • Project.ChildObject['Item'].ChildObject['ProductA'].ChildObject[0]

object

Objects are associative array types, and when referencing item records from PROJECT, specify by index (number) or the value of the Code property, and reference the property value. Unlike general arrays, the array index starts from [1] and [0] represents the last property value.

Referencing Specific Resource Material Calc from Project

Refer to the resource object in the resource table, which is a child object of the Project object, where the Code property value is Material Calc.

Obtain the date and time advanced by the specified time from the specified date and time according to the operating time of a specific resource.

  • AdvanceAlongResourceWorkingTime(PROJECT.ChildObject['Resource'].ChildObject['Material Calc'],ME.TerminalParentOrder[1].DueDate,(-1)*(ME.Item.'Material LT'-ME.Item.ProcessLT))
  • AdvanceAlongResourceWorkingTime(Specific Resource, Specified DateTime, Time to Advance)

Obtain Planning Reference Date from Project

Obtain the number of working days in a time period with a specified resource.

  • GetWorkingDays(StartOfNextMonth(PROJECT.PlanningReferenceDateTime,0),StartOfNextMonth(PROJECT.PlanningReferenceDateTime,1),ME.OrderPlanObject[1].CalendarReferenceResource,24H)
  • GetWorkingDays(Start Date, End Date, Specific Resource, Hours per Day)

Incidentally, the order plan object is an array type and contains objects as follows.

  1. Order Plan Object[1] : Item
  2. Order Plan Object[2] : Customer
  3. Order Plan Object[3] : Type
  4. Order Plan Object[4] : Quantity

Display Expression and Display Reverse Conversion Expression

Virtual property expressions refer to other properties within the current object, while display expressions are display conversions for the current object's own properties. When the time is fixed in a display expression, it becomes Read Only, and by using a display reverse conversion expression, the property set with the display expression can be made Read Write. INPUT is the value of the property set with the display expression itself and is converted to a string.

In this case, it is converted to a number using FindNumberL(INPUT,1). This means the first number in the string (value) pointed to by INPUT.

Order Quantity Comma-Separated by Thousands

  • Display Expression:Format(ME.Qty,'#,###')
  • Display Reverse Conversion Expression:FindNumberL(INPUT,1)

Set Delivery Time to 23:59:59

  • Display Expression:DateF(GetYearPart(ME.最遅終了日時),GetMonthPart(ME.最遅終了日時),GetDayPart(ME.最遅終了日時),23,59,59)
  • Display Reverse Conversion Expression:DateF(FindNumberL(INPUT,1),FindNumberL(INPUT,2),FindNumberL(INPUT,3),23,59,59)

Virtual Property Expressions and Virtual Property Inverse Conversion Expressions

ME and HOLDER refer to the current object, but when referenced with ME, it becomes Read only (user object), and when referenced with HOLDER, it becomes Read write (owner object).

  1. HOLDER (current object)
  2. ME (current object)
  3. OTHER (a property that compares the values of two properties and acts as a counterpart to ME)

You can input the string "100 pieces" into a user-defined property of the order table and use an inverse conversion expression to copy the numerical part of the input string FindNumberL(INPUT,1) to the order quantity "HOLDER.order quantity".

object2

ME and OTHER for Comparing Two Properties within the Same Object

When comparing the values of properties of two records (objects) within the same object, use ME and OTHER. This allows for efficient data processing based on specific conditions. For example, when setting a condition in the item linkage condition expression property to link if the order specification 1 is the same, it is written as follows:

  • ME.Order.Specification1==OTHER.Order.Specification1

By utilizing ME and OTHER in this way, property comparisons between objects can be conducted concisely. This ensures efficient data management while maintaining data integrity.

TARGET Referring to the First Argument of Internal Functions for Minimum, Maximum, and Total Sum

TARGET specifies an object as the first argument in internal functions Max, MaxIF, Sum, SumIF, and by specifying TARGET from the second argument onwards, it refers to the object of the first argument. This allows for efficient calculation of minimum, maximum, or total sum based on specific conditions.

Conditional Sum SUMIF

TARGET is the order schedule object. When the order schedule is a forecast, it retrieves the total quantity.

  • SumIF(ME.'Parent Item (Recursive)'.Order Schedule Object,TARGET.Type=='Forecast',TARGET.Quantity)

Conditional Maximum MAXIF

TARGET is the order object. When the process number in the order table is 22, it retrieves the maximum value of TMP FIN DATE in the order table.

  • MaxIF('Order',TARGET.'No Process'==22,TARGET.'TMP FIN DATE')

Total Sum SUM

TARGET is the order using this item. It calculates the total order quantity in the order table for each item.

Sum(ME.'Parent Item (Recursive)'.Order Using This Item,TARGET.Order Quantity)

StartOfNextDay(Week, Month) Referring to the Start Date 0 Days, 0 Weeks, 0 Months Later

When performing dispatching, the start date 0 days (0 weeks, 0 months) after the due date is set to efficiently achieve daily, weekly, and monthly consolidation. This allows tasks on the same day (week, month) to be grouped together.

  • Daily consolidation: StartOfNextDay(ME.Order.DueDate,0) ⇒ Since it is the first 0 days ahead, it is today's allocation start date
  • Weekly consolidation: StartOfNextWeek(ME.Order.DueDate,0) ⇒ Since it is the first day 0 weeks ahead, it is the first day of this week
  • Monthly consolidation: StartOfNextMonth(ME.Order.DueDate,0) ⇒ Since it is the first day 0 months ahead, it is the first day of this month

Frequently Asked Questions | Production Scheduling with Asprova

This article organizes frequently asked questions concisely in line with the content.

What is Asprova's Order Explosion?

Asprova's order explosion is a process that generates replenishment orders to fill the gaps in work input instructions for received orders by referencing the manufacturing BOM to satisfy the order list. This links orders and enables efficient production scheduling.

What is the purpose of Order Allocation/Linking?

The purpose of order allocation/linking is to generate work usage instructions by considering dispatching rules and resource evaluation properties, and to allocate work from the work list to resources. This improves production efficiency by assigning work to the optimal resources.

Why is Deallocation necessary?

Deallocation is necessary to revert the work status to "unallocated" when manual adjustments to the plan or actual input are made. This allows for re-execution of order explosion and order allocation/linking to create a schedule that reflects the latest actual results.