Problema con el número de subprocesos en Cplex

Sep 30 2020

Estoy resolviendo un montón de problemas similares y quiero compararlos. Para hacerlo, necesito que todo se ejecute en un hilo. Incluso estableciendo el número de subprocesos en 1, el modelo aún se ejecuta en 8 subprocesos. ¿Alguien ha encontrado este problema alguna vez? y hay alguna manera de solucionarlo? (Estoy usando Cplex con python)

Gracias,

Respuestas

1 OguzToragay Oct 01 2020 at 12:09

Intente usar el contexto como se explica aquí . Un ejemplo de modelado con docplex (que se muestra a continuación) indica que puede cambiar la configuración predeterminada para las opciones del solucionador en cplex usando el siguiente código:

context = Context.make_default_context()
context.cplex_parameters.threads = 1
model = Model(context=context

Alternativamente, el código puede ser el siguiente:

model = Model()
model.context.cplex_parameters.threads = 1

O si está utilizando Pyomo, se utilizará la siguiente opción de solucionador:

mysolver = SolverFactory('CPLEX')
mysolver.options['threads'] = 1
2 AlexFleischer Oct 01 2020 at 13:49

déjeme cambiar el ejemplo del zoológico según sus necesidades. (Número de hilos)

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)

lo que da

threads =  1
nbBus40  =  6.0
nbBus30  =  2.0