JuliaSmoothOptimizers / JuliaSmoothOptimizers/RegularizedOptimization.jl

Detecting unbounded problems

Open
#331 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Julia
Stars
21
Forks
11
PR merge metrics
No merged PRs in 30d

Description

Some solvers (R2, R2N, AL for instance) do not detect unbounded problems. While solving the problem (or subproblem), iterate and / or objective function values diverge, which could cause the solver to crash in the same time.
Here is an exemple on the following problem, with the solver `R2` :

```python
problem = "hs378"
nlp = MathOptNLPModel(OptimizationProblems.PureJuMP.eval(Meta.parse(problem))(), name = problem)
quadratic_model = QuadraticModel(nlp, nlp.meta.x0, name = nlp.meta.name)
nlp_quadra = RegularizedNLPModel(nlp, RootNormLhalf(0.5))
```

```
[ Info: iter f(x) h(x) √(ξ/ν) ρ σ ‖x‖ ‖s‖ R2
[ Info: 0 -1.8e+01 3.0e+00 1.0e+01 1.3e+00 3.1e+00 2.0e+00 3.3e+00 ↘
[ Info: 1 -6.3e+01 4.7e+00 1.7e+01 2.0e+00 1.0e+00 5.3e+00 1.6e+01 ↘
[ Info: 2 -6.3e+02 9.1e+00 5.3e+01 4.6e+00 3.4e-01 2.2e+01 1.6e+02 ↘
[ Info: 3 -3.9e+04 2.4e+01 4.5e+02 1.3e+01 1.1e-01 1.8e+02 4.0e+03 ↘
[ Info: 4 -2.4e+07 1.3e+02 1.2e+04 4.1e+01 3.8e-02 4.2e+03 3.1e+05 ↘
[ Info: 5 -1.5e+11 1.1e+03 9.7e+05 1.3e+02 1.3e-02 3.2e+05 7.7e+07 ↘
[ Info: 6 -9.4e+15 1.6e+04 2.4e+08 3.8e+02 4.2e-03 7.7e+07 5.8e+10 ↘
[ Info: 7 -5.3e+21 3.9e+05 1.9e+11 1.1e+03 1.4e-03 5.8e+10 1.3e+14 ↘
[ Info: 8 -2.8e+28 1.9e+07 4.2e+14 3.4e+03 4.7e-04 1.3e+14 9.0e+17 ↘
[ Info: 9 -1.3e+36 1.6e+09 2.9e+18 1.0e+04 1.6e-04 9.0e+17 1.9e+22 ↘
[ Info: 10 -5.7e+44 2.3e+11 6.1e+22 3.1e+04 5.2e-05 1.9e+22 1.2e+27 ↘
[ Info: 11 -2.2e+54 5.7e+13 3.8e+27 9.3e+04 1.7e-05 1.2e+27 2.2e+32 ↘
[ Info: 12 -7.6e+64 2.4e+16 7.0e+32 2.8e+05 5.8e-06 2.2e+32 1.2e+38 ↘
[ Info: 13 -2.4e+76 1.8e+19 3.9e+38 8.4e+05 1.9e-06 1.2e+38 2.0e+44 ↘
[ Info: 14 -6.7e+88 2.4e+22 6.6e+44 2.5e+06 6.4e-07 2.0e+44 1.0e+51 ↘
[ Info: 15 -1.7e+102 5.3e+25 3.3e+51 7.6e+06 2.1e-07 1.0e+51 1.5e+58 ↘
[ Info: 16 -3.9e+116 2.1e+29 5.0e+58 2.3e+07 7.2e-08 1.5e+58 7.0e+65 ↘
[ Info: 17 -8.0e+131 1.4e+33 2.3e+66 6.8e+07 2.4e-08 7.0e+65 9.6e+73 ↘
[ Info: 18 -1.5e+148 1.6e+37 3.1e+74 2.0e+08 7.9e-09 9.6e+73 3.9e+82 ↘
[ Info: 19 -2.5e+165 3.2e+41 1.3e+83 6.1e+08 2.6e-09 3.9e+82 4.8e+91 ↘
[ Info: 20 -3.7e+183 1.1e+46 1.5e+92 1.8e+09 8.8e-10 4.8e+91 1.8e+101 ↘
[ Info: 21 -5.0e+202 6.9e+50 5.7e+101 5.5e+09 2.9e-10 1.8e+101 1.9e+111 ↘
[ Info: 22 -6.1e+222 7.2e+55 6.3e+111 1.7e+10 9.8e-11 1.9e+111 6.4e+121 ↘
[ Info: 23 -6.6e+243 1.3e+61 2.1e+122 5.0e+10 3.3e-11 6.4e+121 6.3e+132 ↘
[ Info: 24 -6.5e+265 4.1e+66 2.1e+133 1.5e+11 1.1e-11 6.3e+132 1.9e+144 ↘
[ Info: 25 -5.8e+288 2.2e+72 6.1e+144 NaN 3.6e-12 1.9e+144 1.7e+156 =
```
Note that IPOPT solver is able to recognize that the problem is unbounded:
```
EXIT: Iterates diverging; problem might be unbounded.
solver specific:
internal_msg: :Diverging_Iterates
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.