Skip to main content

BayesianNetwork

Struct BayesianNetwork 

Source
pub struct BayesianNetwork;
Expand description

Bayesian-network model for binary spaces (BOA).

Implements ProbabilityModel by greedily learning a bounded-in-degree DAG over the binary genes with a BIC structure score, then ancestral-sampling from the fitted CPTs (see the module docs for the algorithm, the BIC rationale, bit-packing, and references). Fitness is accepted but ignored; the fit is always unweighted and non-incremental.

fit is O(D² · N · κ); sample is O(D) per individual.

Trait Implementations§

Source§

impl Clone for BayesianNetwork

Source§

fn clone(&self) -> BayesianNetwork

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for BayesianNetwork

Source§

impl Debug for BayesianNetwork

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BayesianNetwork

Source§

fn default() -> BayesianNetwork

Returns the “default value” for a type. Read more
Source§

impl<B: Backend> ProbabilityModel<B> for BayesianNetwork

Source§

fn fit( &self, params: &Self::Params, prev: Option<&Self::State>, population: Tensor<B, 2>, fitness: Tensor<B, 1>, device: &<B as BackendTypes>::Device, ) -> Self::State

Fit the Bayesian network to the selected population.

When prev = None returns the edgeless prior (natural order, empty parent lists, single-cell CPTs at init_prob); population and fitness are ignored. Otherwise the whole network is relearned from scratch (the fit is non-incremental — prev is the not-bootstrap signal only):

  1. Bitizes the selected rows to {0, 1} via >= 0.5.
  2. Greedily adds the highest-BIC-gain edge each round (subject to the max_parents cap and acyclicity) until no strictly-positive gain remains, using a D × D gain cache.
  3. Estimates Laplace-smoothed CPTs from the final structure.
  4. Computes a deterministic topological order (Kahn, min-index).

The fitness argument is accepted but always ignored.

§Panics

In release builds, panics if the population tensor cannot be read back as f32 (.expect("population tensor must be readable as f32")).

In debug builds, additionally panics on the following debug_assert checks (all disabled in release):

  • the population column count disagrees with params.genome_dim;
  • params.max_parents >= usize::BITS (which would overflow the 1usize << q CPT table sizing);
  • the closing topological order fails to cover all D nodes (guaranteed by the DAG invariant).
Source§

fn sample( &self, state: &Self::State, n: usize, rng: &mut dyn Rng, device: &<B as BackendTypes>::Device, ) -> Tensor<B, 2>

Draw n binary genomes by ancestral sampling along the topological order.

Each gene v is sampled from P(v = 1 | parents) read out of its CPT at the bit-packed parent configuration (parents already sampled, since the traversal follows the topological order). Exactly one rng.random::<f32>() call is consumed per gene regardless of structure, keeping RNG consumption stable. Host RNG only (never Tensor::random / B::seed). The returned tensor has shape (n, D) and contains only 0.0 and 1.0.

Source§

type Params = BayesianNetworkParams

Static, per-run model configuration (learning rates, priors, …).
Source§

type State = BayesianNetworkState

Evolving fitted statistics carried generation to generation.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Adaptor<()> for T

Source§

fn adapt(&self)

Adapt the type to be passed to a metric.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<C> CloneExpand for C
where C: Clone,

Source§

fn __expand_clone_method(&self, _scope: &mut Scope) -> C

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoComptime for T

Source§

fn comptime(self) -> Self

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> TuneInputs for T
where T: Clone + Send + Sync + 'static,

Source§

type At<'a> = T

The concrete input type at lifetime 'a.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more