from __future__ import annotations from typing import TYPE_CHECKING from models.target import * if TYPE_CHECKING: from models.problem import Problem class TccTarget(Target): def build_constraint(self, problem_handler: Problem, solver_run: SolverRun): problem_handler.problem += lpSum([ bundle.trf(solver_run.irt_model, self.theta) * problem_handler.solver_bundles_var[bundle.id] for bundle in problem_handler.bundles ] + [ item.irf(solver_run.irt_model, self.theta) * problem_handler.solver_items_var[item.id] for item in problem_handler.items ]) >= self.minimum( ), f'Min TCC theta({self.theta}) at target {self.value} with a drift % of {self.drift}' problem_handler.problem += lpSum([ bundle.trf(solver_run.irt_model, self.theta) * problem_handler.solver_bundles_var[bundle.id] for bundle in problem_handler.bundles ] + [ item.irf(solver_run.irt_model, self.theta) * problem_handler.solver_items_var[item.id] for item in problem_handler.items ]) <= self.maximum( ), f'Max TCC theta({self.theta}) at target {self.value} with a drift % of {self.drift}'