/** presolving method of propagator */ static SCIP_DECL_PROPPRESOL(propPresolDualfix) { /*lint --e{715}*/ SCIP_Bool cutoff; SCIP_Bool unbounded; int oldnfixedvars; assert(prop != NULL); assert(strcmp(SCIPpropGetName(prop), PROP_NAME) == 0); assert(result != NULL); *result = SCIP_DIDNOTRUN; if( !SCIPallowDualReds(scip) ) return SCIP_OKAY; cutoff = FALSE; unbounded = FALSE; oldnfixedvars = *nfixedvars; SCIP_CALL( performDualfix(scip, nfixedvars, &unbounded, &cutoff) ); /* evaluate propagation result */ if( cutoff ) *result = SCIP_CUTOFF; else if( unbounded ) *result = SCIP_UNBOUNDED; else if( *nfixedvars > oldnfixedvars ) *result = SCIP_SUCCESS; else *result = SCIP_DIDNOTFIND; return SCIP_OKAY; }
/** copy method for constraint handler plugins (called when SCIP copies plugins) */ static SCIP_DECL_PROPCOPY(propCopyDualfix) { /*lint --e{715}*/ assert(scip != NULL); assert(prop != NULL); assert(strcmp(SCIPpropGetName(prop), PROP_NAME) == 0); /* call inclusion method of propagator */ SCIP_CALL( SCIPincludePropDualfix(scip) ); return SCIP_OKAY; }
/** copy method for propagator plugins (called when SCIP copies plugins) */ static SCIP_DECL_PROPCOPY(propCopyRedcost) { /*lint --e{715}*/ assert(scip != NULL); assert(prop != NULL); assert(strcmp(SCIPpropGetName(prop), PROP_NAME) == 0); /* call inclusion method of constraint handler */ SCIP_CALL( SCIPincludePropRedcost(scip) ); return SCIP_OKAY; }
/** execution method of propagator */ static SCIP_DECL_PROPEXEC(propExecDualfix) { /*lint --e{715}*/ int nfixedvars; SCIP_Bool cutoff; SCIP_Bool unbounded; assert(prop != NULL); assert(strcmp(SCIPpropGetName(prop), PROP_NAME) == 0); assert(result != NULL); *result = SCIP_DIDNOTRUN; /** @warning Don't run in probing or in repropagation since this can lead to wrong conclusion * * do not run if propagation w.r.t. current objective is not allowed */ if( SCIPinProbing(scip) || SCIPinRepropagation(scip) || !SCIPallowDualReds(scip) ) return SCIP_OKAY; cutoff = FALSE; unbounded = FALSE; nfixedvars = 0; SCIP_CALL( performDualfix(scip, &nfixedvars, &unbounded, &cutoff) ); /* evaluate propagation result */ if( cutoff ) *result = SCIP_CUTOFF; else if( unbounded ) *result = SCIP_UNBOUNDED; else if( nfixedvars > 0 ) *result = SCIP_REDUCEDDOM; else *result = SCIP_DIDNOTFIND; return SCIP_OKAY; }