typos, factoring out functionality

This commit is contained in:
Joshua Burman 2023-11-13 19:08:01 -05:00
parent 8667bec8d5
commit 4e8c8416b6
2 changed files with 29 additions and 19 deletions

View File

@ -0,0 +1,23 @@
from typing import Tuple
from models.item import Item
def sanctify(solved_items: [Item]) -> Tuple[list]:
sacred_ids = []
enemy_ids = []
# get all enemies
for item in solved_items:
# if it has enemies, check if it exists as part of the solved items
for enemy_id in item.enemies:
# if it does, it's a true enemy
if enemy_id in (item.id for item in solved_items):
enemy_ids.append(enemy_id)
# remove enemy from solved items,
# lest it has this sacred item added to enemies
solved_items = [i for i in solved_items if i.id != enemy_id]
# the item is cleansed, now it's sacred
sacred_ids.append(item.id)
return sacred_ids, enemy_ids

View File

@ -7,7 +7,9 @@ from pulp import LpProblem, LpVariable, LpStatus, lpSum
import logging
from helpers import service_helper, irt_helper
from helpers.problem_helper import *
from helpers import service_helper
from models.solution import Solution
from models.item import Item
@ -59,29 +61,14 @@ class Problem(BaseModel):
# get items from solution
solved_items, _ = service_helper.solution_items(self.problem.variables(), solver_run)
sacred_ids = []
enemy_ids = []
# get all enemies
for item in solved_items:
# if it has enemies, check if it exists as part of the solved items
for enemy_id in item.enemies:
# if it does, it's a true enemy
if enemy_id in (item.id for item in solved_items):
enemy_ids.append(enemy_id)
# remove enemy from solved items,
# lest it has this sacred item added to enemies
solved_items = [i for i in solved_items if i.id != enemy_id]
# the item is cleansed, now it's sacred
sacred_ids.append(item.id)
sacred_ids, enemy_ids = sanctify(solved_items)
if enemy_ids:
logging.info('enemies found, adding constraints...')
# remove old enemy/sacred constraints
self.problem.constrants.pop('Exclude_enemy_items')
self.problem.constrants.pop('Include_sacred_items')
self.problem.constraints.pop('Exclude_enemy_items')
self.problem.constraints.pop('Include_sacred_items')
# add constraint to not allow enemy items
self.problem += lpSum([