`hs87` differs from Hock–Schittkowski and CUTEs in two constraints and the objective
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 45/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- julia
調査の方向性
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.
索引モデルが issue の本文から書いたものです。
説明
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.
- 主要言語
- Julia
- スター
- 90
- フォーク
- 48
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
JuliaSmoothOptimizers/OptimizationProblems.jl のほかの issue
-
`biggs6` disagrees with CUTEst and is unbounded below対応中かも @timholy が 27 日前に担当しました。 オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
JuliaSmoothOptimizers/OptimizationProblems.jl#440 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
JuliaSmoothOptimizers/OptimizationProblems.jl#477 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
JuliaSmoothOptimizers/OptimizationProblems.jl#442 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 52/100
JuliaSmoothOptimizers/OptimizationProblems.jl#425 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
JuliaSmoothOptimizers/OptimizationProblems.jl#419 ·
メンテナーはふだん 1 日以内に返信
JuliaSmoothOptimizers/OptimizationProblems.jl の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
メンテナーはふだん 1 日以内に返信
-
lux
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
JuliaGraphs/GraphNeuralNetworks.jl#732 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
erfinv(::Float16) and erfcinv(::Float16) are wrong for abs(x) <= 0.75 (erfinv(Float16(0)) == 0.2201)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
JuliaMath/SpecialFunctions.jl#571 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100