tweak the metadata constraints to always consider bundles

This commit is contained in:
Adrian Manteza 2022-03-22 20:33:20 +00:00
parent aaa672c14c
commit 4acb9545d4

View File

@ -31,26 +31,24 @@ def build_constraints(solver_run: SolverRun, problem: LpProblem,
boolean_to_int(item.attribute_exists(attribute)) boolean_to_int(item.attribute_exists(attribute))
for item in solver_run.items for item in solver_run.items
])) ]))
problem += lpSum( problem += lpSum(
[ [
len(bundle.items_with_attribute(attribute)) * bundles[bundle.id] for bundle in solver_run.bundles len(bundle.items_with_attribute(attribute)) * bundles[bundle.id] for bundle in solver_run.bundles
] + ] +
[ [
con[item.id] * items[item.id] for item in solver_run.unbundled_items con[item.id] * items[item.id] for item in solver_run.unbundled_items()
] ]
) >= round( ) >= round(total_form_items * (min / 100)), f'{attribute.id} - {attribute.value} - min'
total_form_items *
(min / 100)), f'{attribute.id} - {attribute.value} - min' problem += lpSum(
# problem += lpSum([ [
# con[item.id] * items[item.id] for item in solver_run.items len(bundle.items_with_attribute(attribute)) * bundles[bundle.id] for bundle in solver_run.bundles
# ]) >= round( ] +
# total_form_items * [
# (min / 100)), f'{attribute.id} - {attribute.value} - min' con[item.id] * items[item.id] for item in solver_run.unbundled_items()
problem += lpSum([ ]
con[item.id] * items[item.id] for item in solver_run.items ) <= round(total_form_items * (min / 100)), f'{attribute.id} - {attribute.value} - max'
]) <= round(
total_form_items *
(max / 100)), f'{attribute.id} - {attribute.value} - max'
elif attribute.type == 'bundle': elif attribute.type == 'bundle':
logging.info('Bundles Constraint Generating...') logging.info('Bundles Constraint Generating...')
# TODO: account for many different bundle types, since the id condition in L33 could yield duplicates # TODO: account for many different bundle types, since the id condition in L33 could yield duplicates