pub struct OptimizationProblem<const DIM: usize, C: ConstraintState = Unconstrained, O: ObjectiveState = SingleObjective, V: ConvexityState = NonConvex, M: ManifoldState = Euclidean> { /* private fields */ }Expand description
Optimization problem with compile-time properties
This type encodes optimization problem characteristics at compile time, enabling the type system to enforce correct usage of optimization algorithms.
§Type Parameters
DIM- Problem dimension (number of parameters)C- Constraint state (Unconstrained or Constrained)O- Objective state (SingleObjective or MultiObjective)V- Convexity state (Convex or NonConvex)M- Manifold state (Euclidean, Riemannian, or Statistical)
§Examples
use amari_optimization::phantom::*;
// Unconstrained, single-objective, convex problem in Euclidean space
type ConvexProblem = OptimizationProblem<10, Unconstrained, SingleObjective, Convex, Euclidean>;
// Multi-objective problem on a statistical manifold
type MultiObjectiveStats = OptimizationProblem<5, Unconstrained, MultiObjective, NonConvex, Statistical>;Implementations§
Source§impl<const DIM: usize, C: ConstraintState, O: ObjectiveState, V: ConvexityState, M: ManifoldState> OptimizationProblem<DIM, C, O, V, M>
impl<const DIM: usize, C: ConstraintState, O: ObjectiveState, V: ConvexityState, M: ManifoldState> OptimizationProblem<DIM, C, O, V, M>
Source§impl<const DIM: usize, O: ObjectiveState, V: ConvexityState, M: ManifoldState> OptimizationProblem<DIM, Unconstrained, O, V, M>
impl<const DIM: usize, O: ObjectiveState, V: ConvexityState, M: ManifoldState> OptimizationProblem<DIM, Unconstrained, O, V, M>
Sourcepub fn with_constraints(self) -> OptimizationProblem<DIM, Constrained, O, V, M>
pub fn with_constraints(self) -> OptimizationProblem<DIM, Constrained, O, V, M>
Add constraints to an unconstrained problem
Source§impl<const DIM: usize, C: ConstraintState, V: ConvexityState, M: ManifoldState> OptimizationProblem<DIM, C, SingleObjective, V, M>
impl<const DIM: usize, C: ConstraintState, V: ConvexityState, M: ManifoldState> OptimizationProblem<DIM, C, SingleObjective, V, M>
Sourcepub fn with_multiple_objectives(
self,
) -> OptimizationProblem<DIM, C, MultiObjective, V, M>
pub fn with_multiple_objectives( self, ) -> OptimizationProblem<DIM, C, MultiObjective, V, M>
Convert to multi-objective problem
Source§impl<const DIM: usize, C: ConstraintState, O: ObjectiveState, M: ManifoldState> OptimizationProblem<DIM, C, O, NonConvex, M>
impl<const DIM: usize, C: ConstraintState, O: ObjectiveState, M: ManifoldState> OptimizationProblem<DIM, C, O, NonConvex, M>
Sourcepub fn assume_convex(self) -> OptimizationProblem<DIM, C, O, Convex, M>
pub fn assume_convex(self) -> OptimizationProblem<DIM, C, O, Convex, M>
Mark problem as convex (if verified)
Source§impl<const DIM: usize, C: ConstraintState, O: ObjectiveState, V: ConvexityState> OptimizationProblem<DIM, C, O, V, Euclidean>
impl<const DIM: usize, C: ConstraintState, O: ObjectiveState, V: ConvexityState> OptimizationProblem<DIM, C, O, V, Euclidean>
Sourcepub fn on_riemannian_manifold(
self,
) -> OptimizationProblem<DIM, C, O, V, Riemannian>
pub fn on_riemannian_manifold( self, ) -> OptimizationProblem<DIM, C, O, V, Riemannian>
Specify optimization on Riemannian manifold
Sourcepub fn on_statistical_manifold(
self,
) -> OptimizationProblem<DIM, C, O, V, Statistical>
pub fn on_statistical_manifold( self, ) -> OptimizationProblem<DIM, C, O, V, Statistical>
Specify optimization on statistical manifold
Trait Implementations§
Source§impl<const DIM: usize, C: Clone + ConstraintState, O: Clone + ObjectiveState, V: Clone + ConvexityState, M: Clone + ManifoldState> Clone for OptimizationProblem<DIM, C, O, V, M>
impl<const DIM: usize, C: Clone + ConstraintState, O: Clone + ObjectiveState, V: Clone + ConvexityState, M: Clone + ManifoldState> Clone for OptimizationProblem<DIM, C, O, V, M>
Source§fn clone(&self) -> OptimizationProblem<DIM, C, O, V, M>
fn clone(&self) -> OptimizationProblem<DIM, C, O, V, M>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<const DIM: usize, C: Debug + ConstraintState, O: Debug + ObjectiveState, V: Debug + ConvexityState, M: Debug + ManifoldState> Debug for OptimizationProblem<DIM, C, O, V, M>
impl<const DIM: usize, C: Debug + ConstraintState, O: Debug + ObjectiveState, V: Debug + ConvexityState, M: Debug + ManifoldState> Debug for OptimizationProblem<DIM, C, O, V, M>
Source§impl<const DIM: usize, C: ConstraintState, O: ObjectiveState, V: ConvexityState, M: ManifoldState> Default for OptimizationProblem<DIM, C, O, V, M>
impl<const DIM: usize, C: ConstraintState, O: ObjectiveState, V: ConvexityState, M: ManifoldState> Default for OptimizationProblem<DIM, C, O, V, M>
Auto Trait Implementations§
impl<const DIM: usize, C, O, V, M> Freeze for OptimizationProblem<DIM, C, O, V, M>
impl<const DIM: usize, C, O, V, M> RefUnwindSafe for OptimizationProblem<DIM, C, O, V, M>
impl<const DIM: usize, C, O, V, M> Send for OptimizationProblem<DIM, C, O, V, M>
impl<const DIM: usize, C, O, V, M> Sync for OptimizationProblem<DIM, C, O, V, M>
impl<const DIM: usize, C, O, V, M> Unpin for OptimizationProblem<DIM, C, O, V, M>
impl<const DIM: usize, C, O, V, M> UnwindSafe for OptimizationProblem<DIM, C, O, V, M>
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
Mutably borrows from an owned value. Read more