SCIP_RETCODE GamsScip::setupSCIP() { /* #ifdef COIN_HAS_OSICPX // change default LP solver to CPLEX, if license available if( gmo != NULL && checkCplexLicense(gmo, pal) ) { SCIP_CALL( SCIPlpiSwitchSetSolver(SCIP_LPISW_CPLEX) ); } #endif */ if( scip == NULL ) { // if called first time, create a new SCIP instance and include all plugins that we need and setup interface parameters SCIP_MESSAGEHDLR* messagehdlr; SCIP_NLPI* nlpiipopt; SCIP_CALL( SCIPcreate(&scip) ); // create and install our message handler SCIP_CALL( SCIPmessagehdlrCreate(&messagehdlr, FALSE, NULL, FALSE, GamsScipPrintLogStat, GamsScipPrintLog, GamsScipPrintLog, NULL, (SCIP_MESSAGEHDLRDATA*)gev) ); SCIP_CALL( SCIPsetMessagehdlr(scip, messagehdlr) ); SCIP_CALL( SCIPmessagehdlrRelease(&messagehdlr) ); SCIP_CALL( SCIPincludeDefaultPlugins(scip) ); SCIP_CALL( SCIPincludeReaderGmo(scip) ); SCIP_CALL( SCIPincludeEventHdlrSolveTrace(scip, gmo) ); /* SCIP_CALL( SCIPincludePropDefaultBounds(scip) ); */ if( ipoptlicensed ) { nlpiipopt = SCIPfindNlpi(scip, "ipopt"); if( nlpiipopt != NULL ) { SCIPsetModifiedDefaultSettingsIpopt(nlpiipopt, "linear_solver ma27\nlinear_system_scaling mc19\n"); SCIP_CALL( SCIPincludeExternalCodeInformation(scip, "HSL MA27 and MC19", "Harwell Subroutine Libraries (www.hsl.rl.ac.uk) from commercially supported Ipopt") ); } } /* else { nlpiipopt = SCIPfindNlpi(scip, "ipopt"); if( nlpiipopt != NULL ) { SCIPsetModifiedDefaultSettingsIpopt(nlpiipopt, "linear_solver mumps\n"); } } */ /* SCIP_CALL( SCIPaddBoolParam(scip, "gams/solvefinal", * "whether the problem should be solved with fixed discrete variables to get dual values", * NULL, FALSE, TRUE, NULL, NULL) ); */ SCIP_CALL( SCIPaddBoolParam(scip, "display/statistics", "whether to print statistics on a solve", NULL, FALSE, FALSE, NULL, NULL) ); SCIP_CALL( SCIPaddStringParam(scip, "gams/interactive", "command to be issued to the SCIP shell instead of issuing a solve command", NULL, FALSE, "", NULL, NULL) ); #if 0 SCIP_CALL( SCIPaddStringParam(scip, "constraints/attrfile", "name of file that specifies constraint attributes", NULL, FALSE, "", NULL, NULL) ); #endif /* SCIP_CALL( SCIPaddStringParam(scip, "lp/solver", "LP solver to use (clp, cplex, mosek, soplex, gurobi, xpress)", NULL, FALSE, SCIP_LPISW_SOLVERNAMES[SCIPlpiSwitchGetCurrentSolver()], GamsScipParamChgdLpSolver, NULL) ); */ } else { // if called before, only clear up problem and reset parameters SCIP_CALL( SCIPfreeProb(scip) ); SCIP_CALL( SCIPresetParams(scip) ); } /** pass current GMO into GMO reader, so it does not read instance from file */ SCIPsetGMOReaderGmo(scip, gmo); return SCIP_OKAY; }
/** includes default SCIP plugins into SCIP */ SCIP_RETCODE SCIPincludeDefaultPlugins( SCIP* scip /**< SCIP data structure */ ) { SCIP_NLPI* nlpi; SCIP_CALL( SCIPincludeConshdlrNonlinear(scip) ); /* nonlinear must be before linear, quadratic, abspower, and and due to constraint upgrading */ SCIP_CALL( SCIPincludeConshdlrQuadratic(scip) ); /* quadratic must be before linear due to constraint upgrading */ SCIP_CALL( SCIPincludeConshdlrLinear(scip) ); /* linear must be before its specializations due to constraint upgrading */ SCIP_CALL( SCIPincludeConshdlrAbspower(scip) ); /* absolute power needs to be after quadratic and nonlinear due to constraint upgrading */ SCIP_CALL( SCIPincludeConshdlrAnd(scip) ); SCIP_CALL( SCIPincludeConshdlrBivariate(scip) ); /* bivariate needs to be after quadratic and nonlinear due to constraint upgrading */ SCIP_CALL( SCIPincludeConshdlrBounddisjunction(scip) ); SCIP_CALL( SCIPincludeConshdlrConjunction(scip) ); SCIP_CALL( SCIPincludeConshdlrCountsols(scip) ); SCIP_CALL( SCIPincludeConshdlrCumulative(scip) ); SCIP_CALL( SCIPincludeConshdlrDisjunction(scip) ); SCIP_CALL( SCIPincludeConshdlrIndicator(scip) ); SCIP_CALL( SCIPincludeConshdlrIntegral(scip) ); SCIP_CALL( SCIPincludeConshdlrKnapsack(scip) ); SCIP_CALL( SCIPincludeConshdlrLinking(scip) ); SCIP_CALL( SCIPincludeConshdlrLogicor(scip) ); SCIP_CALL( SCIPincludeConshdlrOr(scip) ); SCIP_CALL( SCIPincludeConshdlrOrbitope(scip) ); SCIP_CALL( SCIPincludeConshdlrPseudoboolean(scip) ); SCIP_CALL( SCIPincludeConshdlrSetppc(scip) ); SCIP_CALL( SCIPincludeConshdlrSOC(scip) ); /* SOC needs to be after quadratic due to constraint upgrading */ SCIP_CALL( SCIPincludeConshdlrSOS1(scip) ); SCIP_CALL( SCIPincludeConshdlrSOS2(scip) ); SCIP_CALL( SCIPincludeConshdlrSuperindicator(scip) ); SCIP_CALL( SCIPincludeConshdlrVarbound(scip) ); SCIP_CALL( SCIPincludeConshdlrXor(scip) ); SCIP_CALL( SCIPincludeReaderBnd(scip) ); SCIP_CALL( SCIPincludeReaderCcg(scip) ); SCIP_CALL( SCIPincludeReaderCip(scip) ); SCIP_CALL( SCIPincludeReaderCnf(scip) ); SCIP_CALL( SCIPincludeReaderFix(scip) ); SCIP_CALL( SCIPincludeReaderFzn(scip) ); SCIP_CALL( SCIPincludeReaderGms(scip) ); SCIP_CALL( SCIPincludeReaderLp(scip) ); SCIP_CALL( SCIPincludeReaderMps(scip) ); SCIP_CALL( SCIPincludeReaderOpb(scip) ); SCIP_CALL( SCIPincludeReaderOsil(scip) ); SCIP_CALL( SCIPincludeReaderPip(scip) ); SCIP_CALL( SCIPincludeReaderPpm(scip) ); SCIP_CALL( SCIPincludeReaderPbm(scip) ); SCIP_CALL( SCIPincludeReaderRlp(scip) ); SCIP_CALL( SCIPincludeReaderSol(scip) ); SCIP_CALL( SCIPincludeReaderWbo(scip) ); SCIP_CALL( SCIPincludeReaderZpl(scip) ); SCIP_CALL( SCIPincludePresolBoundshift(scip) ); SCIP_CALL( SCIPincludePresolComponents(scip) ); SCIP_CALL( SCIPincludePresolConvertinttobin(scip) ); SCIP_CALL( SCIPincludePresolDomcol(scip) ); SCIP_CALL( SCIPincludePresolDualinfer(scip) ); SCIP_CALL( SCIPincludePresolGateextraction(scip) ); SCIP_CALL( SCIPincludePresolImplics(scip) ); SCIP_CALL( SCIPincludePresolInttobinary(scip) ); SCIP_CALL( SCIPincludePresolTrivial(scip) ); SCIP_CALL( SCIPincludeNodeselBfs(scip) ); SCIP_CALL( SCIPincludeNodeselBreadthfirst(scip) ); SCIP_CALL( SCIPincludeNodeselDfs(scip) ); SCIP_CALL( SCIPincludeNodeselEstimate(scip) ); SCIP_CALL( SCIPincludeNodeselHybridestim(scip) ); SCIP_CALL( SCIPincludeNodeselRestartdfs(scip) ); SCIP_CALL( SCIPincludeNodeselUct(scip) ); SCIP_CALL( SCIPincludeBranchruleAllfullstrong(scip) ); SCIP_CALL( SCIPincludeBranchruleCloud(scip) ); SCIP_CALL( SCIPincludeBranchruleFullstrong(scip) ); SCIP_CALL( SCIPincludeBranchruleInference(scip) ); SCIP_CALL( SCIPincludeBranchruleLeastinf(scip) ); SCIP_CALL( SCIPincludeBranchruleMostinf(scip) ); SCIP_CALL( SCIPincludeBranchrulePscost(scip) ); SCIP_CALL( SCIPincludeBranchruleRandom(scip) ); SCIP_CALL( SCIPincludeBranchruleRelpscost(scip) ); SCIP_CALL( SCIPincludeHeurActconsdiving(scip) ); SCIP_CALL( SCIPincludeHeurClique(scip) ); SCIP_CALL( SCIPincludeHeurCoefdiving(scip) ); SCIP_CALL( SCIPincludeHeurCrossover(scip) ); SCIP_CALL( SCIPincludeHeurDins(scip) ); SCIP_CALL( SCIPincludeHeurDualval(scip) ); SCIP_CALL( SCIPincludeHeurFeaspump(scip) ); SCIP_CALL( SCIPincludeHeurFixandinfer(scip) ); SCIP_CALL( SCIPincludeHeurFracdiving(scip) ); SCIP_CALL( SCIPincludeHeurGuideddiving(scip) ); SCIP_CALL( SCIPincludeHeurZeroobj(scip) ); SCIP_CALL( SCIPincludeHeurIntdiving(scip) ); SCIP_CALL( SCIPincludeHeurIntshifting(scip) ); SCIP_CALL( SCIPincludeHeurLinesearchdiving(scip) ); SCIP_CALL( SCIPincludeHeurLocalbranching(scip) ); SCIP_CALL( SCIPincludeHeurNlpdiving(scip) ); SCIP_CALL( SCIPincludeHeurMutation(scip) ); SCIP_CALL( SCIPincludeHeurObjpscostdiving(scip) ); SCIP_CALL( SCIPincludeHeurOctane(scip) ); SCIP_CALL( SCIPincludeHeurOneopt(scip) ); SCIP_CALL( SCIPincludeHeurProximity(scip) ); SCIP_CALL( SCIPincludeHeurPscostdiving(scip) ); SCIP_CALL( SCIPincludeHeurRandrounding(scip) ); SCIP_CALL( SCIPincludeHeurRens(scip) ); SCIP_CALL( SCIPincludeHeurRins(scip) ); SCIP_CALL( SCIPincludeHeurRootsoldiving(scip) ); SCIP_CALL( SCIPincludeHeurRounding(scip) ); SCIP_CALL( SCIPincludeHeurShiftandpropagate(scip) ); SCIP_CALL( SCIPincludeHeurShifting(scip) ); SCIP_CALL( SCIPincludeHeurSimplerounding(scip) ); SCIP_CALL( SCIPincludeHeurSubNlp(scip) ); SCIP_CALL( SCIPincludeHeurTrivial(scip) ); SCIP_CALL( SCIPincludeHeurTrySol(scip) ); SCIP_CALL( SCIPincludeHeurTwoopt(scip) ); SCIP_CALL( SCIPincludeHeurUndercover(scip) ); SCIP_CALL( SCIPincludeHeurVbounds(scip) ); SCIP_CALL( SCIPincludeHeurVeclendiving(scip) ); SCIP_CALL( SCIPincludeHeurZirounding(scip) ); SCIP_CALL( SCIPincludePropDualfix(scip) ); SCIP_CALL( SCIPincludePropGenvbounds(scip) ); SCIP_CALL( SCIPincludePropObbt(scip) ); SCIP_CALL( SCIPincludePropProbing(scip) ); SCIP_CALL( SCIPincludePropPseudoobj(scip) ); SCIP_CALL( SCIPincludePropRedcost(scip) ); SCIP_CALL( SCIPincludePropRootredcost(scip) ); SCIP_CALL( SCIPincludePropVbounds(scip) ); SCIP_CALL( SCIPincludeSepaCGMIP(scip) ); SCIP_CALL( SCIPincludeSepaClique(scip) ); SCIP_CALL( SCIPincludeSepaClosecuts(scip) ); SCIP_CALL( SCIPincludeSepaCmir(scip) ); SCIP_CALL( SCIPincludeSepaFlowcover(scip) ); SCIP_CALL( SCIPincludeSepaGomory(scip) ); SCIP_CALL( SCIPincludeSepaImpliedbounds(scip) ); SCIP_CALL( SCIPincludeSepaIntobj(scip) ); SCIP_CALL( SCIPincludeSepaMcf(scip) ); SCIP_CALL( SCIPincludeSepaOddcycle(scip) ); SCIP_CALL( SCIPincludeSepaRapidlearning(scip) ); SCIP_CALL( SCIPincludeSepaStrongcg(scip) ); SCIP_CALL( SCIPincludeSepaZerohalf(scip) ); SCIP_CALL( SCIPincludeDispDefault(scip) ); /* include NLPI's, if available */ SCIP_CALL( SCIPcreateNlpSolverIpopt(SCIPblkmem(scip), &nlpi) ); if( nlpi != NULL ) { SCIP_CALL( SCIPincludeNlpi(scip, nlpi) ); SCIP_CALL( SCIPincludeExternalCodeInformation(scip, SCIPgetSolverNameIpopt(), SCIPgetSolverDescIpopt()) ); } SCIP_CALL( SCIPdebugIncludeProp(scip) ); /*lint !e506 !e774*/ return SCIP_OKAY; }