PuLP 求解器不响应提供给它们的选项

问题描述

所以我有一个相当大的优化问题,我正在尝试在合理的时间内解决它。 我已经设置为:

import pulp as pl
my_problem = LpProblem("My problem",LpMinimize)
# write to problem file
my_problem.writeLP("MyProblem.lp")

然后交替

solver = CPLEX_CMD(timeLimit=1,gapRel=0.1)
status = my_problem .solve(solver)
solver = pl.apis.CPLEX_CMD(timeLimit=1,gapRel=0.1)
status = my_problem .solve(solver)
path_to_cplex = r'C:\Program Files\IBM\ILOG\CPLEX_Studio1210\cplex\bin\x64_win64\cplex.exe' # and yes this is the actual path on my machine
solver = pl.apis.cplex_api.CPLEX_CMD(timeLimit=1,gapRel=0.1,path=path_to_cplex)
status = my_problem .solve(solver)
solver = pl.apis.cplex_api.CPLEX_CMD(timeLimit=1,path=path_to_cplex)
status = my_problem .solve(solver)

它在每种情况下都运行。 但是,求解器不会响应 timeLimit 或 gapRel 指令。 如果我使用 timelimit,它会警告这会为 timeLimit 折旧。 fracgap 也是一样:它告诉我应该使用 relGap。所以不知何故,我正在与求解器交谈。 但是,无论我为 timeLimit 和 relGap 选择什么值,它总是返回完全相同的答案并花费完全相同的时间(几分钟)。 此外,我尝试了替代求解器,但我无法让它们中的任何一个接受它们的时间限制或优化差距的变体。 在每种情况下,问题都会解决并返回一个状态:最佳消息。但它只是忽略了时间限制和间隙说明。

有什么想法吗?

解决方法

zoo example

difficulty = "x"
def difficulty_level():
    while difficulty not in "EMH":
        print("Difficulty level sets the number of guesses available.")
        print('\nE - Easy (7 guesses) \nM - Medium (5 guesses) \nH - Hard (3 guesses)')
        print()
        print("Select the difficulty: ",end="")
        difficulty = input().upper()
        print()
        if difficulty == "E":
            return "E"
        elif difficulty == "M":
            del HANGMAN_PICS[0]
            del HANGMAN_PICS[1]
            return "M"
        elif difficulty == "H":
            del HANGMAN_PICS[0]
            del HANGMAN_PICS[1]
            del HANGMAN_PICS[2]
            del HANGMAN_PICS[3]
            return "H"
        else:
            print("Please choose a difficulty level.")