diff --git a/app/services/loft_service.py b/app/services/loft_service.py index f932361..96d8d31 100644 --- a/app/services/loft_service.py +++ b/app/services/loft_service.py @@ -134,14 +134,13 @@ class LoftService(Base): upBound=1, cat='Binary') - # problem_objection_functions = [] - # create problem problem = LpProblem("ata-form-generate", LpMinimize) + problem_objective_functions = [] # dummy objective function, because it just makes things easierâ„¢ - problem += lpSum( - [items[item.id] for item in self.solver_run.items]) + # problem += lpSum( + # [items[item.id] for item in self.solver_run.items]) # constraints # problem += lpSum([items[item.id] @@ -164,47 +163,57 @@ class LoftService(Base): logging.info('Creating TIF and TCC constraints') for target in self.solver_run.objective_function.tif_targets: - # tif = lpSum([item.iif(self.solver_run, target.theta)*items[item.id] - # for item in self.solver_run.items]) - # problem_objection_functions.append(tif) - problem += lpSum([ + tif = lpSum([ bundle.tif(self.solver_run.irt_model, target.theta) * bundles[bundle.id] for bundle in self.solver_run.bundles ] + [ item.iif(self.solver_run, target.theta) * items[item.id] for item in self.solver_run.items - ]) >= target.value - 5, f'max tif theta ({target.theta}) target value {target.value}' - problem += lpSum([ - bundle.tif(self.solver_run.irt_model, target.theta) * - bundles[bundle.id] for bundle in self.solver_run.bundles - ] + [ - item.iif(self.solver_run, target.theta) * items[item.id] - for item in self.solver_run.items - ]) <= target.value + 5, f'min tif theta ({target.theta}) target value {target.value}' + ]) + problem_objective_functions.append(tif) + # problem += lpSum([ + # bundle.tif(self.solver_run.irt_model, target.theta) * + # bundles[bundle.id] for bundle in self.solver_run.bundles + # ] + [ + # item.iif(self.solver_run, target.theta) * items[item.id] + # for item in self.solver_run.items + # ]) >= target.value - 5, f'max tif theta ({target.theta}) target value {target.value}' + # problem += lpSum([ + # bundle.tif(self.solver_run.irt_model, target.theta) * + # bundles[bundle.id] for bundle in self.solver_run.bundles + # ] + [ + # item.iif(self.solver_run, target.theta) * items[item.id] + # for item in self.solver_run.items + # ]) <= target.value + 5, f'min tif theta ({target.theta}) target value {target.value}' for target in self.solver_run.objective_function.tcc_targets: - # tcc = lpSum([item.irf(self.solver_run, target.theta)*items[item.id] - # for item in self.solver_run.items]) - # problem_objection_functions.append(tcc) - problem += lpSum([ + tcc = lpSum([ bundle.trf(self.solver_run.irt_model, target.theta) * bundles[bundle.id] for bundle in self.solver_run.bundles ] + [ item.irf(self.solver_run, target.theta) * items[item.id] for item in self.solver_run.items - ]) >= target.value - 15, f'max tcc theta ({target.theta}) target value {target.value}' - problem += lpSum([ - bundle.trf(self.solver_run.irt_model, target.theta) * - bundles[bundle.id] for bundle in self.solver_run.bundles - ] + [ - item.irf(self.solver_run, target.theta) * items[item.id] - for item in self.solver_run.items - ]) <= target.value + 15, f'min tcc theta ({target.theta}) target value {target.value}' + ]) + problem_objective_functions.append(tcc) + # problem += lpSum([ + # bundle.trf(self.solver_run.irt_model, target.theta) * + # bundles[bundle.id] for bundle in self.solver_run.bundles + # ] + [ + # item.irf(self.solver_run, target.theta) * items[item.id] + # for item in self.solver_run.items + # ]) >= target.value - 15, f'max tcc theta ({target.theta}) target value {target.value}' + # problem += lpSum([ + # bundle.trf(self.solver_run.irt_model, target.theta) * + # bundles[bundle.id] for bundle in self.solver_run.bundles + # ] + [ + # item.irf(self.solver_run, target.theta) * items[item.id] + # for item in self.solver_run.items + # ]) <= target.value + 15, f'min tcc theta ({target.theta}) target value {target.value}' # solve problem logging.info('Solving...') - problem.solve() - # problem.sequentialSolve(problem_objection_functions) + # problem.solve() + problem.sequentialSolve(problem_objective_functions) logging.info('Solved...generating form and adding to solution') # add return items and create as a form