consolidate constraint types into single type var
This commit is contained in:
parent
eef86369ab
commit
5b4387a04b
@ -60,7 +60,7 @@ class Problem(BaseModel):
|
|||||||
# get items from solution
|
# get items from solution
|
||||||
solved_items, _ = service_helper.solution_items(self.problem.variables(), solver_run)
|
solved_items, _ = service_helper.solution_items(self.problem.variables(), solver_run)
|
||||||
|
|
||||||
# sacred items will remain the same between solve attempts
|
# sacred items will remain the same (with new items added each run) between solve attempts
|
||||||
# but new enemies will be appended
|
# but new enemies will be appended
|
||||||
sacred_ids, new_enemy_ids = sanctify(solved_items)
|
sacred_ids, new_enemy_ids = sanctify(solved_items)
|
||||||
|
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING, List, Literal, Optional, Union, TypeVar
|
||||||
|
|
||||||
from pulp import lpSum
|
from pulp import lpSum
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
from typing import List, Literal, Optional, Union
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -22,11 +21,13 @@ if TYPE_CHECKING:
|
|||||||
from models.solution import Solution
|
from models.solution import Solution
|
||||||
from models.problem import Problem
|
from models.problem import Problem
|
||||||
|
|
||||||
|
ConstraintType = TypeVar('ConstraintType', bound=GenericConstraint)
|
||||||
|
|
||||||
class SolverRun(BaseModel):
|
class SolverRun(BaseModel):
|
||||||
items: List[Item] = []
|
items: List[Item] = []
|
||||||
bundles: List[Bundle] = []
|
bundles: List[Bundle] = []
|
||||||
bundle_first_ordering: bool = True
|
bundle_first_ordering: bool = True
|
||||||
constraints: List[Union[GenericConstraint, MetadataConstraint, BundleConstraint, FormUniquenessConstraint, TotalFormItemsConstraint]]
|
constraints: List[ConstraintType]
|
||||||
irt_model: IRTModel
|
irt_model: IRTModel
|
||||||
objective_function: ObjectiveFunction
|
objective_function: ObjectiveFunction
|
||||||
total_form_items: int
|
total_form_items: int
|
||||||
@ -42,7 +43,7 @@ class SolverRun(BaseModel):
|
|||||||
|
|
||||||
# this is all a compensator for dynamically creating objects
|
# this is all a compensator for dynamically creating objects
|
||||||
# ideally we'd change the payload to determine what type it is
|
# ideally we'd change the payload to determine what type it is
|
||||||
constraints: [GenericConstraint|MetadataConstraint|BundleConstraint|FormUniquenessConstraint|TotalFormItemsConstraint] = []
|
constraints: [ConstraintType] = []
|
||||||
|
|
||||||
# total form items
|
# total form items
|
||||||
constraints.append(TotalFormItemsConstraint.create(self.total_form_items))
|
constraints.append(TotalFormItemsConstraint.create(self.total_form_items))
|
||||||
@ -70,7 +71,7 @@ class SolverRun(BaseModel):
|
|||||||
if bundle.id == bundle_id:
|
if bundle.id == bundle_id:
|
||||||
return bundle
|
return bundle
|
||||||
|
|
||||||
def get_constraint_by_type(self, type: str) -> GenericConstraint|MetadataConstraint|BundleConstraint|FormUniquenessConstraint|TotalFormItemsConstraint or None:
|
def get_constraint_by_type(self, type: str) -> ConstraintType or None:
|
||||||
for constraint in self.constraints:
|
for constraint in self.constraints:
|
||||||
if type == constraint.reference_attribute.type:
|
if type == constraint.reference_attribute.type:
|
||||||
return constraint
|
return constraint
|
||||||
@ -131,7 +132,7 @@ class SolverRun(BaseModel):
|
|||||||
|
|
||||||
logging.info('Bundles Generated...')
|
logging.info('Bundles Generated...')
|
||||||
|
|
||||||
def get_constraint(self, name: str) -> GenericConstraint|MetadataConstraint|BundleConstraint|FormUniquenessConstraint|TotalFormItemsConstraint:
|
def get_constraint(self, name: str) -> ConstraintType:
|
||||||
return next((constraint for constraint in self.constraints
|
return next((constraint for constraint in self.constraints
|
||||||
if constraint.reference_attribute.id == name), None)
|
if constraint.reference_attribute.id == name), None)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user