diff --git a/app/services/solver_sandbox.py b/app/services/solver_sandbox.py index 9d98e4a..d7852d5 100644 --- a/app/services/solver_sandbox.py +++ b/app/services/solver_sandbox.py @@ -61,9 +61,8 @@ class SolverSandbox: print(v.name, "=", v.varValue) break - def yas_elastic(tif_targets = [50.0], tcc_targets = [50.0]): - Bundles = [1,2,3,4,5] - Items = [1,2,3,4,5] + def yas_elastic(tif_target = 50.0): + Items = [1,2,3,4,5] # For TIF target tif = { @@ -83,28 +82,9 @@ class SolverSandbox: } # --- - # For TCC target - trf = { - 1: 100, - 2: 200, - 3: 400, - 4: 600, - 5: 800 - } - - irf = { - 1: 100, - 2: 200, - 3: 300, - 4: 500, - 5: 700 - } - # --- - total_forms = 2 - items = LpVariable.dicts('Item', Items, cat='Binary') - bundles = LpVariable.dicts('Bundle', Bundles, cat='Binary') + items = LpVariable.dicts('Item', Items, cat='Binary') for form in range(total_forms): drift = 0 @@ -115,68 +95,20 @@ class SolverSandbox: problem = LpProblem('TIF_TCC', LpMinimize) # objective function - problem += lpSum( - [ - (iif[i] + irf[i]) * items[i] for i in Items - ] + - [ - (tif[b] + trf[b]) * bundles[b] for b in Bundles - ] - ), 'TIF_TCC_Sum' + problem += lpSum([(tif[i] + iif[i]) * items[i] for i in Items]) # Constraint 1 + problem += lpSum([items[i] for i in Items]) == 3, 'TotalItems' + + print(f"Calculating TIF target of {tif_target} with drift of {drift} for Form {form + 1}") + + # Our own "Elastic Constraints" problem += lpSum( - [ - items[i] for i in Items - ] + - [ - bundles[b] for b in Bundles - ] - ) == 3, 'TotalItems' - - for tif_target in tif_targets: - print(f"Calculating TIF target of {tif_target} with drift of {drift} for Form {form + 1}") - - # Our own "Elastic Constraints" - problem += lpSum( - [ - tif[b] * bundles[b] for b in Bundles - ] + - [ - iif[i] * items[i] for i in Items - ] - ) >= tif_target - (tif_target * drift_percent), 'TifIifMin' - - problem += lpSum( - [ - tif[b] * bundles[b] for b in Bundles - ] + - [ - iif[i] * items[i] for i in Items - ] - ) <= tif_target + (tif_target * drift_percent), 'TifIifMax' - - for tcc_target in tcc_targets: - print(f"Calculating TCC target of {tcc_target} with drift of {drift} for Form {form + 1}") - - # Our own "Elastic Constraints" - problem += lpSum( - [ - trf[b] * bundles[b] for b in Bundles - ] + - [ - irf[i] * items[i] for i in Items - ] - ) >= tcc_target - (tcc_target * drift_percent), 'TrfIrffMin' - - problem += lpSum( - [ - trf[b] * bundles[b] for b in Bundles - ] + - [ - irf[i] * items[i] for i in Items - ] - ) <= tcc_target + (tcc_target * drift_percent), 'TrfIrfMax' + [(tif[i] + iif[i]) * items[i] for i in Items] + ) >= tif_target - (tif_target * drift_percent), 'TifIifMin' + problem += lpSum( + [(tif[i] + iif[i]) * items[i] for i in Items] + ) <= tif_target + (tif_target * drift_percent), 'TifIifMax' problem.solve() @@ -191,8 +123,6 @@ class SolverSandbox: drift += 1 - # breakpoint() if drift == 10: - else: print(f"solution found with drift of {drift}!")