pub fn project_box(
x: &Vector<f32>,
lower: &Vector<f32>,
upper: &Vector<f32>,
) -> Vector<f32>Expand description
Projects onto box constraints: lower ≤ x ≤ upper.
§Arguments
x- Input vectorlower- Lower boundsupper- Upper bounds
§Returns
Vector with components clipped to [lower, upper]
§Example
use aprender::optim::prox::project_box;
use aprender::primitives::Vector;
let x = Vector::from_slice(&[-1.0, 0.5, 2.0]);
let lower = Vector::from_slice(&[0.0, 0.0, 0.0]);
let upper = Vector::from_slice(&[1.0, 1.0, 1.0]);
let result = project_box(&x, &lower, &upper);
assert_eq!(result[0], 0.0); // Clipped to lower
assert_eq!(result[1], 0.5); // Within bounds
assert_eq!(result[2], 1.0); // Clipped to upper