diff --git a/app/helpers/service_helper.py b/app/helpers/service_helper.py index e821a7d..14b2144 100644 --- a/app/helpers/service_helper.py +++ b/app/helpers/service_helper.py @@ -23,7 +23,11 @@ def items_csv_to_dict(items_csv_reader, solver_run): item[solver_run.get_constraint(col).reference_attribute.id] = row[key] elif solver_run.get_constraint(col): constraint = solver_run.get_constraint(col) - item['attributes'].append(constraint.reference_attribute) + item['attributes'].append({ + 'id': col, + 'value': row[key], + 'type': constraint.reference_attribute.type + }) else: if row[key]: item[col] = row[key] diff --git a/app/services/loft_service.py b/app/services/loft_service.py index 02e1890..27ea599 100644 --- a/app/services/loft_service.py +++ b/app/services/loft_service.py @@ -87,15 +87,15 @@ class LoftService(Base): # multi-objective constraints for target in self.solver_run.objective_function.tif_targets: problem += lpSum([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}' + for item in self.solver_run.items]) >= target.value - 8, f'max tif theta ({target.theta}) target value {target.value}' problem += lpSum([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 item in self.solver_run.items]) <= target.value + 8, f'min tif theta ({target.theta}) target value {target.value}' for target in self.solver_run.objective_function.tcc_targets: problem += lpSum([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}' + for item in self.solver_run.items]) >= target.value - 20, f'max tcc theta ({target.theta}) target value {target.value}' problem += lpSum([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}' + for item in self.solver_run.items]) <= target.value + 20, f'min tcc theta ({target.theta}) target value {target.value}' # solve problem problem.solve()