In this notebook, I try to find a V that maximizes the ROA by using alternations, i.e., In this notebook, I try to use alternations (on [λ, ρ] and [V] respectively) to find the largest region of attraction possible on the time-reversed Van der Pol oscillator, following the hw. Specifically, I
RealContinuousLyapunovEquation
.However, the solver fails and is not able to find any V, even if I initialize the guess of V to P.
Questions:
I think there might be two possible fixes:
In bilinear alternation, if you solve a conic optimization problem with an objective, then the solution to this optimization problem is always on the boundary of the feasibility set, namely it is always barely feasible. This barely feasible solution can cause numerical issue in the next iteration. It is better to use a strictly feasible solution.
Namely if you have a problem
max c.dot(x)
s.t x in set
Let's denote the optimal cost as cost_star
, then solve a feasibility problem that would "back-off" from the boundary
find_x
s.t c.dot(x) >= cost_star - 0.001
x in set
You can find an implementation in https://github.com/RobotLocomotion/drake/blob/fd48af23e17dba70bb06bcede2adea3315d30d7b/geometry/optimization/cspace_free_polytope.cc#L252-L286
It is possible that your Lagrangian multiplier λ has some very small coefficients, which would cause numerical issues. You can remove these coefficients through lambda.RemoveTermsWithSmallCoefficients()
function.