benderscut_opt.h
Go to the documentation of this file.
21 * The classical Benders' decomposition optimality cuts arise from a feasible instance of the Benders' decomposition
22 * subproblem. The optimality cuts are an underestimator of the subproblem objective function value. Auxiliary
23 * variables, \f$\varphi\f$ are added to the master problem as a lower bound on the subproblem objective function value.
25 * Consider a linear Benders' decomposition subproblem that takes the master problem solution \f$\bar{x}\f$ as input:
29 * If the subproblem is feasible, and \f$z(\bar{x}) > \varphi\f$ (indicating that the current underestimators are not
30 * optimal) then the Benders' decomposition optimality cut can be generated from the optimal dual solution of the
31 * subproblem. Let \f$w\f$ be the vector corresponding to the optimal dual solution of the Benders' decomposition
37 * Next, consider a nonlinear Benders' decomposition subproblem that takes the master problem solution \f$\bar{x}\f$ as input:
41 * If the subproblem is feasible, and \f$z(\bar{x}) > \varphi\f$ (indicating that the current underestimators are not
42 * optimal) then the Benders' decomposition optimality cut can be generated from the optimal dual solution of the
43 * subproblem. Let \f$w\f$ be the vector corresponding to the optimal dual solution of the Benders' decomposition subproblem.
51 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
83 /** Generates a classical Benders' optimality cut using the dual solutions from the subproblem or the input arrays. If
84 * the dual solutions are input as arrays, then a mapping between the array indices and the rows/variables is required.
85 * This method can also be used to generate a feasiblity, is a problem to minimise the infeasibilities has been solved
102 SCIP_HASHMAP* row2idx, /**< mapping between the row in the subproblem to the index in the dual array, can be NULL */
103 SCIP_HASHMAP* var2idx, /**< mapping from variable of the subproblem to the index in the dual arrays, can be NULL */
110 /** adds the gradient of a nonlinear row in the current NLP solution of a subproblem to a linear row or constraint in the master problem
124 SCIP_HASHMAP* var2idx, /**< mapping from variable of the subproblem to the index in the dual arrays, can be NULL */
126 SCIP_VAR*** vars, /**< pointer to array of variables in the generated cut with non-zero coefficient */
127 SCIP_Real** vals, /**< pointer to array of coefficients of the variables in the generated cut */
SCIP_EXPORT SCIP_RETCODE SCIPaddNlRowGradientBenderscutOpt(SCIP *masterprob, SCIP *subproblem, SCIP_BENDERS *benders, SCIP_NLROW *nlrow, SCIP_EXPRINT *exprint, SCIP_Real mult, SCIP_Real *primalvals, SCIP_HASHMAP *var2idx, SCIP_Real *dirderiv, SCIP_VAR ***vars, SCIP_Real **vals, int *nvars, int *varssize)
Definition: benderscut_opt.c:1029
type definitions for miscellaneous datastructures
Definition: struct_scip.h:59
type definitions for NLP management
Definition: struct_benderscut.h:37
type definitions for expression interpreter
Definition: struct_var.h:198
SCIP_EXPORT SCIP_RETCODE SCIPgenerateAndApplyBendersOptCut(SCIP *masterprob, SCIP *subproblem, SCIP_BENDERS *benders, SCIP_BENDERSCUT *benderscut, SCIP_SOL *sol, int probnumber, char *cutname, SCIP_Real objective, SCIP_Real *primalvals, SCIP_Real *consdualvals, SCIP_Real *varlbdualvals, SCIP_Real *varubdualvals, SCIP_HASHMAP *row2idx, SCIP_HASHMAP *var2idx, SCIP_BENDERSENFOTYPE type, SCIP_Bool addcut, SCIP_Bool feasibilitycut, SCIP_RESULT *result)
Definition: benderscut_opt.c:785
type definitions for return codes for SCIP methods
SCIP_EXPORT SCIP_RETCODE SCIPincludeBenderscutOpt(SCIP *scip, SCIP_BENDERS *benders)
Definition: benderscut_opt.c:745
Definition: struct_benders.h:48
type definitions for LP management
Definition: struct_sol.h:64
Definition: struct_misc.h:128
type definitions for SCIP's main datastructure
type definitions for Benders' decomposition methods
type definitions for Benders' decomposition cut
Definition: struct_nlp.h:63
common defines and data types used in all packages of SCIP
Definition: objbenders.h:33
Definition: exprinterpret_cppad.cpp:311
type definitions for constraints and constraint handlers