diff --git a/planning/planners/src/encode.rs b/planning/planners/src/encode.rs index 0dea2b26..f3a4f581 100644 --- a/planning/planners/src/encode.rs +++ b/planning/planners/src/encode.rs @@ -456,8 +456,9 @@ pub fn add_metric(pb: &FiniteProblem, model: &mut Model, metric: Metric) -> IAto Metric::MaximizeVar(to_maximize) => { // we must return a variable to minimize. // return a new variable constrained to be the negation of the one to maximize + // to_maximize = -to_minimize let to_minimize = model.new_ivar(INT_CST_MIN, INT_CST_MAX, VarLabel(Container::Base, VarType::Cost)); - let sum = LinearSum::zero() + to_maximize - to_minimize; + let sum = LinearSum::zero() + to_maximize + to_minimize; model.enforce(sum.clone().leq(0), []); model.enforce(sum.geq(0), []); to_minimize.into() diff --git a/solver/src/model/lang/linear.rs b/solver/src/model/lang/linear.rs index 7f930bb6..61a30bf8 100644 --- a/solver/src/model/lang/linear.rs +++ b/solver/src/model/lang/linear.rs @@ -426,6 +426,12 @@ impl std::fmt::Display for LinearLeq { } } +impl std::fmt::Debug for LinearLeq { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{self}") + } +} + impl LinearLeq { pub fn new(sum: LinearSum, ub: IntCst) -> LinearLeq { LinearLeq { sum, ub }