use pounce_common::Number;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum SqpGlobalization {
#[default]
Filter,
L1Elastic,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum SqpHessianSource {
#[default]
Exact,
DampedBfgs,
Lbfgs,
}
#[derive(Debug, Clone)]
pub struct SqpOptions {
pub globalization: SqpGlobalization,
pub hessian: SqpHessianSource,
pub tol: Number,
pub constr_viol_tol: Number,
pub dual_inf_tol: Number,
pub max_iter: u32,
pub l1_penalty: Number,
pub l1_penalty_safety: Number,
pub l1_penalty_max: Number,
pub bt_reduction: Number,
pub bt_min_alpha: Number,
pub print_level: u8,
pub lbfgs_max_history: u32,
}
impl Default for SqpOptions {
fn default() -> Self {
Self {
globalization: SqpGlobalization::default(),
hessian: SqpHessianSource::default(),
tol: 1e-8,
constr_viol_tol: 1e-6,
dual_inf_tol: 1e-4,
max_iter: 200,
l1_penalty: 1.0,
l1_penalty_safety: 0.1,
l1_penalty_max: 1e10,
bt_reduction: 0.5,
bt_min_alpha: 1e-12,
print_level: 0,
lbfgs_max_history: 6,
}
}
}