use resopt::{ConstrainedResidualProblem, LinearResidual, Loss, Matrix};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let residual = LinearResidual::new(
Matrix::from_row_major(3, 2, vec![1.0, 0.0, 0.0, 1.0, 1.0, 1.0])?,
vec![1.0, 2.0, 2.5],
)?;
let problem = ConstrainedResidualProblem::new(residual, Loss::L2Squared)?;
let result = problem.solve()?;
println!("=== basic_l2 ===");
println!("status : {:?}", result.status());
println!("objective : {:?}", result.objective_value());
println!("diagnostics : {:?}", result.diagnostics());
if let Some(solution) = result.solution() {
println!("x : {:?}", solution.x());
println!("residual : {:?}", solution.residual());
} else {
println!("no solution returned");
}
Ok(())
}