Default value: 1e-7
Minimum value: 0
Maximum value: 1
rosepy parameter name: tol_primal_feasibility
See the linked article for information on How to change and view the solver parameters.
Recommendations
A larger primal feasibility tolerance allows for quicker convergence and greater numerical stability by accepting minor constraint violations, making it easier for solvers to find solutions in less time, especially in cases with numerical precision issues. However, this may lead to solutions that are less precise or slightly infeasible in practical terms. Conversely, a smaller primal feasibility tolerance ensures more accurate and strictly feasible solutions, but it can slow down convergence and increase computational effort, as the solver must work harder to meet the tighter constraints. The choice of tolerance depends on the need for precision versus the importance of solution speed and stability.
For most applications, the default settings provided by Rose strike a good balance between these factors, so there is generally no need to adjust this parameter. The primal and dual feasibility tolerances are highly tuned to the Rose solver. These parameters are not something we recommend changing.
Technical details
The primal feasibility tolerance is a parameter that defines the maximum acceptable violation of constraints for a solution to be considered feasible. It ensures numerical stability and efficiency by allowing small, practically insignificant violations of constraints, accommodating the limitations of floating-point arithmetic.
Allowing a small tolerance helps prevent the solver from being overly strict, which could lead to unnecessary iterations or failure to converge due to tiny numerical discrepancies. By accepting solutions that are close enough to feasible, the solver can often find solutions more quickly and with less computational effort. The primal feasibility tolerance strikes a balance between mathematical precision and the practical need to obtain solutions within a reasonable timeframe. It ensures that solutions are usable even if they are not mathematically exact.
As an example, consider the constraint \(2x_1 + 3x_2 \le 5\) in an optimization problem. If the solver finds a solution where \(2x_1 + 3x_2 = 5.0000001\) and the primal feasibility tolerance is set to 1e-7 the solution would still be considered feasible, because the constraint is violated by 0.0000001, which is within the tolerance.
Comments
0 comments
Please sign in to leave a comment.