simplify this to the core level so we can easily reference it
This commit is contained in:
parent
d6e1cb37ce
commit
d8b4675f44
@ -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}!")
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user