Cplex의 스레드 수 문제

Sep 30 2020

나는 많은 유사한 문제를 해결하고 있으며 그것들을 비교하고 싶습니다. 이렇게하려면 하나의 스레드에서 실행되는 모든 것이 필요합니다. 스레드 수를 1로 설정해도 모델은 여전히 ​​8 개의 스레드에서 실행됩니다. 이 문제에 직면 한 사람이 있습니까? 그것을 고칠 방법이 있습니까? (나는 파이썬과 함께 Cplex를 사용하고 있습니다)

감사합니다,

답변

1 OguzToragay Oct 01 2020 at 12:09

여기에 설명 된대로 컨텍스트를 사용해보십시오 . docplex를 사용한 모델링의 예 (아래 참조)는 다음 코드를 사용하여 cplex의 솔버 옵션에 대한 기본 설정을 변경할 수 있음을 나타냅니다.

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

또는 코드는 다음과 같을 수 있습니다.

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

또는 Pyomo를 사용하는 경우 다음 솔버 옵션이 사용됩니다.

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

필요에 따라 동물원 예 를 변경하겠습니다 . (스레드 수)

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)

주는

threads =  1
nbBus40  =  6.0
nbBus30  =  2.0