#[non_exhaustive]pub enum SolveStatus {
Optimal,
LocallyOptimal,
Infeasible,
Unbounded,
MaxIterations,
SuboptimalSolution,
Timeout,
NumericalError,
NonConvex(String),
NonconvexLocal,
NonconvexGlobal,
NotSupported(String),
}Expand description
ソルバーの求解結果ステータス
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Optimal
最適解が求まった
LocallyOptimal
局所的最適解(非凸QP: 慣性修正付きIPMが収束したKKT点)
Q行列が不定(indefinite)の場合、大域的最適性は保証されないが、 KKT条件を満たす局所最適解またはサドル点が返される。 慣性修正(Gershgorin 評価から導出した δI 加算)により IPM を収束させた。
Infeasible
問題が実行不可能(infeasible)
Unbounded
問題が非有界(unbounded)
MaxIterations
反復回数上限に到達した(最適性未確認)
SuboptimalSolution
解は見つかったが精度基準未達(偽Optimal検出: スケール解除後の残差超過)
Timeout
タイムアウト(timeout_secs を超過した)
NumericalError
数値エラー(LDL分解失敗等、問題が数値的に解けない)
NonConvex(String)
Q行列が不定(非凸QP)。IPMはQ正半定値を前提とする。
NonconvexLocal
非凸 QP の局所最適解 (= solve_qp_global 経由で incumbent あり、ε-global 証明なし)。
BB driver が deadline / max_nodes / max_depth で打ち切られ、incumbent ある状態。
LocallyOptimal (= IPM inertia 補正後の単発解) と区別して、caller が「探索打切」
vs「単発 KKT 収束」を識別できる。Optimal には含めない (= global proof なし)。
NonconvexGlobal
非凸 QP の大域 ε-最適解 (= solve_qp_global で gap_tol まで証明済み + Q が indefinite)。
Optimal は「Q が PSD で IPM/BB が global 達成」専用に維持し、indefinite Q の場合は
本 variant で明示分離する (caller が「global 証明済」かを fact で判別)。
NotSupported(String)
Problem type not supported by this solver.
Returned when the caller passes a problem that cannot be handled, e.g. a QCQP (quadratic constraints present) submitted to the QP/LP entry.
Trait Implementations§
Source§impl Clone for SolveStatus
impl Clone for SolveStatus
Source§fn clone(&self) -> SolveStatus
fn clone(&self) -> SolveStatus
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SolveStatus
impl Debug for SolveStatus
Source§impl Display for SolveStatus
impl Display for SolveStatus
Source§impl PartialEq for SolveStatus
impl PartialEq for SolveStatus
Source§fn eq(&self, other: &SolveStatus) -> bool
fn eq(&self, other: &SolveStatus) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for SolveStatus
Auto Trait Implementations§
impl Freeze for SolveStatus
impl RefUnwindSafe for SolveStatus
impl Send for SolveStatus
impl Sync for SolveStatus
impl Unpin for SolveStatus
impl UnsafeUnpin for SolveStatus
impl UnwindSafe for SolveStatus
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more