Internals

These symbols are not part of the public API, their behavior may change without warning between releases.

CoolPDLP.ConstraintMatrixType
ConstraintMatrix

Fields

  • A::SparseArrays.AbstractSparseMatrix{T, Ti} where {T<:Number, Ti<:Integer}

  • At::SparseArrays.AbstractSparseMatrix{T, Ti} where {T<:Number, Ti<:Integer}

source
CoolPDLP.ConvergenceStatsType
ConvergenceStats

Fields

  • err::CoolPDLP.KKTErrors: current KKT error

  • starting_time::Float64: time at which the algorithm started, in seconds

  • time_elapsed::Float64: time elapsed since the algorithm started, in seconds

  • kkt_passes::Int64: number of multiplications by both the KKT matrix and its transpose

  • termination_status::CoolPDLP.TerminationStatus: termination stats (should be STILL_RUNNING until the algorithm actually terminates)

  • error_history::Array{Tuple{Int64, CoolPDLP.KKTErrors{T}}, 1} where T<:Number

source
CoolPDLP.ConversionParametersType
ConversionParameters{T,Ti,M}

Type parameters

  • T: floating point type to convert values to
  • Ti: integer type to convert indices to
  • M: matrix constructor to use on the constraints

Fields

  • backend::KernelAbstractions.Backend: CPU or GPU backend used for computations
source
CoolPDLP.GenericParametersType
GenericParameters

Fields

  • show_progress::Bool: whether to show a progress bar

  • check_every::Int64: frequency of restart or termination checks

  • record_error_history::Bool: whether or not to record error evolution

source
CoolPDLP.KKTErrorsType
KKTErrors

Fields

  • primal::Number: primal feasibility error

  • primal_scale::Number: characteristic scale of the primal constraint RHS

  • dual::Number: dual feasibility error

  • dual_scale::Number: characteristic scale of the dual constraint RHS

  • gap::Number: primal-dual gap

  • gap_scale::Number: characteristic scale of the gap

source
CoolPDLP.PDHGStateType
PDHGState

Fields

  • sol::PrimalDualSolution: current solution

  • sol_last::PrimalDualSolution: last solution

  • step_sizes::CoolPDLP.StepSizes: step sizes

  • scratch::CoolPDLP.Scratch: scratch space

  • stats::CoolPDLP.ConvergenceStats: convergence stats

source
CoolPDLP.PDLPStateType
PDHGState

Fields

  • sol::PrimalDualSolution: current solution

  • sol_last::PrimalDualSolution: last solution

  • sol_avg::PrimalDualSolution: current average solution

  • sol_avg_last::PrimalDualSolution: last average solution

  • sol_restart::PrimalDualSolution: solution from last restart

  • step_sizes::CoolPDLP.StepSizes: step sizes

  • scratch::CoolPDLP.Scratch: scratch space

  • iteration::CoolPDLP.IterationCounter: iteration counter

  • restart_stats::CoolPDLP.RestartStats: restart stats

  • stats::CoolPDLP.ConvergenceStats: convergence stats

source
CoolPDLP.PreconditionerType
Preconditioner

Fields

  • D1::LinearAlgebra.Diagonal{T, V} where {T<:Number, V<:DenseVector{T}}: left preconditioner

  • D2::LinearAlgebra.Diagonal{T, V} where {T<:Number, V<:DenseVector{T}}: right preconditioner

source
CoolPDLP.PreconditioningParametersType
PreconditioningParameters

Fields

  • chambolle_pock_alpha::Any: norm parameter in the Chambolle-pock preconditioner

  • ruiz_iter::Int64: iteration parameter in the Ruiz preconditioner

source
CoolPDLP.RestartParametersType
RestartParameters

Fields

  • sufficient_decay::Number: restart criterion: sufficient decay in normalized duality gap

  • necessary_decay::Number: restart criterion: necessary decay

  • artificial_decay::Number: restart criterion: long inner loop

source
CoolPDLP.RestartStatsType
RestartStats

Fields

  • restart_from_avg::Bool

  • err_candidate::CoolPDLP.KKTErrors

  • err_candidate_last::CoolPDLP.KKTErrors

  • err_restart::CoolPDLP.KKTErrors

source
CoolPDLP.StepSizeParametersType
StepSizeParameters

Fields

  • invnorm_scaling::Number: scaling of the inverse spectral norm of A when defining the non-adaptive step size

  • primal_weight_damping::Number: primal weight update damping

  • zero_tol::Number: tolerance in absolute comparisons to zero

source
CoolPDLP.StepSizesType
StepSizes

Fields

  • η::Number: step size

  • η_sum::Number: cumulated step size since last restart

  • ω::Number: primal weight

source
CoolPDLP.TerminationParametersType
TerminationParameters

Fields

  • termination_reltol::Number: tolerance on KKT relative errors to decide termination

  • max_kkt_passes::Int64: maximum number of multiplications by both the KKT matrix K and its transpose Kᵀ

  • time_limit::Float64: time limit in seconds

source
CoolPDLP.TerminationStatusType
TerminationStatus

Enum for the various ways that an algorithm can terminate.

Possible values:

  • OPTIMAL
  • TIME_LIMIT
  • ITERATION_LIMIT
  • STILL_RUNNING
source
CoolPDLP.##is_feasible_simulator#433Method
is_feasible(x, milp[; cons_tol=1e-6, int_tol=1e-5, verbose=true])

Check whether solution vector x is feasible for milp.

Keyword arguments

  • cons_tol: tolerance for constraint satisfaction
  • int_tol: tolerance for integrality requirements
  • verbose: whether to display warnings
source
CoolPDLP.##preprocess_simulator#591Method
preprocess(milp_init, sol_init, algo)

Apply preconditioning, type conversion and device transfer to milp_init and sol_init for the algorithm defined by algo.

Return a tuple (milp, sol).

source
CoolPDLP.##proj_multiplier_simulator#371Method
proj_multiplier(λ, l, u)

Project λ onto the feasible space of the (double) Lagrange multiplier λ⁺ - λ⁻ associated with the constraint l ≤ x ≤ u, where l and/or u might be infinite.

source
CoolPDLP.##solve_simulator#595Method
solve(milp, sol, algo)
solve(milp, algo)

Solve the continuous relaxation of milp starting from solution sol using the algorithm defined by algo.

Return a couple (sol, stats) where sol is the last solution and stats contains convergence information.

source
CoolPDLP.combineMethod
combine(l, u)

Return the largest finite absolute value between the two bounds, or zero if neither is finite.

source
CoolPDLP.common_backendMethod
common_backend(args...)

Return the common GPU backend of several arguments, if it exists, and throw an error otherwise.

source
CoolPDLP.proj_multiplierMethod
proj_multiplier(λ, l, u)

Project λ onto the feasible space of the (double) Lagrange multiplier λ⁺ - λ⁻ associated with the constraint l ≤ x ≤ u, where l and/or u might be infinite.

source
CoolPDLP.set_eltypeMethod
set_eltype(T, milp)

Change the element type of floating-point containers inside milp to T.

source
CoolPDLP.sort_rows_columnsMethod
sort_rows_columns(milp)

Return a new MILP where the constraint matrix has been permuted by order of increasing column and row density.

source