MindtPySolver

(类来自 pyomo.contrib.mindtpy.MindtPy)

class pyomo.contrib.mindtpy.MindtPy.MindtPySolver[source]

基础类:object

混合整数非线性规划(MINLP)问题的分解求解器。

MindtPy(Pyomo中的混合整数非线性分解工具箱)求解器应用多种基于分解的方法来解决混合整数非线性规划(MINLP)问题。这些方法包括:

  • 外部近似法 (OA)

  • 全局外逼近(GOA)

  • 正则化外逼近 (ROA)

  • 基于LP/NLP的分支定界法 (LP/NLP)

  • 基于全局线性规划/非线性规划的分支定界法(GLP/NLP)

  • 基于正则化LP/NLP的分支定界(RLP/NLP)

  • 可行性泵(FP)

__init__()

方法

__init__()

available([exception_flag])

检查求解器是否可用。

license_is_valid()

solve(model, **kwds)

解决模型。

version()

返回一个描述求解器版本的3元组。

属性

CONFIG

成员文档

available(exception_flag=True)[source]

检查求解器是否可用。

solve(model, **kwds)[源代码]

解决模型。

Parameters:

model (Block) – 一个要解决的Pyomo模型或块

Keyword Arguments:
  • iteration_limit (NonNegativeInt, default=50) – 分解方法中的最大迭代次数。

  • stalling_limit (PositiveInt, default=15) – 分解方法中原始边界进展的停滞限制。

  • time_limit (PositiveInt, default=600) – 允许的秒数,直到终止。请注意,时间限制目前只能在子求解器调用之间强制执行。您可能还需要设置子求解器的时间限制。

  • 策略 (In['OA', 'ECP', 'GOA', 'FP'], default='OA') – 应用于方法的MINLP分解策略。目前可用的有外逼近法(OA)、扩展切割平面法(ECP)、全局外逼近法(GOA)和可行性泵法(FP)。

  • add_regularization (In['level_L1', 'level_L2', 'level_L_infinity', 'grad_lag', 'hess_lag', 'hess_only_lag', 'sqp_lag'], optional) – 在解决固定子问题之前解决一个正则化问题的目标函数。

  • call_after_main_solve (default=) – 主问题解决后的回调钩子。

  • call_before_subproblem_solve (default=) – 在非线性子问题求解之前的回调钩子。

  • call_after_subproblem_solve (default=) – 在非线性子问题求解后的回调钩子。

  • call_after_subproblem_feasible (default=) – 在非线性子问题的可行解之后调用的回调钩子。

  • tee (bool, default=False) – 将输出流传输到终端。

  • logger (a_logger, default='pyomo.contrib.mindtpy') – 用于报告的日志对象或名称。

  • logging_level (NonNegativeInt, default=20) – MindtPy的日志记录级别。CRITICAL = 50, ERROR = 40, WARNING = 30, INFO = 20, DEBUG = 10, NOTSET = 0

  • integer_to_binary (bool, default=False) – 将整数变量转换为二进制(用于无用的切割)。

  • add_no_good_cuts (bool, default=False) – 添加无良好切割(no-good cuts)到二进制变量,以禁止再次出现相同的整数解。请注意,需要使用integer_to_binary标志将其应用于实际整数,而不仅仅是二进制。

  • use_tabu_list (bool, default=False) – 使用禁忌列表和当前最优回调来禁止再次出现相同的整数解。

  • single_tree (bool, default=False) – 在解决MIP主问题时使用单树实现。

  • solution_pool (bool, default=False) – 在解决MIP主问题时使用解决方案池。

  • num_solution_iteration (PositiveInt, default=5) – 每次迭代中用于生成固定NLP子问题的MIP解的数量(来自解池)。

  • cycling_check (bool, default=True) – 检查OA算法是否陷入循环并终止。

  • feasibility_norm (In['L1', 'L2', 'L_infinity'], default='L_infinity') – 可行性子问题中目标函数的不同形式。

  • differentiate_mode (In['reverse_symbolic', 'sympy'], default='reverse_symbolic') – 用于计算雅可比矩阵的微分模式。

  • use_mcpp (bool, default=False) – 使用MC++包为变量‘objective_value’设置一个界限,该变量在原始问题的目标函数是非线性时引入。

  • calculate_dual_at_solution (bool, default=False) – 计算NLP子问题的对偶值。

  • use_fbbt (bool, default=False) – 使用fbbt来收紧问题的可行区域。

  • use_dual_bound (bool, default=True) – 添加双重边界约束以确保目标满足最佳找到的双重边界。

  • partition_obj_nonlinear_terms (bool, default=True) – 使用epigraph重构将目标函数中的非线性项进行分区。

  • quadratic_strategy (In[0, 1, 2], default=0) – 如何在MINLP中处理二次项。0:视为非线性项;1:仅在主问题中直接使用目标函数中的二次项;2:在主问题中使用目标函数和约束中的二次项。

  • move_objective (bool, default=False) – 是否使用epigraph约束将目标函数替换为约束。

  • add_cuts_at_incumbent (bool, default=False) – 是否在分支定界树中找到的当前解处向主问题添加惰性约束

  • nlp_solver (In['ipopt', 'appsi_ipopt', 'gams', 'baron', 'cyipopt'], default='ipopt') – 用于解决非线性子问题的NLP子求解器。

  • nlp_solver_args (dict, optional) – 在解决非线性子问题时,传递给求解器的NLP子求解器选项。

  • mip_solver (In['gurobi', 'cplex', 'cbc', 'glpk', 'gams', 'gurobi_persistent', 'cplex_persistent', 'appsi_cplex', 'appsi_gurobi', 'appsi_highs'], default='glpk') – 将使用哪个MIP子求解器来解决混合整数主问题。

  • mip_solver_args (dict, optional) – 在解决混合整数主问题时,传递给求解器的MIP子求解器选项。

  • mip_solver_mipgap (PositiveFloat, default=0.0001) – 传递给MIP求解器的Mipgap。

  • threads (NonNegativeInt, default=0) – 由MIP求解器和NLP求解器使用的线程数。

  • regularization_mip_threads (NonNegativeInt, default=0) – MIP求解器用于解决正则化主问题的线程数。

  • solver_tee (bool, default=False) – 将MIP求解器和NLP求解器的输出流式传输到终端。

  • mip_solver_tee (bool, default=False) – 将MIP求解器的输出流式传输到终端。

  • nlp_solver_tee (bool, default=False) – 将nlp求解器的输出流式传输到终端。

  • mip_regularization_solver (In['gurobi', 'cplex', 'cbc', 'glpk', 'gams', 'gurobi_persistent', 'cplex_persistent', 'appsi_cplex', 'appsi_gurobi', 'appsi_highs'], optional) – 用于解决正则化问题的MIP子求解器。

  • absolute_bound_tolerance (PositiveFloat, default=0.0001) – 边界可行性检查的绝对容差。

  • relative_bound_tolerance (PositiveFloat, default=0.001) – 边界可行性检查的相对容差。 \(|Primal Bound - Dual Bound| / (1e-10 + |Primal Bound|) <= relative tolerance\)

  • small_dual_tolerance (default=1e-08) – 在生成切割时,小的对偶值乘以表达式可能会导致问题。排除所有绝对值小于以下值的对偶值。

  • integer_tolerance (default=1e-05) – 整数值的容差。

  • constraint_tolerance (default=1e-06) – 约束满足的容差。

  • variable_tolerance (默认值=1e-08) – 变量边界的容差。

  • zero_tolerance (default=1e-08) – 变量等于零的容差。

  • fp_cutoffdecr (PositiveFloat, default=0.1) – 原始目标函数的截止值的额外相对减少量。

  • fp_iteration_limit (PositiveInt, default=20) – 可行性泵方法中的最大迭代次数。

  • fp_projcuts (bool, default=True) – 是否将从MIP解的规范化中得到的切割添加到NLP可行集中。

  • fp_transfercuts (bool, default=True) – 是否在选定的策略中将切割从可行性泵MIP转移到主MIP中(除了在FP MIP变得不可行的回合之外的所有回合)。

  • fp_projzerotol (PositiveFloat, default=0.0001) – 当正则化问题的最优值被视为零时的容差,这可能会触发子非线性规划(Sub-NLP)的求解。

  • fp_mipgap (PositiveFloat, default=0.01) – 用于解决MIP正则化问题的最优性容差(相对间隙)。

  • fp_discrete_only (bool, default=True) – 仅在正则化问题中计算离散变量之间的距离。

  • fp_main_norm (In['L1', 'L2', 'L_infinity'], default='L1') – 目标函数MIP正则化问题的不同形式。

  • fp_norm_constraint (bool, default=True) – 是否将范数约束添加到FP-NLP

  • fp_norm_constraint_coef (PositiveFloat, default=1) – 范数约束中的系数,对应于论文中的Beta。

  • obj_bound (PositiveFloat, default=1000000000000000.0) – 如果主MIP无界,则应用于目标函数线性化的边界。

  • continuous_var_bound (PositiveFloat, default=10000000000.0) – 如果激活了单棵树,则为非线性约束中的无界连续变量添加的默认边界。

  • integer_var_bound (PositiveFloat, default=1000000000.0) – 如果激活了单棵树,则为非线性约束中的无界整数变量添加的默认边界。

  • initial_bound_coef (PositiveFloat, default=0.1) – 用于近似初始原始/对偶边界的系数。

  • level_coef (PositiveFloat, default=0.5) – 正则化主问题中的系数,表示对MINLP问题的线性近似有多大的信任度。

  • solution_limit (PositiveInt, default=10) – 正则化问题的解限制,因为它不需要被解决到最优。

  • sqp_lag_scaling_coef (In['fixed', 'variable_dependent'], default='fixed') – 用于在sqp_lag中缩放L2范数的系数。

version()[source]

返回一个描述求解器版本的3元组。