irt-service/app/test/test_example.py
2022-04-19 18:41:31 +00:00

67 lines
1.7 KiB
Python

# content of example.py
from pulp import LpProblem, LpVariable, LpMinimize, LpStatus, lpSum
def func(x):
return x + 1
def test_pass():
assert func(4) == 5
def test_failure():
assert func(3) == 5
def yosh_loop():
Items = [1,2,3,4,5]
tif = {
1: 0.2,
2: 0.5,
3: 0.3,
4: 0.8,
5: 0.1
}
iif = {
1: 0.09,
2: 0.2,
3: 0.113,
4: 0.3,
5: 0.1
}
drift = 0.0
drift_limit = 0.2
iif_target = 0.5
tif_target = 0.9
item_vars = LpVariable.dicts("Item", Items, cat="Binary")
result = 'Infeasible'
while drift <= drift_limit:
prob = LpProblem("tif_tcc_test", LpMinimize)
prob += lpSum([(tif[i] + iif[i]) * item_vars[i] for i in Items]), "TifTccSum"
prob += lpSum([item_vars[i] for i in Items]) == 3, "TotalItems"
prob += lpSum([tif[i] * item_vars[i] for i in Items]) >= tif_target - (tif_target * drift), 'TifMin'
prob += lpSum([tif[i] * item_vars[i] for i in Items]) <= tif_target + (tif_target * drift), 'TifMax'
prob += lpSum([iif[i] * item_vars[i] for i in Items]) >= iif_target - (iif_target * drift), 'TccMin'
prob += lpSum([iif[i] * item_vars[i] for i in Items]) <= iif_target + (iif_target * drift), 'TccMax'
prob.solve()
if LpStatus[prob.status] == "Infeasible":
for v in prob.variables():
print(v.name, "=", v.varValue)
drift += 0.02
else:
for v in prob.variables():
print(v.name, "=", v.varValue)
result = LpStatus[prob.status]
break
return result
def test_solver():
print(yosh_loop())
assert yosh_loop() == 'Optimal'