MOSEK持久性

(类来自 pyomo.solvers.plugins.solvers.mosek_persistent)

class pyomo.solvers.plugins.solvers.mosek_persistent.MOSEKPersistent(**kwds)[source]

基础:PersistentSolver, MOSEKDirect

该类提供了pyomo与MOSEK的Optimizer API之间的持久接口。 作为MOSEKDirect类的子类,此接口不需要任何文件IO。 此外,持久接口保留了MOSEK任务对象,允许用户对其模型进行增量更改(例如删除变量/约束、修改变量、添加列等)。请注意,用户有责任通知持久接口任何增量更改。例如,如果定义了一个新变量,那么在求解器知道其存在之前,需要通过调用add_var方法显式添加它。 :keyword type: 表示求解器实例类类型的字符串。 :kwtype type: str :keyword name: 表示求解器实例类类型或指定名称的字符串。 :kwtype name: str :keyword doc: 求解器的文档 :kwtype doc: str :keyword options: 求解器选项的字典 :kwtype options: dict

__init__(**kwds)[source]

构造函数

方法

__init__(**kwds)

构造函数

add_block(block)

向求解器的模型添加一个单一的Pyomo块。

add_column(model, var, obj_coef, ...)

向求解器和Pyomo模型添加一列

add_constraint(con)

向求解器的模型添加单个约束。

add_constraints(con_seq)

在一次方法调用中向MOSEK任务对象添加多个约束。

add_sos_constraint(con)

向求解器的模型添加单个SOS约束(如果支持)。

add_var(var)

向求解器的模型添加单个变量。

add_vars(var_seq)

在一次方法调用中向MOSEK任务对象添加多个变量。

available([exception_flag])

如果求解器可用,则为True。

config_block([init])

default_variable_value()

has_capability(cap)

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

has_instance()

如果已调用set_instance并且此求解器接口具有pyomo模型和求解器模型,则为True。

license_is_valid()

运行检查以验证MOSEK许可证的有效性。

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()

返回当前问题的格式。

remove_block(block)

从求解器的模型中移除单个块。

remove_constraint(solver_con)

从模型以及MOSEK任务中移除单个约束。

remove_constraints(*solver_cons)

在一次方法调用中从模型以及MOSEK任务中移除多个约束。

remove_sos_constraint(con)

从求解器的模型中移除单个SOS约束。

remove_var(solver_var)

从模型以及MOSEK任务中移除单个变量。

remove_vars(*solver_vars)

从模型以及MOSEK任务中移除多个标量变量。

reset()

重置求解器的状态

results_format()

返回当前的结果格式。

set_callback(name[, callback_fn])

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

set_instance(model, **kwds)

此方法用于将提供的Pyomo模型转换为求解器的Python模型实例。

set_objective(obj)

设置求解器的目标。

set_options(istr)

set_problem_format(format)

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

set_results_format(format)

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

solve(*args, **kwds)

解决模型。

update_var(solver_var)

更新求解器模型中的单个变量。

update_vars(*solver_vars)

更新求解器模型中的多个标量变量。

version()

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

warm_start_capable()

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

write(filename)

将模型写入文件。

属性

keepfiles

log_file

soln_file

suffixes

symbolic_solver_labels

tee

warm_start_file_name

warm_start_solve

results

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

成员文档

add_block(block)

向求解器的模型添加一个单一的Pyomo块。

这将保持任何现有模型组件的完整性。

Parameters:

block (Block (标量 Block单个 BlockData))

add_column(model, var, obj_coef, constraints, coefficients)

向求解器和Pyomo模型添加一列

这将把Pyomo变量var添加到求解器的模型中,并将相关约束的系数放入求解器模型中。如果obj_coef不为零,它将会把obj_coef*var添加到Pyomo和求解器模型的目标中。

Parameters:
  • model (将列添加到的pyomo ConcreteModel)

  • var (Var (标量 Var单个 VarData))

  • obj_coef (float, pyo.Param)

  • 约束 (列表标量约束单一约束数据)

  • coefficients (list要在相关约束中应用于 var 的系数)

add_constraint(con)

向求解器的模型添加单个约束。

这将保持任何现有模型组件的完整性。

Parameters:

con (Constraint (标量约束单一约束数据))

add_constraints(con_seq)[source]

在一次方法调用中向MOSEK任务对象添加多个约束。

这将保持任何现有模型组件的完整性。

注意:如果此方法用于添加锥体,则应将锥体作为约束传递。对于锥形域,请使用 add_block 方法。

Parameters:

con_seq (元组/列表Constraint (标量 Constraint单个 ConstraintData))

add_sos_constraint(con)

向求解器的模型添加单个SOS约束(如果支持)。

这将保持任何现有模型组件的完整性。

Parameters:

con (SOSConstraint)

add_var(var)

向求解器的模型添加单个变量。

这将保持任何现有模型组件的完整性。

Parameters:

var (Var)

add_vars(var_seq)[source]

在一次方法调用中向MOSEK任务对象添加多个变量。

这将保持任何现有模型组件的完整性。

Parameters:

var_seq (元组/列表Var)

