The symbolic constraint for Quadratic Reformulation. More...
#include <quadref.h>
Public Member Functions | |
QuadRef (ILP_Problem &IP_) | |
Creates an instance of QuadRef. | |
status | standard_separation (subproblem &S) |
Separates the SQK3 constraints from the internal SQK3 list (lc ). | |
virtual void | init (subproblem &S) |
Not necessary for this constraint. | |
status | feasible (solution &S) |
Not necessary for this constraint. | |
void | addCons (cons_obj *c) |
Every constraint from the ILP is added to cons_list via this method. | |
void | hashPair (var &x, var &y, var &l) |
Inserts a pair of variables with the corresponding linearization variable into the hashmap. | |
void | reformulate_forced_constraints () |
Reformulates the constraints in cons_list which have a reformulation status flag other than NONE or CHECK. | |
void | check_and_reformulate () |
Reformulates each constraint in cons_list with SQK2 if every linearization variable is already present in the ILP. | |
cons_obj * | reformulate_SQK2 (cons_obj *c, bool force) |
Reformulates a given constraint using SQK2 and returns the reformulated constraint. | |
void | reformulate_SQK3 (cons_obj *c, bool force) |
Reformulates a given constraint using SQK3 and adds the reformulated constraints to lc . |
This symbolic constraint checks wether constraints should be reformulated or not. The two essential methods for reformulation are SQK2 and SQK3. While SQK2 adds one single quadratic constraint to the ILP, SQK3 adds n+1 quadratic constraints to an internal list, where n denotes the number of variables in the corresponding linear constraint. These SQK3 constraints are separated during the optimization process.
This symbolic constraint is for internal use only, and is not supposed to be added by the user separately. Though one can add a reformulation status flag to every manually added constraint to change the reformulation behaviour for that constraint.
Definition at line 21 of file quadref.h.