use crate::{constraints, Error};
pub struct Problem<GradientType, ConstraintType, CostType>
where
GradientType: Fn(&[f64], &mut [f64]) -> Result<(), Error>,
CostType: Fn(&[f64], &mut f64) -> Result<(), Error>,
ConstraintType: constraints::Constraint,
{
pub(crate) constraints: ConstraintType,
pub(crate) gradf: GradientType,
pub(crate) cost: CostType,
}
impl<GradientType, ConstraintType, CostType> Problem<GradientType, ConstraintType, CostType>
where
GradientType: Fn(&[f64], &mut [f64]) -> Result<(), Error>,
CostType: Fn(&[f64], &mut f64) -> Result<(), Error>,
ConstraintType: constraints::Constraint,
{
pub fn new(
constraints: ConstraintType,
cost_gradient: GradientType,
cost: CostType,
) -> Problem<GradientType, ConstraintType, CostType> {
Problem {
constraints,
gradf: cost_gradient,
cost,
}
}
}