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

@ -1,13 +1,15 @@
from pydantic import BaseModel
from typing import List
from typing import List, TypeVar, Type
from helpers import irt_helper
from models.solver_run import SolverRun
from models.item import Item
from models.target import Target
from lib.irt.test_response_function import TestResponseFunction
_T = TypeVar("_T")
class Form(BaseModel):
items: List[Item]
@ -15,13 +17,15 @@ class Form(BaseModel):
tif_results: List[Target]
tcc_results: List[Target]
status: str = 'Not Optimized'
solver_variables: List[str]
@classmethod
def create(cls, items, solver_run, status):
def create(cls: Type[_T], items: list, solver_run: SolverRun, status: str, solver_variables: list) -> _T:
return cls(
items=items,
cut_score=TestResponseFunction(solver_run.irt_model).calculate(
items, theta=solver_run.theta_cut_score),
tif_results=irt_helper.generate_tif_results(items, solver_run),
tcc_results=irt_helper.generate_tcc_results(items, solver_run),
status=status)
status=status,
solver_variables=solver_variables)

View File

@ -10,6 +10,7 @@ class ObjectiveFunction(BaseModel):
# likely with models representing each objective function type
tif_targets: List[Target]
tcc_targets: List[Target]
target_variance_percentage: int = 10
objective: AnyStr = "minimize"
weight: Dict = {'tif': 1, 'tcc': 1}