Vấn đề với số luồng trên Cplex
Tôi đang giải quyết một loạt các vấn đề tương tự và tôi muốn so sánh chúng. Để làm như vậy, tôi cần mọi thứ chạy trên một luồng. Ngay cả khi đặt số luồng thành 1, mô hình vẫn chạy trên 8 luồng. Có ai đã từng gặp phải vấn đề này? và có cách nào để khắc phục không? (Tôi đang sử dụng Cplex với python)
Cảm ơn bạn,
Trả lời
Hãy thử sử dụng ngữ cảnh như được giải thích ở đây . Một ví dụ về mô hình hóa với docplex (hiển thị bên dưới) cho biết rằng bạn có thể thay đổi cài đặt mặc định cho các tùy chọn bộ giải trong chế độ song công bằng cách sử dụng mã sau:
context = Context.make_default_context()
context.cplex_parameters.threads = 1
model = Model(context=context
Ngoài ra, mã có thể như sau:
model = Model()
model.context.cplex_parameters.threads = 1
Hoặc nếu bạn đang sử dụng Pyomo, tùy chọn bộ giải sau sẽ được sử dụng:
mysolver = SolverFactory('CPLEX')
mysolver.options['threads'] = 1
hãy để tôi thay đổi ví dụ về sở thú cho nhu cầu của bạn. (Số của chủ đề)
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)
cái nào cho
threads = 1
nbBus40 = 6.0
nbBus30 = 2.0