gpt4 book ai didi

python - CPLEX:如何以编程方式检查用户运行的是社区版还是完整版?

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:48 25 4
gpt4 key购买 nike

我对标准 CPLEX Python 接口(interface)特别感兴趣。一种明显的方法是使用 try: ... except: ... block 并在程序中使用 1000 多个变量。但我希望有一种更简洁、更直接的方法。

最佳答案

从最新版本的 CPLEX(当前为 12.8)开始,没有任何方法可以告诉您是否使用社区版 (CE)。

正如您所建议的,如果您尝试解决对于 CE 来说太大的模型,您可以使用 try- except block 来捕获您可能会遇到的错误。错误代码为 CPXERR_RESTRICTED_VERSION 。然而,听起来您正试图主动找出用户是否正在运行 CE。相反,您应该懒惰地检查它。也就是说,不要创建一个创建具有超过 1000 个变量的虚拟模型的方法,只是为了提前了解用户是否具有 CE。如果出现异常,只需处理即可。这与 EAFP 一致Python原理。例如,您可以执行如下操作:

import cplex
from cplex.exceptions import CplexSolverError, error_codes

# Build the model
model = cplex.Cplex()
# Add variables, constraints, etc.

try:
model.solve()
except CplexSolverError as cse:
# Check whether the model exceeds problem size limits (i.e.,
# the user has Community Edition). The following demonstrates
# how to handle a specific error code.
if cse.args[2] == error_codes.CPXERR_RESTRICTED_VERSION:
print("The current problem is too large for your version of "
"CPLEX. Reduce the size of the problem.")
else:
raise

另一个想法是在求解之前计算变量并发出警告。像这样的东西:

if model.variables.get_num() > 1000:
print("Warning: this model may be too large for your version of CPLEX.")

关于python - CPLEX:如何以编程方式检查用户运行的是社区版还是完整版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48446468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com