pub struct Problem { /* private fields */ }Expand description
Represents an instance of the optimization problem.
The problem is defined as: $$\max_{c\in\mathbb{R}, B \in \mathbb{S}^n_+} c - \lambda \text{Tr}(B) + t \log \det (B) \qquad \text{s.t. }\quad f_i - c = \Phi_i^T B \Phi_i, \:\:\forall i\in[\![1, N]\!]$$ where:
- $\lambda$ is the trace penalty,
- $t$ is the relative precision, with $t = \varepsilon / n$,
- $x_i$ are the sample points,
- $f_i$ are the function values at the sample points,
- $\Phi$ is the features matrix derived from the kernel matrix $K$,
- $K$ is the kernel matrix computed from the sample points using a specified kernel function.
In practice, $K$ only is computed first, and $\Phi$ is optionally computed later.
Implementations§
Source§impl Problem
impl Problem
Sourcepub fn new(
lambda: f64,
t: f64,
x_samples: Mat<f64>,
f_samples: Mat<f64>,
) -> Result<Self, ProblemError>
pub fn new( lambda: f64, t: f64, x_samples: Mat<f64>, f_samples: Mat<f64>, ) -> Result<Self, ProblemError>
Creates a new problem instance from samples and parameters.
The features matrix $\Phi$ and kernel matrix $K$ are not computed at this stage.
§Arguments
lambda- Trace penalty parameter.t- Relative precision parameter.x_samples- Sample points matrix of shape (n, d).f_samples- Function values at the sample points of shape (n, 1).
Note: this function does not compute the kernel matrix $K$ or the features matrix $\Phi$.
To compute them, please call initialize_native_kernel and compute_phi respectively.
Sourcepub fn initialize_native_kernel(
&mut self,
kernel: Kernel,
) -> Result<(), ProblemError>
pub fn initialize_native_kernel( &mut self, kernel: Kernel, ) -> Result<(), ProblemError>
Initializes the kernel matrix $K$ using the specified native kernel.
This method computes the kernel matrix based on the provided kernel type and its parameters, and then derives the features matrix from the Cholesky decomposition of the kernel matrix.
§Arguments
kernel- The kernel type and its associated parameter (seeKernelenum).
§Errors
Returns ProblemError::KernelAlreadyInitialized if the kernel has already been initialized.
Returns a faer variant of ProblemError if there is an error during the Cholesky decomposition.
Sourcepub fn compute_phi(&mut self) -> Result<(), ProblemError>
pub fn compute_phi(&mut self) -> Result<(), ProblemError>
Computes the features matrix $\Phi$ from the kernel matrix $K$ using Cholesky decomposition.
This function must be called after initialize_native_kernel.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Problem
impl RefUnwindSafe for Problem
impl Send for Problem
impl Sync for Problem
impl Unpin for Problem
impl UnwindSafe for Problem
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,
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