Vấn đề với số luồng trên Cplex

Sep 30 2020

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

1 OguzToragay Oct 01 2020 at 12:09

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
2 AlexFleischer Oct 01 2020 at 13:49

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