available(exception_flag=True)

如果求解器可用,则为True。

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

has_instance()

如果已调用set_instance并且此求解器接口具有pyomo模型和求解器模型,则为True。

Returns:

tmp

Return type:

bool

license_is_valid()

运行检查以验证MOSEK许可证的有效性。如果MOSEK在简单测试用例上无法运行,则返回False。

load_duals(cons_to_load=None)

将双变量加载到‘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()

返回当前问题的格式。

remove_block(block)

从求解器的模型中移除单个块。

这将保持其他模型组件的完整性。

警告:用户在修改块之前必须调用remove_block。

Parameters:

block (Block (标量 Block单个 BlockData))

remove_constraint(solver_con)[source]

从模型以及MOSEK任务中移除单个约束。

这将保持其他模型组件的完整性。

要移除一个锥形域,你应该使用remove_block方法。 :param solver_con: :type solver_con: Constraint (标量约束或单一约束数据)

remove_constraints(*solver_cons)[source]

在一次方法调用中从模型以及MOSEK任务中移除多个约束。

这将保持其他模型组件的完整性。 要移除圆锥域,请使用remove_block方法。

Parameters:

*solver_cons (Constraint (标量约束单一约束数据))

remove_sos_constraint(con)

从求解器的模型中移除单个SOS约束。

这将保持其他模型组件的完整性。

Parameters:

con (SOSConstraint)

remove_var(solver_var)[source]

从模型以及MOSEK任务中移除单个变量。 这将保持其他模型组件的完整性。 :param solver_var: :type solver_var: Var (标量Var或单个VarData)

remove_vars(*solver_vars)[source]

从模型以及MOSEK任务中移除多个标量变量。用户可以传递一个解包的标量变量列表。这将保持其他模型组件的完整性。 :param *solver_var: :type *solver_var: Var (标量 Var 或单个 VarData)

reset()

重置求解器的状态

results_format()

返回当前的结果格式。

set_callback(name, callback_fn=None)

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

回调函数的形式如下:

def fn(solver, model):

通过

其中‘solver’是原生求解器接口对象,‘model’是Pyomo模型实例对象。

set_instance(model, **kwds)

此方法用于将提供的Pyomo模型转换为求解器的Python模型实例。这将丢弃任何现有模型并从头开始。

Parameters:

model (ConcreteModel) – 用于求解器的pyomo模型。

Keyword Arguments:
  • symbolic_solver_labels (bool) – 如果为True,求解器的组件(例如,变量、约束)将被赋予与Pyomo组件名称相对应的名称。

  • skip_trivial_constraints (bool) – 如果为True,则任何具有常量主体的约束将不会被添加到求解器模型中。 使用此选项时要小心。如果跳过了平凡约束,则无法从持久求解器中移除该约束(如果用户尝试移除不存在的约束,则会引发错误)。

  • output_fixed_variable_bounds (bool) – 如果为False,则在求解器约束中使用固定变量时将引发错误。 这对于捕获错误非常有用。通常,固定变量应作为常量值出现在求解器约束中。如果为True,则不会引发错误。

set_objective(obj)

设置求解器的目标。请注意,至少目前,任何现有的目标都将被丢弃。除此之外,任何现有的模型组件将保持不变。

Parameters:

obj (Objective)

set_problem_format(format)

设置当前问题的格式(如果它是有效的)并更新结果格式,使其适用于此问题格式。

set_results_format(format)

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

solve(*args, **kwds)

解决模型。

Keyword Arguments:
  • suffixes (list of str) – 字符串应表示求解器支持的后缀。示例包括‘dual’、‘slack’和‘rc’。

  • options (dict) – 求解器选项的字典。请参阅求解器文档以了解可能的求解器选项。

  • warmstart (bool) – 如果为True,求解器将被热启动。

  • keepfiles (bool) – 如果为True,求解器的日志文件将被保存。

  • logfile (str) – 用于求解器日志文件的名称。

  • load_solutions (bool) – 如果为True且存在解决方案,解决方案将被加载到Pyomo模型中。

  • report_timing (bool) – 如果为True,则将打印时间信息。

  • tee (bool) – 如果为True,则求解器日志将被打印。

update_var(solver_var)[source]

更新求解器模型中的单个变量。此方法允许固定/取消固定、更改变量类型和边界。 :param solver_var: :type solver_var: Var

update_vars(*solver_vars)[source]

更新求解器模型中的多个标量变量。此方法允许固定/取消固定、更改变量类型和边界。 :param *solver_var: :type *solver_var: Constraint (标量 Constraint 或单个 ConstraintData)

version()

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

warm_start_capable()

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

write(filename)[source]

将模型写入文件。MOSEK 可以写入各种流行的格式,例如:lp、mps、ptf、cbf 等。 除了上述文件格式外,MOSEK 还可以写入原生格式,例如:opf、task 和 jtask。task 格式是二进制的,是与 MOSEK 工作人员共享的首选格式,以便在查询时使用,因为它保存了问题的状态和求解器的详细信息。 参数: filename: str (输出文件的名称,包括所需的扩展名)

results

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