Releases: hika019/Otspot
Releases · hika019/Otspot
v0.5.0
0.4.0
[0.4.0] - 2026-06-04
Breaking
LpProblemにobj_offset追加、SolverOptions.psd_check_max_n削除
修正
- 縮退 bound
(±inf,±inf)の誤受理を修正(LP/QP) - Infeasible/Unbounded reduced LP の postsolve で偽 solution を生成しないよう修正
- QP→LP dispatch の変換エラーを NumericalError 化
内部
- #42 BSF Big-M Phase I を revert(QP/LP 退化のため、v0.5.0 へ)
- README ベンチ結果を実測値に更新
Full Changelog: v0.3.1...v0.4.0
v0.3.1
追加
try_var_namechecked variant (try_value と対称)
修正
solve_ipm/run_ipmで SolverOptions validate guard (panic → ModelError)greenbea_postsolve_dual_feasibilityを#[ignore]化 (bench 並行下 flaky)- audit.rs の should_panic 誤検出修正
内部
- rustdoc broken link 整理 + CI doc job 追加
Full Changelog: v0.3.0...v0.3.1
v0.3.0
追加
IpmOptionsに dd_ldl / minres_ir / kkt_memory_budget_bytes フィールドSolverOptionsに presolve_max_pass / presolve_skip_large_coeff / presolve_phase2 フィールド
破壊的変更
SolverResultに opt_cert フィールド追加SolveOutcome/FarkasCertificate/UnboundedRayCertificate/IncompleteReasonを削除diagnose()系 API を削除SolverResult::pfeas/dfeas/gapフィールドを削除 (final_residualsに集約)- deprecated
solve_qp_with_optionsを削除 - 環境変数読み取りを全廃 (
IPM_DD_LDL/MINRES_IR/MINRES_ETA/KKT_MEMORY_BUDGET_BYTES/QP_PRESOLVE_MAX_PASS/QP_PRESOLVE_SKIP_LARGE_COEFF/QP_PRESOLVE_PHASE2)
修正
- B&B finalize_proven が EmptyCol を未マスクで誤降格していたバグを修正
Full Changelog: v0.2.0...v0.3.0
v0.2.0
破壊的変更
Optimalは KKT 全条件を検証した証明を伴う場合のみ確定。証明できない解はSuboptimalSolution等に降格- 内部実装を
otspot-core/otspot-io/otspot-modelに分割(公開 API は維持)
追加
- 非凸 QP の大域求解 (
solve_qp_global) — branch-and-bound + α-BB / McCormick 緩和 - 証明付き最適性検証 (
OptimalCertificate/BoundGapCertificate) — LP / QP / MIP 共通 - 二次目的の Expression DSL —
x * x/x * yで二次項を記述可能 Model::try_add_var/try_value— panic しない fallible 版- MPS / QPS ストリーミングパーサ(大規模インスタンスのメモリ削減)
修正
- 全変数が presolve で消去される QP が
NumericalErrorを返していた問題を修正 - 非凸 QP の branch-and-bound で KKT 残差が許容を超えるケースを修正
削除
- Python バインディングを削除. 別リポジトリに移管予定.
Full Changelog: v0.1.1...v0.2.0
v0.1.1
-
LP の実行不可判定バグを修正
- LP / QP の求解安定性・汎用性を改善
- MILP の MPS 読み込みに対応
- Python バインディングを追加
```toml
otspot = "0.1.1"
```
Full Changelog: v0.1.0...v0.1.1