[英]How to implement time limit in Docplex
我正在使用具有最小化目標的 Docplex(Cplex python 版本)。 由於找到最佳解決方案需要很長時間,我想設置一個時間限制並在那時接收找到的解決方案。 為了限制時間,我嘗試了以下但它不起作用。 誰能給我一個關於如何實現它的提示?
import docplex.cp.parameters as params
def solve_model():
params.timelimit = 1
result = model.solve()
我也試過model.parameters.timelimit = 1
我沒有收到任何錯誤。 模型已正確求解,但超出了時間限制。
我希望你覺得它有用。
def main():
# Create the model
model = Model(name='buses')
# Create decision variables
x = {(i, j): model.binary_var(name='x_{0}_{1}'.format(i, j)) for i in range(n) for j in range(n)}
# Create objective
obj = model.sum(c[i][j] * x[i, j] for i in range(n) for j in range(n))
model.minimize(obj)
# Add constraints
for i in range(n):
model.add_constraint(model.sum(x[i, j] for j in range(n)) == 1)
model.add_constraint(model.sum(x[j, i] for j in range(n)) == 1)
# Add time limit
model.context.solver.time_limit = 30
# Solve the model
solution = model.solve()
# Print solution
if solution:
print_solution(solution, x)
def print_solution(solution, x):
print('Total cost = ', solution.objective_value)
for i in range(n):
for j in range(n):
if solution[x[i, j]] > 0:
print('x{0}_{1} = '.format(i, j), solution[x[i, j]])
if __name__ == '__main__':
main()
見https://github.com/AlexFleischerParis/zoodocplex/blob/master/zoosettings.py
from docplex.mp.model import Model
mdl = Model(name='buses')
mdl.parameters.timelimit=20;
mdl.set_time_limit(20) #The same
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()
mdl.export("c:\\temp\\buses.lp")
print("time limit = ",mdl.parameters.timelimit.get())
print("time limit = ",mdl.get_time_limit()) #The same
for v in mdl.iter_integer_vars():
print(v," = ",v.solution_value)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.