AI4OPT / AI4OPT/PGLearn.jl

Solving SOCOPF with Clarabel128 mostly results in ALMOST_OPTIMAL and NEARLY_FEASIBLE_POINT

Abierto
#208 3 comentarios 1 reacción 2 asignados Reclamado por @ivanightingale Ver en GitHub
Lenguaje dominante
Julia
Estrellas
7
Forks
5
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I noticed that most if not all `SOCOPF` solutions solved by `Clarabel` under `Float128` precision have the `ALMOST_OPTIMAL` termination status and the `NEARLY_FEASIBLE_POINT` primal and dual status.

However, I also noticed that these solutions in fact have very small constraint violation.

Reproducible example:

```julia
julia --project=. exp/sampler.jl config_debug.toml 1 64
```

The content of config_debug.toml is:
```TOML
pglib_case = "14_ieee"
export_dir = "data/14_ieee_128"

floating_point_type = "float64"

[sampler]

[sampler.load]
noise_type = "ScaledUniform"
l = 0.80 # Lower bound of base load factor
u = 1.20 # Upper bound of base load factor
sigma = 0.20 # Relative (multiplicative) noise level.

[OPF]
# OPF formulations to solve for each sample

[OPF.SOCOPF128]
# These settings are meant to solve `SOCWRConic` problems to high precision
type = "SOCOPF"
solver.name = "Clarabel128"
solver.attributes.max_iter = 2000
solver.attributes.max_step_fraction = 0.995
# Disabling scaling can avoid violations (especially in the dual)
# /!\ This results in worse performance /!\
solver.attributes.equilibrate_enable = true
# Tight tolerances
solver.attributes.tol_gap_abs = 1e-12
solver.attributes.tol_gap_rel = 1e-12
solver.attributes.tol_feas = 1e-12
solver.attributes.tol_infeas_rel = 1e-12
solver.attributes.tol_ktratio = 1e-10
# Reduced accuracy settings
solver.attributes.reduced_tol_gap_abs = 1e-8
solver.attributes.reduced_tol_gap_rel = 1e-8
solver.attributes.reduced_tol_feas = 1e-8
solver.attributes.reduced_tol_infeas_abs = 1e-8
solver.attributes.reduced_tol_infeas_rel = 1e-8
solver.attributes.reduced_tol_ktratio = 1e-7
# Additional linear solver-related settings, to match precision of Float128
solver.attributes.static_regularization_enable = false # typically not needed unless tolerances go below 1e-14
solver.attributes.dynamic_regularization_enable = true # kept for safety
solver.attributes.dynamic_regularization_eps = 1e-28
solver.attributes.dynamic_regularization_delta = 1e-14
solver.attributes.iterative_refinement_reltol = 1e-18
solver.attributes.iterative_refinement_abstol = 1e-18
```

Clarabel: v0.11.0

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.