use pounce_common::Number;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum QpAlgorithm {
#[default]
ParametricActiveSet,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum AntiCyclingChoice {
#[default]
Expand,
Bland,
None,
}
#[derive(Debug, Clone)]
pub struct QpOptions {
pub algorithm: QpAlgorithm,
pub max_iter: u32,
pub feas_tol: Number,
pub opt_tol: Number,
pub max_schur_updates_before_refactor: u32,
pub anti_cycling: AntiCyclingChoice,
pub elastic_gamma: Number,
pub print_level: u8,
pub inertia_shift_initial: Number,
pub inertia_shift_factor: Number,
pub inertia_max_shifts: u32,
pub use_schur_updates: bool,
pub expand_tol_initial: Number,
pub expand_tol_growth: Number,
pub expand_tol_max: Number,
}
impl Default for QpOptions {
fn default() -> Self {
Self {
algorithm: QpAlgorithm::default(),
max_iter: 200,
feas_tol: 1e-9,
opt_tol: 1e-9,
max_schur_updates_before_refactor: 50,
anti_cycling: AntiCyclingChoice::default(),
elastic_gamma: 1e6,
print_level: 0,
inertia_shift_initial: 1e-8,
inertia_shift_factor: 100.0,
inertia_max_shifts: 12,
use_schur_updates: false,
expand_tol_initial: 1e-12,
expand_tol_growth: 1e-11,
expand_tol_max: 1e-7,
}
}
}