GurobiDirect
(类来自 pyomo.solvers.plugins.solvers.gurobi_direct)
- class pyomo.solvers.plugins.solvers.gurobi_direct.GurobiDirect(manage_env=False, **kwds)[source]
基础类:
DirectSolver使用gurobipy直接与Gurobi接口。
- Parameters:
如果
manage_env设置为True,GurobiDirect对象会创建一个本地的Gurobi环境并管理所有相关的Gurobi资源。重要的是,这使得在退出求解器上下文时能够释放Gurobi许可证并终止连接:with SolverFactory('gurobi', solver_io='python', manage_env=True) as opt: opt.solve(model) # All Gurobi models and environments are freed
如果
manage_env设置为False(默认值),则GurobiDirect对象使用全局默认的Gurobi环境:with SolverFactory('gurobi', solver_io='python') as opt: opt.solve(model) # Only models created by `opt` are freed, the global default # environment remains active
manage_env=True在编程设置许可证或连接参数时是必需的。options参数用于将参数传递给 Gurobi 环境。例如,连接到 Gurobi 集群管理器:options = { "CSManager": "<url>", "CSAPIAccessID": "<access-id>", "CSAPISecret": "<api-key>", } with SolverFactory( 'gurobi', solver_io='python', manage_env=True, options=options ) as opt: opt.solve(model) # Model solved on compute server # Compute server connection terminated
方法
__init__([manage_env])构造函数
available([exception_flag])如果求解器可用,则返回 True。
close()释放此求解器实例使用的本地Gurobi资源。
释放此求解器使用的所有Gurobi模型,并释放全局默认的Gurobi环境。
config_block([init])default_variable_value()has_capability(cap)返回一个布尔值,表示求解器是否支持特定功能。
如果求解器存在并且具有有效的许可证(如果适用),则为True
load_duals([cons_to_load])将双变量加载到 'dual' 后缀中。
load_rc(vars_to_load)将减少的成本加载到 'rc' 后缀中。
load_slacks([cons_to_load])将松弛变量的值加载到 'slack' 后缀中。
load_vars([vars_to_load])将求解器变量的值加载到相应的pyomo变量中。
返回当前问题的格式。
reset()重置求解器的状态
返回当前的结果格式。
set_callback(name[, callback_fn])为命名回调设置回调函数。
set_options(istr)set_problem_format(format)设置当前问题的格式(如果它是有效的),并将结果格式更新为适合此问题格式的有效格式。
set_results_format(format)设置当前结果格式(如果它对当前问题格式有效)。
solve(*args, **kwds)解决问题
version()返回一个描述求解器可执行文件版本的4元组。
如果求解器可以接受热启动解决方案,则为True
属性
keepfileslog_filesoln_filesuffixessymbolic_solver_labelsteewarm_start_file_namewarm_start_solve从solve方法返回的结果对象。
成员文档
- available(exception_flag=True)[source]
如果求解器可用,则返回 True。
- Parameters:
exception_flag (bool) – 如果为True,当求解器不可用时抛出异常而不是返回False(默认为False)
通常,用户不需要调用
available(),因为在求解模型时会自动运行检查。然而,在使用共享的Gurobi许可证时,它对于简单的重试循环非常有用:with SolverFactory('gurobi', solver_io='python') as opt: while not available(exception_flag=False): time.sleep(1) opt.solve(model)
- close()[源代码]
释放此求解器实例使用的本地Gurobi资源。
由求解器创建的所有Gurobi模型都被释放。如果求解器是使用
manage_env=True创建的,此方法还会关闭此求解器实例使用的Gurobi环境。调用.close()可以达到与退出求解器上下文相同的结果(尽管在可能的情况下,使用上下文管理器是首选):opt = SolverFactory('gurobi', solver_io='python', manage_env=True) try: opt.solve(model) finally: opt.close() # Gurobi models and environments created by `opt` are freed
与上下文管理器一样,如果使用了
manage_env=False(默认值),则仅释放由此求解器创建的Gurobi模型。默认的全局Gurobi环境仍将处于活动状态:opt = SolverFactory('gurobi', solver_io='python') try: opt.solve(model) finally: opt.close() # Gurobi models created by `opt` are freed; however the # default/global Gurobi environment is still active
- close_global()[source]
释放此求解器使用的所有Gurobi模型,并释放全局默认的Gurobi环境。
默认环境由所有使用
manage_env=False(默认值)启动的GurobiDirect求解器使用。为了确保所有Gurobi资源都被释放,所有实例化的GurobiDirect求解器也必须正确关闭。以下示例将释放所有Gurobi资源,假设用户没有创建任何其他模型(例如通过另一个
GurobiDirect对象,且manage_env=False):opt = SolverFactory('gurobi', solver_io='python') try: opt.solve(model) finally: opt.close_global() # All Gurobi models created by `opt` are freed and the default # Gurobi environment is closed
- has_capability(cap)
返回一个布尔值,表示求解器是否支持特定功能。如果求解器不知道某个选项,则默认为‘False’。期望输入一个字符串。
示例: # 如果求解器支持sos1约束,则打印True,否则打印False print(solver.has_capability(‘sos1’)
# 如果求解器支持‘feature’,则打印True,否则打印False print(solver.has_capability(‘feature’)
- license_is_valid()
如果求解器存在并且具有有效的许可证(如果适用),则为True
- load_duals(cons_to_load=None)[source]
将双变量加载到‘dual’后缀中。‘dual’后缀必须存在于父模型上。
- Parameters:
cons_to_load (list of Constraint)
- load_slacks(cons_to_load=None)[源代码]
将松弛变量的值加载到‘slack’后缀中。‘slack’后缀必须存在于父模型中。
- Parameters:
cons_to_load (list of Constraint)
- problem_format()
返回当前问题的格式。
- reset()
重置求解器的状态
- results_format()
返回当前的结果格式。
- set_callback(name, callback_fn=None)
为命名回调设置回调函数。
回调函数的形式如下:
- def fn(solver, model):
通过
其中‘solver’是原生求解器接口对象,‘model’是Pyomo模型实例对象。
- set_problem_format(format)
设置当前问题的格式(如果它是有效的)并更新结果格式,使其适用于此问题格式。
- set_results_format(format)
设置当前结果格式(如果它对当前问题格式有效)。
- solve(*args, **kwds)
解决问题
- version()
返回一个描述求解器可执行文件版本的4元组。
- results
从solve方法返回的结果对象。