IPM
An interior-point method solver for cone programs (semidefinite, second-order, and positive cones), used internally to solve the KKT systems arising from constrained sheaf-based control problems.
CellularSheaves.IPM.AbstractCone — Type
AbstractConeA convex cone.
CellularSheaves.IPM.CofreeCone — Type
CofreeCone <: AbstractConeThe cone of all n-dimensional Euclidean vectors.
CellularSheaves.IPM.ExponentialCone — Type
ExponentialCone <: AbstractTDConeThe exponential cone, consisting of all triples (x, y, z) such that x > 0, y > 0, and y log(x/y) ≥ z.
CellularSheaves.IPM.IPMProblem — Method
IPMProblem(Q, B, c, g, K)Construct an IPMProblem.
CellularSheaves.IPM.PositiveCone — Type
PositiveCone <: AbstractConeAn n-dimensional positive orthant.
CellularSheaves.IPM.PowerCone — Type
PowerCone{T} <: AbstractTDConeThe three-dimensional power cone with parameter α ∈ (0, 1), consisting of all triples (x₁, x₂, x₃) such that x₁ ≥ 0, x₂ ≥ 0, and x₁^α x₂^(1-α) ≥ |x₃|.
CellularSheaves.IPM.Scaling — Method
Scaling{T}(n, m)Construct an identity (trivial) scaling with all entries equal to 1.
CellularSheaves.IPM.SecondOrderCone — Type
SecondOrderCone <: AbstractConeThe n + 1-dimensional second-order cone, consisting of all pairs (x, y) such that y ≥ ‖x‖.
CellularSheaves.IPM.SemidefiniteCone — Type
SemidefiniteCone <: AbstractConeA cone of n × n positive-semidefinite matrices.
CellularSheaves.IPM.cache — Method
cache(caches, i, cone)Get the ith cache.
CellularSheaves.IPM.cachesize — Method
cachesize(cone, n)Return the number of cache slots needed for a cone with embedding dimension n.
CellularSheaves.IPM.corr! — Method
corr!(r, p, d, Δp, Δd, σμ, cache)Set r to the Mehrotra corrector term r = -d - σμ f'(p) - η, where η is the third-order correction η = -½ f'''(p)[Δp, f''(p)⁻¹ Δd]. If p and d are elements of a symmetric cone, this formula simplifies to r = -d + (σμ e - Δp ∘ Δd) / p, where Δp ∘ Δd is the Jordan product of Δp and Δd.
CellularSheaves.IPM.degree — Method
degree(cone::AbstractCone, n::Integer)Get the rank of a cone with embedding dimension n.
CellularSheaves.IPM.equilibrate! — Method
equilibrate!(scaling, B, Q, c, g; itmax=10, tol=1e-3)Run block-aware Ruiz equilibration on the conic-QP data in place. Mutates scaling, B, Q, c, and g. Returns scaling.
Keyword arguments:
itmax: maximum Ruiz sweeps.tol: stop when every row/block ∞-norm is withintolof 1.
CellularSheaves.IPM.identity! — Method
identity!(x::AbstractVector, cone::AbstractCone)Set x to the fixed point -f'(e) = e of the barrier.
CellularSheaves.IPM.initcache! — Method
initcache!(cache)Initialise a cache.
CellularSheaves.IPM.maxsteps — Method
maxsteps(p, Δp, d, Δd, cache)Compute the largest numbers 0 < τp, τd ≤ 1 such that p + τp Δp and d + τd Δd lie in the interior of their respective cones
CellularSheaves.IPM.scale! — Method
scale!(H, p, d, cache)Set H to the Tuncel scaling matrix. If p and d are elements of a symmetric cone, this is the Hessian f''(w) of the barrier at the Nesterov-Todd scaling point w.
CellularSheaves.IPM.scale! — Method
scale!(p, d, y, scaling)Apply forward scaling to vectors in place:
p ← D⁻¹ p, d ← D d, y ← E⁻¹ yCellularSheaves.IPM.unscale! — Method
unscale!(p, d, y, scaling)Apply inverse scaling to vectors in place:
p ← D p, d ← D⁻¹ d, y ← E yCellularSheaves.IPM.workspacesize — Method
workspacesize(cone, n)Return the number of workspace floats needed for a cone with embedding dimension n.
CommonSolve.solve — Method
solve(problem::IPMProblem;
verbose=true,
step_frac=0.99,
feas_tol=1e-8,
gap_tol=1e-8,
itmax=100,
near_factor=1000.0,
stall_tol=1e-6,
forcing_ceil=0.3,
forcing_frac=1.0,
refine_itmax=10,
refine_stall=0.5,
scale_itmax=10,
kkt=UzawaSettings(),
)Solve an IPMProblem.