Primal/dual optimization scaling for numerical stability

I am solving a convex QP via ALM and am using Gurobi.jl for benchmarking. I noticed that Gurobi implements some problem scaling techniques (slightly more detail here: https://support.gurobi.com/hc/en-us/community/posts/15330309039633/comments/15341224273681) for improved numerical stability. To make the comparisons more fair, I would like to implement versions of the scaling techniques for a QP of the form

\min_x \bigl\{\tfrac12 x^\top Q x + q^\top x : Ax\leq b\bigr\}\tag{P}
\min_y \bigl\{\tfrac12 (A^\top y + q)^\top Q^{\dagger} (A^\top y+q) + b^\top y : y\geq0\bigr\}.\tag{D}

I think that I understand the previous Gurobi post for equilibrium scaling, but I am wondering what is meant by “geometric mean scaling” and (roughly) how to implement it. Is it related to considering new variables x'\gets \frac{x}{\sqrt{\|x^\nu\|\|y^\nu\|}} and y'\gets \frac{y}{\sqrt{\|x^\nu\|\|y^\nu\|}} for given data x^\nu and y^\nu at iteration \nu?

Or are there any Julia solvers that implement some form of scaling where the scaling is documented? It seems that OSQP.jl does some scaling, but I didn’t see an explanation in the docs.

Crosslinked here.

2 Likes

This seems like a question for the Gurobi developers. cc @vasyfa