From 24168f6bbb98ffd5e0f34de785d7a4db68ad0ce2 Mon Sep 17 00:00:00 2001 From: Joshua Burman Date: Wed, 9 Feb 2022 23:11:09 -0500 Subject: [PATCH] fix for non bundles runs as well as some typing --- app/helpers/solver_helper.py | 6 ++++-- app/services/loft_service.py | 10 +++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/helpers/solver_helper.py b/app/helpers/solver_helper.py index e1d0b7f..0b8e243 100644 --- a/app/helpers/solver_helper.py +++ b/app/helpers/solver_helper.py @@ -1,12 +1,14 @@ -from pulp import lpSum +from pulp import lpSum, LpProblem from random import randint, sample import logging from models.bundle import Bundle +from models.solver_run import SolverRun +from models.item import Item from lib.errors.item_generation_error import ItemGenerationError -def build_constraints(solver_run, problem, items, bundles): +def build_constraints(solver_run: SolverRun, problem: LpProblem, items: list[Item]) -> LpProblem: logging.info('Creating Constraints...') try: diff --git a/app/services/loft_service.py b/app/services/loft_service.py index cd0ba88..12c7ab8 100644 --- a/app/services/loft_service.py +++ b/app/services/loft_service.py @@ -25,7 +25,7 @@ class LoftService(Base): logging.error(error) self.result = self.stream_to_s3_bucket(ItemGenerationError("Provided params causing error in calculation results")) - def create_solver_run_from_attributes(self): + def create_solver_run_from_attributes(self) -> SolverRun: logging.info('Retrieving attributes from message...') # get s3 object self.key = aws_helper.get_key_from_message(self.source) @@ -52,7 +52,7 @@ class LoftService(Base): return solver_run - def generate_solution(self): + def generate_solution(self) -> Solution: logging.info('Generating Solution...') # unsolved solution @@ -70,8 +70,8 @@ class LoftService(Base): # setup vars items = LpVariable.dicts( "Item", [item.id for item in self.solver_run.items], lowBound=1, upBound=1, cat='Binary') - bundles = LpVariable.dicts( - "Bundle", [bundle.id for bundle in self.solver_run.bundles], lowBound=1, upBound=1, cat='Binary') + # bundles = LpVariable.dicts( + # "Bundle", [bundle.id for bundle in self.solver_run.bundles], lowBound=1, upBound=1, cat='Binary') problem_objection_functions = [] @@ -87,7 +87,7 @@ class LoftService(Base): for item in self.solver_run.items]) == self.solver_run.total_form_items, 'Total form items' # dynamic constraints - problem = solver_helper.build_constraints(self.solver_run, problem, items, bundles) + problem = solver_helper.build_constraints(self.solver_run, problem, items) # multi-objective constraints logging.info('Creating TIF and TCC constraints')