Function cobyla::fmin_cobyla
source · pub fn fmin_cobyla<'a, F: ObjFn<U>, G: CstrFn, U>(
func: F,
x0: &'a mut [f64],
cons: &[G],
args: U,
rhobeg: f64,
rhoend: f64,
maxfun: i32,
iprint: i32
) -> (i32, &'a [f64])Expand description
Minimizes a function using the Constrained Optimization By Linear Approximation (COBYLA) method.
This interface is modeled after scypi.optimize.fmin_cobyla
Example
use cobyla::{fmin_cobyla, CstrFn};
fn paraboloid(x: &[f64], _data: &mut ()) -> f64 {
10. * (x[0] + 1.).powf(2.) + x[1].powf(2.)
}
let mut x = vec![1., 1.];
// Constraints definition to be positive eventually
let mut cons: Vec<&dyn CstrFn> = vec![];
cons.push(&|x: &[f64]| x[1] - x[0] * x[0]);
cons.push(&|x: &[f64]| 1. - x[0] * x[0] - x[1] * x[1]);
let (status, x_opt) = fmin_cobyla(paraboloid, &mut x, &cons, (), 0.5, 1e-4, 200, 0);
println!("status = {}", status);
println!("x = {:?}", x_opt);