create_cuts_normal_vector

(函数来自 pyomo.gdp.plugins.cuttingplane)

pyomo.gdp.plugins.cuttingplane.create_cuts_normal_vector(transBlock_rHull, var_info, hull_to_bigm_map, rBigM_linear_constraints, rHull_vars, disaggregated_vars, norm, cut_threshold, zero_tolerance, integer_arithmetic, constraint_tolerance)[source]

返回一个切割,该切割从松弛的bigm可行区域中移除x*。

忽略除var_info和cut_threshold之外的所有参数,并在x_hat处构造一个切割,x_hat是松弛的bigM解x*在凸包上的投影,该投影垂直于从x*到x_hat的向量。

请注意,这种方法通常会导致数值困难,因为x*和x_hat都是优化问题的解。为了缓解这个问题,可以使用一些方法来稍微后退切割,使其更加保守。

Parameters:
  • transBlock_rHull (在松弛外壳实例上的变换块。被) – 这个回调忽略。

  • var_info (列表元组 (rBigM_var, rHull_var, xstar_param))

  • hull_to_bigm_map (用于表达式替换, 映射 id(hull_var) ) – 对应的 bigm 变量。此回调忽略

  • rBigM_linear_constraints (list of 在松弛的bigM中的线性约束。) – 此回调忽略。

  • rHull_vars (list of 松弛壳中的所有变量。此回调忽略。)

  • disaggregated_vars (ComponentSet of hull中的分散变量) – 重新表述。此回调忽略

  • norm (用于分离问题的范数, 将用于计算) – 用于生成切割的次梯度

  • cut_threshold (为了使生成的切割不可行,x*需要满足的金额) – 考虑将切割添加到bigM模型中。

  • zero_tolerance (在Fourier-Motzkin消除过程中,浮点数将被视为0的容差) – 此回调忽略

  • integer_arithmetic (此回调忽略 (指定FME使用整数) – 算术)

  • constraint_tolerance (此回调忽略 (指定何时约束) – 在FME中被认为是紧的)