`hs87` differs from Hock–Schittkowski and CUTEs in two constraints and the objective
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- julia
Direzione di ricerca
Start with src/ADNLPProblems/hs87.jl and compare its constraints and piecewise objective with the linked HS87.SIF and CUTEst references; inspect the corresponding PureJuMP implementation for the breakpoint and Inf behavior. Check the metadata for the notes and :best_known_upper_bound as well. Done means the two constraints, objective behavior, and metadata agree with the stated references and the reported values are valid for the corrected problem.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Here's what Hock-Schittkowski and CUTEst use for the constraints:
This package differs for two of them:
- https://github.com/JuliaSmoothOptimizers/OptimizationProblems.jl/blob/739fc30814878775f500d76284834b366fcdcc68/src/ADNLPProblems/hs87.jl#L53-L54 which omits the square on
x[3] - https://github.com/JuliaSmoothOptimizers/OptimizationProblems.jl/blob/739fc30814878775f500d76284834b366fcdcc68/src/ADNLPProblems/hs87.jl#L57-L58 the bilinear term uses
cos(b + x6), notsin(b + x6). As a result,c2andc3have the same bilinear term (presumably just a copy/paste error).
The remaining violation in the SIF formulation comes from b. With Colville's b = 1.48477 instead of the printed 1.48577, all four constraints at x* are below 1e-4 (see CUTEst's COLVILLE6, and ralna/SIF@8832f70 for the sources). The constants d and e are cos and sin of b - 0.00889 with b = 1.48477. #478 adds colville6. With the two errors above fixed, hs87 would equal CUTEst's HS87.
The piecewise-linear objective is also handled differently at the breakpoints. HS87.SIF uses 30 x1 for x1 < 300 and 31 x1 for x1 ≥ 300, and 28 x2, 29 x2, 30 x2 on [0, 100), [100, 200) and [200, ∞).
- ADNLPProblems writes f1 and f2 as sums of indicator products with closed intervals, so both pieces count at a breakpoint. At x = (300, 50, …) it returns 19700, where SIF gives 10700 and PureJuMP gives 10400. At x2 = 100 and x2 = 200 it returns 57 x2 and 59 x2.
- PureJuMP's
if/elseifchain picks the lower piece at each breakpoint. SIF picks the upper piece. - Outside the pieces' ranges, which are also outside the variable bounds, both versions try to return
Inf. In PureJuMP,f1callseltype(x)(Inf), wherexis the vector of JuMP variables. That throwsMethodError: no method matching VariableRef(::Float64)whenever the operator is evaluated with x1 > 400 or x1 < 0.f2useseltype(t)and does not have this problem.
Smaller metadata points: the notes contain a second, unrelated classification line (PLR-AN-5-10), and :best_known_upper_bound is Inf. The SOLTN value in HS87.SIF is 8927.5977. hs87's objective at x* is 8927.5964, but x* is not feasible for b = 1.48577, so that value is not a valid upper bound for this problem.
- Lingua principale
- Julia
- Stelle
- 90
- Fork
- 48
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaSmoothOptimizers/OptimizationProblems.jl
-
`biggs6` disagrees with CUTEst and is unbounded belowForse già presa @timholy l’ha presa 27 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
JuliaSmoothOptimizers/OptimizationProblems.jl#440 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
JuliaSmoothOptimizers/OptimizationProblems.jl#477 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 20/100
JuliaSmoothOptimizers/OptimizationProblems.jl#442 ·
I maintainer di solito rispondono entro 1 giorno
-
Move repo to Julia 1.10 LTSAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
JuliaSmoothOptimizers/OptimizationProblems.jl#425 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
JuliaSmoothOptimizers/OptimizationProblems.jl#419 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di JuliaSmoothOptimizers/OptimizationProblems.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
I maintainer di solito rispondono entro 1 giorno
-
lux
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
JuliaGraphs/GraphNeuralNetworks.jl#732 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
erfinv(::Float16) and erfcinv(::Float16) are wrong for abs(x) <= 0.75 (erfinv(Float16(0)) == 0.2201)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
JuliaMath/SpecialFunctions.jl#571 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100