簡體   English   中英

如何在Docplex中實現時間限制

[英]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()

在python優化簡單

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM