dynamic cut selector
The dynamic cut selector is an extension of the hybrid cut selector to employ a dynamic range for the orthogonality filtering, dependent on the efficacy ratio between cuts. It allows the user to specify a minimum efficacy gain in percentage to filter cuts, which corresponds geometrically to the idealized shift from the LP solution adding only the first cut to the intersection with the second cut. In this way we can enforce a minimum orthogonality between cuts through the efficacy ratio. This should, in theory, avoid the selection of cutting plane pairs that do not improve the lp solution, but only increase the number of cuts in the lp.
The selector allows the user to specify a filtering strategy during cut selection ('d'ynamic- and 'f'ull dynamic), which determines how the orthogonality filtering is applied. In both cases, after a cut is selected, the remaining cuts are resorted by computing their relative efficacy to the selected cut. The efficacy ratio is then used to filter the cuts based on the filtering strategy:
Definition in file cutsel_dynamic.h.
#include "scip/scip.h"
Go to the source code of this file.
Functions | |
SCIP_RETCODE | SCIPincludeCutselDynamic (SCIP *scip) |
SCIP_RETCODE | SCIPselectCutsDynamic (SCIP *scip, SCIP_ROW **cuts, SCIP_ROW **forcedcuts, SCIP_RANDNUMGEN *randnumgen, char filtermode, SCIP_Real mingain, SCIP_Real maxparall, SCIP_Real dircutoffdistweight, SCIP_Real efficacyweight, SCIP_Real objparalweight, SCIP_Real intsupportweight, int ncuts, int nforcedcuts, int maxselectedcuts, int *nselectedcuts) |