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)