GDP_LOA_Solver
(类来自 pyomo.contrib.gdpopt.loa)
- class pyomo.contrib.gdpopt.loa.GDP_LOA_Solver(**kwds)[source]
基础类:
_GDPoptAlgorithm,_OAAlgorithmMixInGDPopt(广义析取规划优化器)基于逻辑的外逼近(LOA)求解器。
接受可以包含非线性、连续变量和约束以及逻辑条件的模型。对于非凸问题,LOA可能不会报告严格的对偶边界。
- __init__(**kwds)
这是所有GDPopt算法的通用初始化方法,以便我们正确设置配置参数并初始化算法状态的通用部分。
方法
__init__(**kwds)这是所有GDPopt算法的通用初始化方法,以便我们正确设置配置参数并初始化算法状态的通用部分。
any_termination_criterion_met(config)available([exception_flag])求解器始终可用。
bounds_converged(config)license_is_valid()primal_bound()reached_iteration_limit(config)reached_time_limit(config)返回当前的相对最优性差距。
solve(model, **kwds)解决模型。
update_incumbent(util_block)version()返回一个描述求解器版本的3元组。
属性
CONFIGalgorithmobjective_sense成员文档
- available(exception_flag=True)
求解器始终可用。虽然子求解器可能不可用,但它们会在适当的时候引发错误。
- relative_gap()
返回当前的相对最优性差距。
请注意,如果在某个点上原始边界改变了符号,这个差距不一定是单调递减的。
- solve(model, **kwds)[source]
解决模型。
- Parameters:
model (Block) – 要解决的Pyomo模型或块
- Keyword Arguments:
iterlim (NonNegativeInt, optional) – 迭代限制。
time_limit (PositiveInt, optional) – 允许的秒数,直到终止。请注意,时间限制目前只能在子求解器调用之间强制执行。您可能还需要设置子求解器的时间限制。
tee (bool, default=False) – 将输出流传输到终端。
logger (a_logger, default=
(WARNING)>) – 用于报告的日志对象或名称。 integer_tolerance (default=1e-05) – 整数值的容差。
constraint_tolerance (default=1e-06) –
约束满足的容忍度。
增加这个容忍度意味着在声明模型或NLP子问题不可行时更加保守。
variable_tolerance (默认值=1e-08) – 变量边界的容差。
subproblem_initialization_method (default=
) – 回调函数,用于指定初始化(MI)NLP子问题的自定义例程。此方法在子问题中的离散问题解决方案固定后,子问题解决(或预解决)之前调用。
对于具有离散问题松弛的算法:此方法接受三个参数:求解器对象、子问题GDPopt实用程序块和离散问题GDPopt实用程序块。离散问题包含最新的离散问题解决方案。
对于没有离散问题松弛的算法:此方法接受四个参数:当前固定为活动的Disjuncts列表、非指示器BooleanVars的值列表(如果force_nlp_subproblem=False则为空)、整数变量的值列表(如果force_nlp_subproblem=False也为空),以及子问题GDPopt实用程序块。
此方法的返回值将不被使用:该方法应直接在子问题上设置变量的值。
call_before_subproblem_solve (default=
) – 在解决(MI)NLP子问题之前调用的回调函数。接受三个参数:求解器对象、子问题以及子问题上的GDPopt实用块。
请注意,除非您非常确定自己在做什么,否则不应在此回调中修改子问题:它应仅用于查询问题。
要在解决问题之前初始化问题,请在‘subproblem_initialization_method’参数中指定一个方法。
call_after_subproblem_solve (default=
) – 在(MI)NLP子问题解决后立即调用的回调函数。接受三个参数:求解器对象、子问题以及子问题上的GDPopt实用块。
请注意,除非您非常确定自己在做什么,否则不应在此回调中修改子问题:它应仅用于查询问题。
call_after_subproblem_feasible (default=
) – 在(MI)NLP子问题解决后立即调用的回调函数,如果它是可行的。接受三个参数:求解器对象、子问题和子问题上的GDPopt实用块。
请注意,除非您非常自信自己在做什么,否则不应在此回调中修改子问题:它应该仅用于查询问题。
force_subproblem_nlp (默认=False) – 强制子问题为NLP,即使存在离散变量。
subproblem_presolve (bool, default=True) – 用于启用或禁用子问题预处理的标志。默认值为True。
tighten_nlp_var_bounds (bool, default=False) – 是否在解决NLP子问题之前对变量进行基于可行性的边界收紧。
round_discrete_vars (default=True) – 标志,用于将子问题的离散变量值四舍五入到最接近的整数。四舍五入在固定分离之前完成。
max_fbbt_iterations (PositiveInt, default=3) – 在NLP子问题预处理期间执行的最大基于可行性的边界收紧迭代次数。
init_strategy (_init_strategy_deprecation, optional) – 已弃用:请改用‘init_algorithm’。
init_algorithm (In{'no_init':
, 'set_covering': , 'max_binary': , 'fix_disjuncts': , 'custom_disjuncts': } , default='set_covering') – 选择在生成初始切割以构建离散问题时使用的初始化算法。custom_init_disjuncts (可选) – 用于初始化的分离集列表。
max_slack (NonNegativeFloat, default=1000) – OA松弛变量的上限
OA_penalty_factor (NonNegativeFloat, default=1000) – 目标值上松弛变量的惩罚乘数项。
set_cover_iterlim (NonNegativeInt, default=8) – 集合覆盖迭代次数的限制。
discrete_problem_transformation (default='gdp.bigm') – 用于将离散问题从GDP转换为代数模型的转换名称。
call_before_discrete_problem_solve (default=
) – 在解决MILP离散问题之前调用的回调函数。 接受三个参数:求解器对象、离散问题以及离散问题上的GDPopt实用块。
请注意,除非您非常确定自己在做什么,否则不应在此回调中修改问题:它应仅用于查询问题。
call_after_discrete_problem_solve (default=
) – 在MILP离散问题解决后立即调用的回调函数。接受三个参数:求解器对象、离散问题以及离散问题上的GDPopt实用块。
请注意,除非您非常确定自己在做什么,否则不应在此回调中修改问题:它应仅用于查询问题。
call_before_master_solve (default=
) – 已弃用:请使用‘call_before_discrete_problem_solve’ call_after_master_solve (default=
) – 已弃用:请使用‘call_after_discrete_problem_solve’ mip_presolve (bool, default=True) – 用于启用或禁用GDPopt MIP预处理的标志。默认值为True。
calc_disjunctive_bounds (bool, default=False) – 为GLOA计算特殊的分离变量边界。默认为False。
obbt_disjunctive_bounds (bool, default=False) – 使用基于最优性的边界收紧而不是基于可行性的边界收紧来计算分离变量边界。默认为False。
mip_solver (default='gurobi') – 使用的混合整数线性求解器。请注意,除了APPSI包中的自动持久求解器外,不支持其他持久求解器。
mip_solver_args (dict, optional) – 发送给MILP子求解器solve()调用的关键字参数
nlp_solver (default='ipopt') – 使用的非线性求解器。请注意,除了APPSI包中的自动持久求解器外,不支持其他持久求解器。
nlp_solver_args (dict, optional) – 发送给NLP子求解器solve()调用的关键字参数
minlp_solver (default='baron') – 使用的混合整数非线性求解器。请注意,除了APPSI包中的自动持久求解器外,不支持其他持久求解器。
minlp_solver_args (dict, optional) – 发送给MINLP子求解器solve()调用的关键字参数
local_minlp_solver (默认='bonmin') – 使用的混合整数非线性求解器。请注意,除了APPSI包中的自动持久求解器外,不支持其他持久求解器。
local_minlp_solver_args (dict, optional) – 传递给本地MINLP子求解器solve()调用的关键字参数
small_dual_tolerance (default=1e-08) – 在生成切割时,小的对偶值乘以表达式可能会导致问题。排除所有绝对值小于以下值的对偶值。
bound_tolerance (NonNegativeFloat, default=1e-06) – 边界收敛的容差。
- version()
返回一个描述求解器版本的3元组。