LazyOACallback_cplex
(类来自 pyomo.contrib.mindtpy.single_tree)
- class pyomo.contrib.mindtpy.single_tree.LazyOACallback_cplex[source]
基础类:
objectCPLEX 中用于调用 Lazy 回调的固有类。
- __init__()
方法
__init__()add_lazy_affine_cuts(mindtpy_solver, config, opt)使用MCPP添加仿射切割。
add_lazy_no_good_cuts(var_values, ...[, ...])添加无优切割。
add_lazy_oa_cuts(target_model, dual_values, ...)线性化非线性约束;通过CPLEX固有函数self.add()添加OA切割。对于非凸问题,请开启'config.add_slack'。
copy_lazy_var_list_values(opt, from_list, ...)此函数将变量值从一个列表复制到另一个列表。
handle_lazy_main_feasible_solution(main_mip, ...)此函数在主MIP的分支定界过程中被调用,更准确地说,是在找到一个可行解并且LazyCallback被激活时调用。
handle_lazy_subproblem_infeasible(fixed_nlp, ...)解决可行性NLP子问题,并根据指定的策略添加切割。
handle_lazy_subproblem_optimal(fixed_nlp, ...)此函数将固定NLP子问题的最优解复制到MIP主问题(解释见下文),更新边界,添加OA和不良切割,如果已改进则存储当前解。
处理在给定既不是最优也不可行的解决方案的情况下,解决NLP子问题的最新迭代结果。
成员文档
- add_lazy_affine_cuts(mindtpy_solver, config, opt)[source]
使用MCPP添加仿射切割。
通过CPLEX固有函数self.add()添加仿射切割。
- Parameters:
mindtpy_solver (object) – mindtpy 求解器类。
config (ConfigBlock) – MindtPy 的具体配置。
opt (SolverFactory) – cplex_persistent 求解器。
- add_lazy_no_good_cuts(var_values, mindtpy_solver, config, opt, feasible=False)[source]
添加无优切割。
通过Cplex固有函数self.add()添加无良好切割。
- Parameters:
- Raises:
ValueError – 二进制变量的值不是0或1。
- add_lazy_oa_cuts(target_model, dual_values, mindtpy_solver, config, opt, linearize_active=True, linearize_violated=True)[source]
将非线性约束线性化;通过CPLEX内置函数self.add()添加OA切割。 对于非凸问题,请开启‘config.add_slack’。松弛变量将始终用于非线性等式约束。
- Parameters:
target_model (Pyomo 模型) – MIP 主问题。
dual_values (list) – 每个约束的对偶值。
mindtpy_solver (object) – mindtpy 求解器类。
config (ConfigBlock) – MindtPy 的具体配置。
opt (SolverFactory) – cplex_persistent 求解器。
linearize_active (bool, optional) – 是否线性化活动的非线性约束,默认为 True。
linearize_violated (bool, optional) – 是否线性化违反的非线性约束,默认为 True。
- copy_lazy_var_list_values(opt, from_list, to_list, config, skip_stale=False, skip_fixed=True)[source]
此函数将变量值从一个列表复制到另一个列表。 必要时将值四舍五入为二进制/整数。 对于非负实数,必要时将其设置为零。
- handle_lazy_main_feasible_solution(main_mip, mindtpy_solver, config, opt)[source]
此函数在主MIP的分支定界过程中调用,更准确地说,是在找到一个可行解并且LazyCallback被激活时调用。将结果复制到工作模型并更新上界或下界。在LP-NLP中,上界或下界在解决主问题时更新。
- Parameters:
main_mip (Pyomo 模型) – MIP 主问题。
mindtpy_solver (object) – mindtpy 求解器类。
config (ConfigBlock) – MindtPy 的具体配置。
opt (SolverFactory) – cplex_persistent 求解器。
- handle_lazy_subproblem_infeasible(fixed_nlp, mindtpy_solver, config, opt)[source]
解决可行性NLP子问题,并根据指定的策略添加切割。
- Parameters:
fixed_nlp (Pyomo 模型) – 整数变量固定的 NLP 模型。
mindtpy_solver (object) – mindtpy 求解器类。
config (ConfigBlock) – MindtPy 的具体配置。
opt (SolverFactory) – cplex_persistent 求解器。
- handle_lazy_subproblem_optimal(fixed_nlp, mindtpy_solver, config, opt)[source]
此函数将固定NLP子问题的最优解复制到MIP主问题(解释见下文),更新边界,添加OA和不良切割,如果改进了当前解,则存储当前解。
- Parameters:
fixed_nlp (Pyomo 模型) – 整数变量固定的 NLP 模型。
mindtpy_solver (object) – mindtpy 求解器类。
config (ConfigBlock) – MindtPy 的具体配置。
opt (SolverFactory) – cplex_persistent 求解器。
- handle_lazy_subproblem_other_termination(fixed_nlp, termination_condition, mindtpy_solver, config)[source]
处理在给定既不是最优也不可行的解决方案的情况下,解决NLP子问题的最新迭代结果。
- Parameters:
fixed_nlp (Pyomo 模型) – 整数变量固定的 NLP 模型。
termination_condition (Pyomo TerminationCondition) – 固定NLP子问题的终止条件。
mindtpy_solver (object) – mindtpy 求解器类。
config (ConfigBlock) – MindtPy 的具体配置。
- Raises:
ValueError – MindtPy 无法处理固定 NLP 子问题的终止条件。