GDP枚举求解器
(类来自 pyomo.contrib.gdpopt.enumerate)
- class pyomo.contrib.gdpopt.enumerate.GDP_Enumeration_Solver(**kwds)[source]
基础类:
_GDPoptAlgorithm通过枚举所有离散解并解决由此产生的NLP子问题来解决广义析取规划(GDP),然后返回找到的最佳解。
接受可以包含非线性、连续变量和约束以及逻辑条件的模型。对于非凸问题,除非NLP子问题被全局解决,否则算法将不精确。
- __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)>) – 用于报告的日志对象或名称。 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) – 在生成切割时,小的对偶值乘以表达式可能会导致问题。排除所有绝对值小于以下值的对偶值。
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子问题预处理期间执行的最大基于可行性的边界收紧迭代次数。
mip_solver (default='gurobi') – 使用的混合整数线性求解器。请注意,除了APPSI包中的自动持久求解器外,不支持其他持久求解器。
mip_solver_args (dict, optional) – 发送给MILP子求解器solve()调用的关键字参数
- version()
返回一个描述求解器版本的3元组。