Expand description
Constrained optimization algorithms
This module provides methods for constrained optimization of scalar functions of one or more variables.
§Example
use scirs2_core::ndarray::{array, Array1};
use scirs2_optimize::constrained::{minimize_constrained, Method, Constraint};
// Define a simple function to minimize: f(x) = (x[0] - 1)² + (x[1] - 2.5)²
// Unconstrained minimum is at (1.0, 2.5), but we add a constraint.
fn objective(x: &[f64]) -> f64 {
(x[0] - 1.0).powi(2) + (x[1] - 2.5).powi(2)
}
// Define a constraint: x[0] + x[1] <= 3
// Written as g(x) >= 0, so: g(x) = 3 - x[0] - x[1]
fn constraint(x: &[f64]) -> f64 {
3.0 - x[0] - x[1] // Should be >= 0
}
// Minimize the function starting at [1.0, 1.0]
// Note: Initial point should be feasible (satisfy constraints) for best convergence
let initial_point = array![1.0, 1.0];
let constraints = vec![Constraint::new(constraint, Constraint::INEQUALITY)];
let result = minimize_constrained(
objective,
&initial_point,
&constraints,
Method::SLSQP,
None
)?;
// The constrained minimum is at [0.75, 2.25] with f(x) = 0.125
// This is where the gradient of f is parallel to the constraint boundary,
// solved via Lagrange multipliers on x[0] + x[1] = 3.Note: This function requires LAPACK libraries to be linked for certain optimization methods.
Re-exports§
pub use augmented_lagrangian::minimize_augmented_lagrangian;pub use augmented_lagrangian::minimize_equality_constrained;pub use augmented_lagrangian::minimize_inequality_constrained;pub use augmented_lagrangian::AugmentedLagrangianOptions;pub use augmented_lagrangian::AugmentedLagrangianResult;pub use cobyla::minimize_cobyla;pub use interior_point::minimize_interior_point;pub use interior_point::minimize_interior_point_constrained;pub use interior_point::InteriorPointOptions;pub use interior_point::InteriorPointResult;pub use slsqp::minimize_slsqp;pub use trust_constr::minimize_trust_constr;pub use trust_constr::minimize_trust_constr_with_derivatives;pub use trust_constr::GradientFn;pub use trust_constr::HessianFn;pub use trust_constr::HessianUpdate;
Modules§
- augmented_
lagrangian - Augmented Lagrangian methods for constrained optimization
- cobyla
- COBYLA (Constrained Optimization BY Linear Approximations) algorithm
- interior_
point - Interior point methods for constrained optimization
- slsqp
- SLSQP (Sequential Least SQuares Programming) algorithm for constrained optimization
- trust_
constr - Trust-region algorithm for constrained optimization
Structs§
- Constraint
- Constraint type for constrained optimization
- Options
- Options for the constrained optimizer.
Enums§
- Constraint
Kind - The kind of constraint
- Method
- Optimization methods for constrained minimization.
Functions§
- minimize_
constrained - Minimizes a scalar function of one or more variables with constraints.
Type Aliases§
- Constraint
Fn - Type alias for constraint functions that take a slice of f64 and return f64