sequential solve

This commit is contained in:
Joshua Burman 2022-02-10 00:40:43 -05:00
parent 7e59899495
commit 9986678733

View File

@ -79,8 +79,8 @@ class LoftService(Base):
problem = LpProblem("ata-form-generate", LpMinimize)
# 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]
@ -92,20 +92,27 @@ class LoftService(Base):
# multi-objective constraints
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([item.iif(self.solver_run, target.theta)*items[item.id]
for item in self.solver_run.items]) >= target.value - target.value * 0.2, 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 + target.value * 0.2, f'min tif theta ({target.theta}) target value {target.value}'
for item in self.solver_run.items]) >= target.value - target.value * 0.4, 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 + target.value * 0.2, 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([item.irf(self.solver_run, target.theta)*items[item.id]
for item in self.solver_run.items]) >= target.value - target.value * 0.2, 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 + target.value * 0.2, f'min 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 + target.value * 0.2, f'min tcc theta ({target.theta}) target value {target.value}'
# solve problem
logging.info('Solving...')
problem.solve()
# problem.solve()
problem.sequentialSolve(problem_objection_functions)
logging.info('Solved...generating form and adding to solution')
# add return items and create as a form