Merge pull request #21 from yardstick/feature/QUANT-1308-tif-discrepancy
QUANT-1308: TIF Discrepancy
This commit is contained in:
commit
4c30b50c36
@ -13,20 +13,22 @@ def items_csv_to_dict(items_csv_reader, irt_model):
|
|||||||
else:
|
else:
|
||||||
item = { 'attributes': [] }
|
item = { 'attributes': [] }
|
||||||
|
|
||||||
for key, col in enumerate(headers):
|
# ensure that the b param is formatted correctly
|
||||||
if key == 0:
|
if len(re.findall(".", row[len(headers) - 1])) >= 3:
|
||||||
item[col] = row[key]
|
for key, col in enumerate(headers):
|
||||||
# b param - tmep fix! use irt model b param for proper reference
|
if key == 0:
|
||||||
elif key == (1 - len(headers)):
|
item[col] = row[key]
|
||||||
item['b_param'] = row[key]
|
# b param - tmep fix! use irt model b param for proper reference
|
||||||
elif key > 1:
|
elif key == len(headers) - 1:
|
||||||
item['attributes'].append({
|
item['b_param'] = row[key]
|
||||||
'id': col,
|
elif key > 1:
|
||||||
'value': row[key],
|
item['attributes'].append({
|
||||||
'type': 'metadata'
|
'id': col,
|
||||||
})
|
'value': row[key],
|
||||||
|
'type': 'metadata'
|
||||||
|
})
|
||||||
|
|
||||||
items.append(item)
|
items.append(item)
|
||||||
|
|
||||||
return items
|
return items
|
||||||
|
|
||||||
|
@ -19,9 +19,9 @@ class ServiceListener(SqsListener):
|
|||||||
logging.info('Process complete for %s', service.file_name)
|
logging.info('Process complete for %s', service.file_name)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
logging.info('Starting Solver Service (v1.0.1)...')
|
logging.info('Starting Solver Service (v1.0.9)...')
|
||||||
listener = ServiceListener(
|
listener = ServiceListener(
|
||||||
'measure-development-solver-ingest',
|
os.environ['SQS_QUEUE'],
|
||||||
region_name=os.environ['AWS_REGION'],
|
region_name=os.environ['AWS_REGION'],
|
||||||
aws_access_key=os.environ['AWS_ACCESS_KEY_ID'],
|
aws_access_key=os.environ['AWS_ACCESS_KEY_ID'],
|
||||||
aws_secret_key=os.environ['AWS_SECRET_ACCESS_KEY'],
|
aws_secret_key=os.environ['AWS_SECRET_ACCESS_KEY'],
|
||||||
|
@ -63,6 +63,10 @@ class LoftService(Base):
|
|||||||
# create problem
|
# create problem
|
||||||
problem = LpProblem("ata-form-generate", LpMinimize)
|
problem = LpProblem("ata-form-generate", LpMinimize)
|
||||||
|
|
||||||
|
# dummy objective function, because it just makes things easier™
|
||||||
|
problem += lpSum([items[item.id]
|
||||||
|
for item in self.solver_run.items])
|
||||||
|
|
||||||
# constraints
|
# constraints
|
||||||
problem += lpSum([items[item.id]
|
problem += lpSum([items[item.id]
|
||||||
for item in self.solver_run.items]) == self.solver_run.total_form_items, 'Total form items'
|
for item in self.solver_run.items]) == self.solver_run.total_form_items, 'Total form items'
|
||||||
@ -72,21 +76,15 @@ class LoftService(Base):
|
|||||||
|
|
||||||
# multi-objective functions and constraints
|
# multi-objective functions and constraints
|
||||||
for target in self.solver_run.objective_function.tif_targets:
|
for target in self.solver_run.objective_function.tif_targets:
|
||||||
tif = lpSum([item.iif(self.solver_run, target.theta)*items[item.id]
|
|
||||||
for item in self.solver_run.items])
|
|
||||||
problem += lpSum([item.iif(self.solver_run, target.theta)*items[item.id]
|
problem += lpSum([item.iif(self.solver_run, target.theta)*items[item.id]
|
||||||
for item in self.solver_run.items]) <= target.value, f'min tif theta ({target.theta}) target value {target.value}'
|
for item in self.solver_run.items]) <= target.value, f'min tif theta ({target.theta}) target value {target.value}'
|
||||||
problem_objection_functions.append(tif)
|
|
||||||
|
|
||||||
for target in self.solver_run.objective_function.tcc_targets:
|
for target in self.solver_run.objective_function.tcc_targets:
|
||||||
tcc = lpSum([item.irf(self.solver_run, target.theta)*items[item.id]
|
|
||||||
for item in self.solver_run.items])
|
|
||||||
problem += lpSum([item.irf(self.solver_run, target.theta)*items[item.id]
|
problem += lpSum([item.irf(self.solver_run, target.theta)*items[item.id]
|
||||||
for item in self.solver_run.items]) <= target.value, f'min tcc theta ({target.theta}) target value {target.value}'
|
for item in self.solver_run.items]) <= target.value, f'min tcc theta ({target.theta}) target value {target.value}'
|
||||||
problem_objection_functions.append(tcc)
|
|
||||||
|
|
||||||
# solve problem
|
# solve problem
|
||||||
problem.sequentialSolve(problem_objection_functions)
|
problem.solve()
|
||||||
|
|
||||||
# add return items and create as a form
|
# add return items and create as a form
|
||||||
form_items = service_helper.solution_items(problem.variables(), self.solver_run)
|
form_items = service_helper.solution_items(problem.variables(), self.solver_run)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user