Problema com número de threads no Cplex
Estou resolvendo vários problemas semelhantes e quero compará-los. Para fazer isso, preciso que tudo seja executado em um segmento. Mesmo definindo o número de threads como 1, o modelo ainda funciona em 8 threads. Alguém já encontrou esse problema? e existe uma maneira de consertar isso? (Estou usando Cplex com python)
Obrigada,
Respostas
Tente usar o contexto conforme explicado aqui . Um exemplo de modelagem com docplex (mostrado abaixo) indica que você pode alterar a configuração padrão das opções do solver em cplex usando o seguinte código:
context = Context.make_default_context()
context.cplex_parameters.threads = 1
model = Model(context=context
Alternativamente, o código pode ser o seguinte:
model = Model()
model.context.cplex_parameters.threads = 1
Ou se você estiver usando o Pyomo, a seguinte opção de solucionador será usada:
mysolver = SolverFactory('CPLEX')
mysolver.options['threads'] = 1
deixe-me mudar o exemplo do zoológico de acordo com sua necessidade. (Número de processos)
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)
que dá
threads = 1
nbBus40 = 6.0
nbBus30 = 2.0