For an engineering design, tolerances in design parameters are selected so that within these tolerances, we guarantee the desired functionality. Feasible algorithms are known for solving the corresponding computational problems: the problem of finding tolerances that guarantee the given functionality, and the problem of checking whether given tolerances guarantee this functionality.
In this paper, we show that in many practical problems, the problem of choosing the optimal tolerances can also be solved by a feasible algorithm. We prove that a slightly different problem of finding the optimal tolerance revision is, in contrast, computationally difficult (namely, NP-hard). We also show that revision programming algorithms can be used to check whether a given combination of tolerance changes is optimal under given constraints -- and even to find a combination that is optimal under given constraints.