create_cuts_normal_vector

(function from 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]

Returns a cut which removes x* from the relaxed bigm feasible region.

Ignores all parameters except var_info and cut_threshold, and constructs a cut at x_hat, the projection of the relaxed bigM solution x* onto the hull, which is perpendicular to the vector from x* to x_hat.

Note that this method will often lead to numerical difficulties since both x* and x_hat are solutions to optimization problems. To mitigate this, use some method of backing off the cut to make it a bit more conservative.

Parameters:
  • transBlock_rHull (transformation block on relaxed hull instance. Ignored by) – this callback.

  • var_info (List of tuples (rBigM_var, rHull_var, xstar_param))

  • hull_to_bigm_map (For expression substitution, maps id(hull_var) to) – corresponding bigm var. Ignored by this callback

  • rBigM_linear_constraints (list of linear constraints in relaxed bigM.) – Ignored by this callback.

  • rHull_vars (list of all variables in relaxed hull. Ignored by this callback.)

  • disaggregated_vars (ComponentSet of disaggregated variables in hull) – reformulation. Ignored by this callback

  • norm (The norm used in the separation problem, will be used to calculate) – the subgradient used to generate the cut

  • cut_threshold (Amount x* needs to be infeasible in generated cut in order) – to consider the cut for addition to the bigM model.

  • zero_tolerance (Tolerance at which a float will be treated as 0 during) – Fourier-Motzkin elimination. Ignored by this callback

  • integer_arithmetic (Ignored by this callback (specifies FME use integer) – arithmetic)

  • constraint_tolerance (Ignored by this callback (specifies when constraints) – are considered tight in FME)