fixes for clarity
This commit is contained in:
parent
da17748103
commit
19f6f35856
@ -9,10 +9,9 @@ def build_constraints(solver_run, problem, items):
|
|||||||
min = constraint.minimum
|
min = constraint.minimum
|
||||||
max = constraint.maximum
|
max = constraint.maximum
|
||||||
|
|
||||||
con = dict(zip([item.id for item in solver_run.items],
|
con = dict(zip([item.id for item in solver_run.items],
|
||||||
[item.attribute_exists(attribute)
|
[item.attribute_exists(attribute)
|
||||||
for item in solver_run.items]))
|
for item in solver_run.items]))
|
||||||
# print([con[item.id] * items[item.id] for item in solver_items])
|
|
||||||
problem += lpSum([con[item.id]
|
problem += lpSum([con[item.id]
|
||||||
* items[item.id]
|
* items[item.id]
|
||||||
for item in solver_run.items]) >= round(total_form_items * (min / 100)), f'{attribute.id} - {attribute.value} - min'
|
for item in solver_run.items]) >= round(total_form_items * (min / 100)), f'{attribute.id} - {attribute.value} - min'
|
||||||
@ -20,4 +19,4 @@ def build_constraints(solver_run, problem, items):
|
|||||||
* items[item.id]
|
* items[item.id]
|
||||||
for item in solver_run.items]) <= round(total_form_items * (max / 100)), f'{attribute.id} - {attribute.value} - max'
|
for item in solver_run.items]) <= round(total_form_items * (max / 100)), f'{attribute.id} - {attribute.value} - max'
|
||||||
|
|
||||||
return problem
|
return problem
|
||||||
|
@ -4,6 +4,9 @@ class ItemInformationFunction():
|
|||||||
def __init__(self, irt_model):
|
def __init__(self, irt_model):
|
||||||
self.model_data = irt_model
|
self.model_data = irt_model
|
||||||
|
|
||||||
|
# determines the amount of information for a given question at a given theta (ability level)
|
||||||
|
# further detailed on page 161, equation 4 here:
|
||||||
|
# https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5978482/pdf/10.1177_0146621615613308.pdf
|
||||||
def calculate(self, **kwargs):
|
def calculate(self, **kwargs):
|
||||||
if self.model_data.model == '3PL':
|
if self.model_data.model == '3PL':
|
||||||
p = ThreeParameterLogistic(self.model_data, kwargs).result()
|
p = ThreeParameterLogistic(self.model_data, kwargs).result()
|
||||||
|
@ -6,6 +6,10 @@ class ThreeParameterLogistic:
|
|||||||
self.e = 2.71828
|
self.e = 2.71828
|
||||||
self.theta = kwargs['theta']
|
self.theta = kwargs['theta']
|
||||||
|
|
||||||
|
# contains the primary 3pl function, determining the probably of an inidividual
|
||||||
|
# that an individual at a certain theta would get a particular question correct
|
||||||
|
# detailed further on page 161, equation 1 here:
|
||||||
|
# https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5978482/pdf/10.1177_0146621615613308.pdf
|
||||||
def result(self):
|
def result(self):
|
||||||
a = self.model_params.a_param
|
a = self.model_params.a_param
|
||||||
c = self.model_params.c_param
|
c = self.model_params.c_param
|
||||||
|
@ -5,6 +5,10 @@ class TestInformationFunction():
|
|||||||
self.irt_model = irt_model
|
self.irt_model = irt_model
|
||||||
self.iif = ItemInformationFunction(irt_model)
|
self.iif = ItemInformationFunction(irt_model)
|
||||||
|
|
||||||
|
# determins the amount of information
|
||||||
|
# at a certain theta (ability level) of the sum of a question set correct
|
||||||
|
# detailed further on page 166, equation 4 here:
|
||||||
|
# https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5978482/pdf/10.1177_0146621615613308.pdf
|
||||||
def calculate(self, items, **kwargs):
|
def calculate(self, items, **kwargs):
|
||||||
sum = 0
|
sum = 0
|
||||||
|
|
||||||
|
@ -6,6 +6,10 @@ class TestResponseFunction():
|
|||||||
self.irt_model = irt_model
|
self.irt_model = irt_model
|
||||||
self.irf = ItemResponseFunction(irt_model)
|
self.irf = ItemResponseFunction(irt_model)
|
||||||
|
|
||||||
|
# determins the probably of an inidividual
|
||||||
|
# at a certain theta (ability level) would get a sum of questions correct
|
||||||
|
# detailed further on page 166, equation 3 here:
|
||||||
|
# https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5978482/pdf/10.1177_0146621615613308.pdf
|
||||||
def calculate(self, items, **kwargs):
|
def calculate(self, items, **kwargs):
|
||||||
sum = 0
|
sum = 0
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import os, json, random, io, logging
|
import os, json, random, io, logging
|
||||||
|
|
||||||
from pulp import *
|
from pulp import LpProblem, LpVariable, LpMinimize, LpStatus, lpSum
|
||||||
|
|
||||||
from helpers import aws_helper, tar_helper, csv_helper, service_helper, solver_helper
|
from helpers import aws_helper, tar_helper, csv_helper, service_helper, solver_helper
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user