From the mathematical point of view, the resulting basic problem setting belongs to linear programming class. The variables
,
form a combinatorial set of subordinate optimization problems [
8]. However, we must suppress that the combinatorial set
,
, is not full as the sequence of operations within each order is dictated by manufacturing procedure. Consequently, the number of combinations is restricted only to those variants when the operations of different orders trade places without changing their queue within one order. Let us research possible ways to solve the given combinatorial set of problems. In this article, the optimization will be conducted with “makespan” criterion formalized with the formula:
2.3.1. Enumeration and Branch-and-Bound Approach
Enumerating the full set of combinations for all competing operations is an exercise of exponential complexity [
9]. However, as we have mentioned above the number of combinations in constraint (
3) is restricted due to other constraints (
2) and (
1). The precedence graph constraint (
1) excludes the permutations of competing operations within one order making the linear problem setting non-feasible for corresponding combinations. The way we enumerate the combinations and choose the starting point of enumeration also influences the flow of computations significantly. The common approach to reducing the number of iterations in enumeration is to detect the forbidden areas where the optimal solution problem does not exist (e.g., the constraints form a non-feasible problem or multiple solutions exist). The most widely spread variant of the technique described is branch-and-bound method [
10] and its different variations.
Let us choose the strategy of enumerating permutations of operations in such a way that it explicitly and easily affords to apply branch-and-bound method. The starting point of the enumeration will be the most obvious positioning of orders in a row as shown in
Figure 2. We start from the point where the problem is guaranteed to be solvable—when all orders are planned in a row—which means that the first operation of the next order starts only after the last operation of the previous order is finished. If the preceding graph is correct and the resources are enough that means the single order can be placed on the resources that are totally free (the problem is solvable—we do not consider the unpractical case when the graph and/or resources are not enough to fulfill a single order). Infeasibility here can be reached only in the case when we start mixing the orders. This guarantees that the linear programming problem is solvable, however, this combination is far from being optimal/reasonable.
The enumeration is organized by shifting the operations of the last order to the left in such a way that they trade their places with previous competing operations of preceding orders (see
Figure 3). As soon as the operation reaches its leftmost feasible position and the current combination corresponds to a linear programming problem with no solution we roll back to the previous combination, stop shifting operations of the last order and switch to the operations of the previous order. After the enumeration for orders on the current resource is over, we proceed the same iterations with the next resource. The formal presentation of the designed branch-and-bound algorithm is described by Procedure 1.
Procedure 1: branch-and-bound
1. Find the initial solution of the LP problem (1)–(3) for the combination , that corresponds to the case when all orders are in a row (first operation of the following order starts only after the last operation of preceding order is completed).
2. Remember the solution and keep the value of objective function as temporarily best result .
3. Select the last order .
4. Select the resource that is used by last operation of the precedence graph G of the manufacturing process.
5. The branch is now formulated.
6. Condition: Does the selected resource r have more than one operation in the manufacturing procedure that allocates it?
6.1. If yes then
Begin evaluating branch
Shift the operation i one competing position to the left
Find the solution of the LP problem (1)–(3) for current combination and calculate the objective function
Condition: is the solution feasible?
If feasible then
Condition: Is the objective function value better than temporarily best result ?
If yes then
save current solution as the new best result .
End of condition
Switch to the preceding operation of currently selected order f for the currently selected resource r.
Go to the p. 5 and start evaluating the new branch
If not feasible then
Stop evaluating branch
Switch to the preceding resource
Go to the p. 5 and start evaluating the new branch
End of condition: is the solution feasible?
End of condition: p. 6
7. Switch to the preceding order
8. Repeat pp. 4–7 until no more branches are available
9. Repeat pp. 3–8 until no more feasible shifts are possible for all operations in all branches.
Iterating combinations for one order on one resource can be considered as evaluating one branch of the algorithm [
10]. Finding the leftmost position for an operation is similar to detecting a bound. Switching between branches and stopping on bounds is formalized with a general branch-and-bound procedure.
2.3.2. Gradient-Alike Algorithm
The opposite of the mentioned above approach would be searching for a local minimum among all combinations with a gradient algorithm [
11]. Here, we will compute an analogue of the derivative that is used to define the search direction at each point [
12]. ‘Derivative’ for each competing operation is calculated by trying to shift it by one position to the left. In case the objective function reduces (or increases for maximization problems) we shift the operation to the left with the defined step (the step ratio is measured in a number of position operation skips moving to the left). The formal presentation of the designed gradient-alike algorithm is described by Procedure 2.
Procedure 2: gradient algorithm
1. Find the initial solution of the LP problem (1)–(3) for the combination , that corresponds to the case when all orders are in a row (first operation of the following order starts only after the last operation of preceding order is completed).
2. Remember the solution and keep the value of objective function as temporarily best result .
3. Select the last order .
4. Select the resource that is used by first operation of the sequence graph of the manufacturing process.
5. The current optimization variable for gradient optimization is selected—position of operation i of the order f on the resource r.
6. Condition: Does the selected resource r have more than one operation in the manufacturing procedure that allocates it?
6.1. If yes then
Begin optimizing position
6.1.1. Set the step of shifting the operation to maximum (shifting to the leftmost position).
6.1.2. Find the ‘derivative’ of shifting the operation i to the left
Shift the operation i one position to the left
Find the solution of the LP problem (1)–(3) for current combination and calculate the objective function
Condition A: is the solution feasible?
If feasible then
Condition B: Is the objective function value better than temporarily best result ?
If yes then
We found the optimization direction for position , proceed to p. 6.1.3
If not then
No optimization direction for the current position
stop optimizing position
switch to the next operation
go to p 6 and repeat search for position
End of condition B
If not feasible then
No optimization direction for the current position
stop optimizing position
switch to the next operation
go to p 6 and repeat search for position
End of condition A
6.1.3. Define the maximum possible optimization step for the current position , initial step value
Shift the operation i left using the step .
Find the solution of the LP problem (1)–(3) for current combination and calculate the objective function
Condition C: Is the solution feasible and objective function value better than temporarily best result ?
If yes then
save current solution as the new best result
stop optimizing position
switch to the next operation
go to p 6 and repeat search for position
If not then
reduce the step twice and repeat operations starting from p. 6.1.3
End of condition C
Switch to the next operation, go to p. 6 and optimize position
7. Switch to the preceding resource
8. Repeat pp. 5–7 for currently selected resource
9. Switch to the preceding order
10. Repeat pp. 4–9 for currently selected order .
11. Repeat pp. 3–10 until no improvements and/or no more feasible solutions exist.
The optimization variables in gradient algorithm represent positions of all competing operations relative to each other. The maximum optimization step for each iteration is detected on-the-fly by trying to shift the current operation to the leftmost position (as it is shown in
Figure 4) that shows the LP problem (1)–(3) is solvable and the objective function is improved.