Feasibility and Machine Selection
In this stage, the cost engine evaluates various CSL modules associated with the nodes of the current process routing:
1 First the cost engine visits each node in the routing, evaluating each node’s optionality module, if there is one. If the module returns true, the cost engine makes the node non-optional. If the module returns false, the cost engine removes the node from the current routing.
2 Next the cost engine again visits each node in the current routing. For each node it does the following:
o Evaluates the node’s feasibility module. The cost engine proceeds as follows:
- If the module returns false and the node is non-optional, the current routing as a whole is deemed infeasible, and the cost engine moves on to consideration of a new process routing.
- If the module returns false and the node is optional, the current node (together with any descendants) is removed from the routing, and the cost engine proceeds to the next node of the current routing, if there is one.
- If the module returns true or if there is no feasibility module, the cost engine proceeds to machine selection.
o Attempts to select a machine for the current process (except when the node’s selectMachineAfterOpAssignment attribute is non-null—see Process Costing)—and except when a machine has already been selected for an ancestor of the current node in the current routing). aPriori has four machine selection modes (see the Edit Machine Selection dialog in aPriori):
- aP Select: The cost engine evaluates the node’s machine selection module, putting into scope the CSL input machines, and establishing its value as a collection with one machine for each line of the aPriori machine table (see the Edit Machine Selection dialog in aPriori). If the machine selection module fails to establish a non-null value for the CSL output machine, the current routing is deemed infeasible, and the cost engine moves on to consideration of a new process routing. Otherwise, the value of machine is assigned to the current process.
- User Select/ if not feasible, fail to cost: The cost engine evaluates the node’s machine selection module, putting into scope the CSL input machines, and establishing its value as a collection whose only element is the user-selected machine. If the machine selection module fails to establish a non-null value for the CSL output machine, the current routing is deemed infeasible, and the cost engine moves on to consideration of a new process routing. Otherwise, the value of machine is assigned to the current process.
- User Select/ if not feasible, auto-select: The cost engine evaluates the node’s machine selection module, putting into scope the CSL input machines, and establishing its value as a collection whose only element is the user-selected machine. If the machine selection module fails to establish a non-null value for the CSL output machine, the cost engine proceeds as described for aP Select, above. Otherwise, the user-selected machine is assigned to the current process.
- User Select/do not check feasibility: The cost engine assigns the user-selected machine to the current process.
In summary, this stage involves the evaluation of the following types of CSL modules:
Process optionality
Process feasibility
Machine selection
These types of modules are evaluated in the context of a process routing (and possibly a material stock) and a particular routing node, but operation sequences have not yet been chosen, and no process has yet been costed. Throughout the evaluation of optionality and feasibility modules, no machine has yet been selected. See Algorithm Overview.