from random import randint from models.constraints.generic_constraint import * class BundleConstraint(GenericConstraint): def build(self, problem_handler: Problem, **kwargs) -> None: logging.info('Bundles Constraint Generating...') # TODO: account for many different bundle types, since the id condition in L33 could yield duplicates if problem_handler.bundles != None and len(problem_handler.bundles) > 0: # make sure the total bundles used in generated form is limited between min-max set problem_handler.problem += lpSum([ problem_handler.solver_bundles_var[bundle.id] for bundle in problem_handler.bundles ]) == randint(int(self.minimum), int(self.maximum)), f'Allowing min - max bundles'