pub struct SeReport {
pub status: SeStatus,
pub iterations: usize,
pub objective: f64,
pub last_step: f64,
pub residuals: Vec<f64>,
pub unconstrained: Vec<usize>,
}Expand description
The outcome of an estimate.
Fields§
§status: SeStatus§iterations: usize§objective: f64J(x) = ½·rᵀWr at the final state — the quantity being minimized, and
the statistic bad-data detection’s chi-squared test is built on.
last_step: f64Largest Δx element of the final step, for diagnosing a run that hit
max_iter.
residuals: Vec<f64>Final residuals z − h(x), one per measurement in input order.
unconstrained: Vec<usize>State-vector columns that no measurement constrains at all.
These are held at their starting value rather than estimated — an unknown nothing observes cannot be recovered, and moving it would be inventing information. In practice they are usually the virtual slack buses gridoxide synthesizes per source: power-grid-model has no such bus in its state space, so a network it considers fully observable can still leave gridoxide with surplus unknowns whenever the source’s own power is unmeasured.
This is structural detection only — an all-zero column. A column that is nonzero but linearly dependent on others is just as unobservable and is not caught here; that is numerical observability analysis.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for SeReport
impl RefUnwindSafe for SeReport
impl Send for SeReport
impl Sync for SeReport
impl Unpin for SeReport
impl UnsafeUnpin for SeReport
impl UnwindSafe for SeReport
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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