Default value: 1e-10
Minimum value: 0
Maximum value: 1
rosepy parameter name:tol_dual_feasibility
See the linked article for information on How to change and view the solver parameters.
Recommendations
A larger dual feasibility tolerance allows for quicker convergence and greater numerical stability by accepting minor violations in the dual constraints, 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 terms of the dual conditions. Conversely, a smaller dual feasibility tolerance ensures more accurate and strictly dual-feasible solutions, but it can slow down convergence and increase computational effort, as the solver must work harder to meet the tighter dual 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 dual feasibility tolerance is a parameter that defines the maximum acceptable violation of dual constraints to determine whether a solution is considered feasible from the perspective of the dual problem. It ensures numerical stability and efficiency by allowing small, practically insignificant violations of dual 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 dual feasibility, the solver can often find solutions more quickly and with less computational effort. The dual 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.
Mathematically, for a dual variable \(y_i\), and a corresponding dual constraint \(y_i \ge 0\), the solution is considered dual feasible if:
$$y_i \ge -\epsilon$$
where \(\epsilon\) is the dual feasibility tolerance. This means that even if \(y_i\) is slightly negative, as long as it is within the tolerance \(\epsilon\), the solver treats the solution as feasible.
As an example, consider a dual constraint where a dual variable \(y_1\) is required to be non-negative (i.e., \(y_1 \ge 0\)). If the solver finds \(y_1 = -0.0000000001\) and the dual feasibility tolerance is set to to 1e-10, the solution would still be considered dual feasible because the violation is within the acceptable tolerance.
Comments
0 comments
Please sign in to leave a comment.