# Dimensional Tolerances in Mechanical Assemblies: A Cost-Based Optimization Approach
## 3 A Proposal for Tolerance Synthesis
This occurs when \(\gamma\) is empty or the flag is set to true. This condition is represented by the statement else on line 14 of Algorithm 1. In this scenario, the routine **ProcessAllChainTolerances** in Algorithm 4 is executed for all tolerances in the chain. This routine is similar to the previous **ProcessChainTolerances**, with the exception that it reprocesses the tolerances that have already been optimized. The only difference between the two algorithms lies in line 2, where the algorithm attempts to reprocess the already optimized tolerances and determines if further optimization is possible within the current chain. ```
0:\(m\): number of parts
1: current chain
2:\(j\): current tolerance
3:\(\{\min(t_{k})\}\): set of all minimum tolerances, considering the specific process \(1\leq k\leq m\)
4:\(t_{i,j}\): tolerance \(j\) for chain \(i\), it is known that \(t_{i,j}\in\{t_{k}\}\)
5:\(\gamma\): set of cost differences
6:\(\gamma\): set of cost differences
7: flag: indicates if the tolerance was optimized
18:ProcessAllChainTolerances(\(m\), \(i\), \(j\), \(\{\min(t_{k})\}\), \(t_{i,j}\), \(\gamma\))
19:if\(t_{i,j}^{o}-t_{d}>\min(t_{i,j}^{o})\)then: The minimum has not been reached
20: flag \(\leftarrow\) false: At least one tolerance did not reach the minimum
21:\(t_{i,j}^{o}\leftarrow\)\(t_{i,j}^{o}-t_{d}\): Decrement the tolerance
22:\(C_{i,j}^{d}\leftarrow\)\(cost(t_{i,j}^{d})\): Calculate the cost for the new tolerance
23:\(C_{i,j}\leftarrow\)\(cost(t_{i,j}^{o})\): Calculate the cost for the actual tolerance
24:\(\Delta C_{ij}\leftarrow\)\(C_{i,j}^{d}-C_{ij}\): Calculate the difference between the two costs
25:\(\gamma\leftarrow\gamma\cup\Delta C_{ij}\): Include just the calculated cost difference in the set
26:endif
```

**Algorithm 4** Process All Chain Tolerances

The execution returns to Algorithm 1, and if the set \(\gamma\) is not empty, the optimization continues using the same routine as previously described. However, if the set \(\gamma\) is empty, it indicates that the current chain cannot be further optimized. In such cases, user intervention becomes necessary, such as modifying the manufacturing procedure by assigning a new minimum tolerance value to a specific part within that chain. ## 4 Application Example

The application example used a real-world problem that involves unidirectional interrelated chains, specifically the alignment of a belt power drive system with the ancillary equipment of an internal combustion engine. Figure 5 provides a visual representation of a generic internal combustion engine belt power system. Ensuring proper alignment between the drive and the driven pulleys is crucial to optimize the life of the belt and mitigate issues such as noise. Although not severe, these problems can be challenging to address using alternative solutions. Figure 6 provides a front view of the proposed system. The lower pulley, connected to the engine crankshaft (CRS), drives both the alternator pulley (ALT) and the hydraulic pump of the power steering system (HP). Two additional idle pulleys (IPs) are placed to ensure the desired contact angle and prevent excessive span length on the back side of the belt. One of these idle pulleys also serves as a belt tensioner. These specifications adhere to standardized values [46]. The lengths \(L1\), \(L2\), \(L4\), and the pitch arc length \(L3\) are essential in the calculation of the functional constraint. Figure 7 provides a longitudinal view of the system, showcasing the dimensions and components involved in the construction of the chains, as well as the resulting tolerance tables. In Figure 8, a schematic representation of the assembly chains is presented. It is important to note that standardized items with predetermined tolerances do not participate in the optimization process, but are included in the calculation of assembly tolerances. The axial clearance value \(44\) is also considered predetermined, as it is limited by other functional requirements and has a fixed value.