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成员文档
- 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范数的系数。