Problem z liczbą wątków w Cplex
Sep 30 2020
Rozwiązuję kilka podobnych problemów i chcę je porównać. Aby to zrobić, potrzebuję, aby wszystko działało na jednym wątku. Nawet po ustawieniu liczby wątków na 1 model nadal działa na 8 wątkach. Czy ktoś kiedykolwiek napotkał ten problem? i czy jest sposób, aby to naprawić? (Używam Cplex z Pythonem)
Dziękuję Ci,
Odpowiedzi
1 OguzToragay Oct 01 2020 at 12:09
Spróbuj użyć kontekstu, jak wyjaśniono tutaj . Przykład modelowania za pomocą docplex (pokazany poniżej) wskazuje, że można zmienić domyślne ustawienie opcji solvera w cplex, używając następującego kodu:
context = Context.make_default_context()
context.cplex_parameters.threads = 1
model = Model(context=context
Alternatywnie kod może wyglądać następująco:
model = Model()
model.context.cplex_parameters.threads = 1
Lub jeśli używasz Pyomo, zostanie użyta następująca opcja solvera:
mysolver = SolverFactory('CPLEX')
mysolver.options['threads'] = 1
2 AlexFleischer Oct 01 2020 at 13:49
pozwól, że zmienię przykład zoo na Twoje potrzeby. (Liczba wątków)
from docplex.mp.model import Model
mdl = Model(name='buses')
mdl.parameters.threads=1
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')
mdl.minimize(nbbus40*500 + nbbus30*400)
mdl.solve()
print("threads = ",mdl.parameters.threads.get())
for v in mdl.iter_integer_vars():
print(v," = ",v.solution_value)
co daje
threads = 1
nbBus40 = 6.0
nbBus30 = 2.0