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 (bool) – 如果此求解器实例应创建并管理其自己的Gurobi环境,则设置为True(默认为False)

  • options (dict) – 要设置的Gurobi参数字典

如果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=False, **kwds)[源代码]

构造函数

方法

__init__([manage_env])

构造函数

available([exception_flag])

如果求解器可用,则返回 True。

close()

释放此求解器实例使用的本地Gurobi资源。

close_global()

释放此求解器使用的所有Gurobi模型,并释放全局默认的Gurobi环境。

config_block([init])

default_variable_value()

has_capability(cap)

返回一个布尔值,表示求解器是否支持特定功能。

license_is_valid()

如果求解器存在并且具有有效的许可证(如果适用),则为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变量中。

problem_format()

返回当前问题的格式。

reset()

重置求解器的状态

results_format()

返回当前的结果格式。

set_callback(name[, callback_fn])

为命名回调设置回调函数。

set_options(istr)

set_problem_format(format)

设置当前问题的格式(如果它是有效的),并将结果格式更新为适合此问题格式的有效格式。

set_results_format(format)

设置当前结果格式(如果它对当前问题格式有效)。

solve(*args, **kwds)

解决问题

version()

返回一个描述求解器可执行文件版本的4元组。

warm_start_capable()

如果求解器可以接受热启动解决方案,则为True

属性

keepfiles

log_file

soln_file

suffixes

symbolic_solver_labels

tee

warm_start_file_name

warm_start_solve

results

从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’)

Parameters:

cap (str) – 特征

Returns:

val – 求解器是否具有指定的能力。

Return type:

bool

license_is_valid()

如果求解器存在并且具有有效的许可证(如果适用),则为True

load_duals(cons_to_load=None)[source]

将双变量加载到‘dual’后缀中。‘dual’后缀必须存在于父模型上。

Parameters:

cons_to_load (list of Constraint)

load_rc(vars_to_load)[源代码]

将减少的成本加载到‘rc’后缀中。‘rc’后缀必须存在于父模型上。

Parameters:

vars_to_load (list of Var)

load_slacks(cons_to_load=None)[源代码]

将松弛变量的值加载到‘slack’后缀中。‘slack’后缀必须存在于父模型中。

Parameters:

cons_to_load (list of Constraint)

load_vars(vars_to_load=None)

将求解器变量中的值加载到相应的pyomo变量中。

Parameters:

vars_to_load (list of Var)

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元组。

warm_start_capable()[source]

如果求解器可以接受热启动解决方案,则为True

results

从solve方法返回的结果对象。