target variance for each solver run. authored by Yosh

This commit is contained in:
Adrian Manteza
2022-03-25 17:20:14 +00:00
parent 6ebe33a76b
commit 1f00e1e1bc
6 changed files with 46 additions and 19 deletions

View File

@ -105,6 +105,15 @@ class LoftService(Base):
# Dynamic constraints.. currently we only support Metadata and Bundles(Cases/Passages)
problem = solver_helper.build_constraints(self.solver_run, problem, items, bundles)
# form uniqueness constraints
for form in solution.forms:
form_item_options = [
bundles[bundle.id] for bundle in self.solver_run.bundles
] + [
items[item.id] for item in self.solver_run.unbundled_items()
]
problem += len(set(form.solver_variables)&set(form_item_options)) / float(len(set(form.solver_variables) | set(form_item_options))) * 100 >= 10
logging.info('Creating TIF and TCC Elastic constraints')
# Behold our very own Elastic constraints!
@ -181,10 +190,10 @@ class LoftService(Base):
return solution
def add_form_to_solution(self, problem, solution):
def add_form_to_solution(self, problem: LpProblem, solution: Solution):
# add return items and create as a form
form_items = service_helper.solution_items(problem.variables(), self.solver_run)
form = Form.create(form_items, self.solver_run, LpStatus[problem.status])
form_items, solver_variables = service_helper.solution_items(problem.variables(), self.solver_run)
form = Form.create(form_items, self.solver_run, LpStatus[problem.status], solver_variables)
solution.forms.append(form)