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)构造函数
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)返回一个布尔值,表示求解器是否支持特定功能。
如果已调用set_instance并且此求解器接口具有pyomo模型和求解器模型,则为True。
运行检查以验证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变量中。
返回当前问题的格式。
remove_block(block)从求解器的模型中移除单个块。
remove_constraint(solver_con)从模型以及MOSEK任务中移除单个约束。
remove_constraints(*solver_cons)在一次方法调用中从模型以及MOSEK任务中移除多个约束。
从求解器的模型中移除单个SOS约束。
remove_var(solver_var)从模型以及MOSEK任务中移除单个变量。
remove_vars(*solver_vars)从模型以及MOSEK任务中移除多个标量变量。
reset()重置求解器的状态
返回当前的结果格式。
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元组。
如果求解器可以接受热启动解决方案,则为True
write(filename)将模型写入文件。
属性
keepfileslog_filesoln_filesuffixessymbolic_solver_labelsteewarm_start_file_namewarm_start_solve从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和求解器模型的目标中。
- 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_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’)
- license_is_valid()
运行检查以验证MOSEK许可证的有效性。如果MOSEK在简单测试用例上无法运行,则返回False。
- load_duals(cons_to_load=None)
将双变量加载到‘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()
返回当前问题的格式。
- 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_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方法返回的结果对象。