Source code for discrete_optimization.generic_tasks_tools.solvers.cpsat.objectives.resource_levels

#  Copyright (c) 2026 AIRBUS and its affiliates.
#  This source code is licensed under the MIT license found in the
#  LICENSE file in the root directory of this source tree.

from ortools.sat.python.cp_model import LinearExpr

from discrete_optimization.generic_tasks_tools.objectives.resource_levels import (
    CalendarRenewableResourceLevelObjectiveComputer,
    NonRenewableResourceLevelObjectiveComputer,
)
from discrete_optimization.generic_tasks_tools.solvers.cpsat.objectives.objective_modeler import (
    ObjectiveModelerCpSat,
)


[docs] class CalendarRenewableResourceLevelModelerCpSat(ObjectiveModelerCpSat): objective_computer: CalendarRenewableResourceLevelObjectiveComputer
[docs] def get_objective_expr(self) -> LinearExpr: if not self.objective_computer.has_any_weight(): return 0 else: self.solver._create_resource_level_variables() return sum( self.solver.resource_level_variables[res] * self.objective_computer.get_weight_resource(res) for res in self.objective_computer.weight_resource if self.objective_computer.get_weight_resource(res) > 0 )
[docs] class NonRenewableResourceLevelModelerCpSat(ObjectiveModelerCpSat): objective_computer: NonRenewableResourceLevelObjectiveComputer
[docs] def get_objective_expr(self) -> LinearExpr: if not self.objective_computer.has_any_weight(): return 0 else: self.solver._create_resource_level_variables() return sum( self.solver.resource_level_variables[res] * self.objective_computer.get_weight_resource(res) for res in self.objective_computer.weight_resource if self.objective_computer.get_weight_resource(res) > 0 )