41#define NLPI_NAME "all"
42#define NLPI_DESC "NLP interface that uses all available NLP interfaces"
43#define NLPI_PRIORITY -3000
116 (*problem)->nnlpiproblems = data->nnlpis;
118 for(
i = 0;
i < data->nnlpis; ++
i )
121 SCIP_CALL( SCIPcreateNlpiProblem(
scip, data->nlpis[
i], &((*problem)->nlpiproblems[
i]), name) );
141 for(
i = 0;
i < data->nnlpis; ++
i )
144 SCIP_CALL( SCIPfreeNlpiProblem(
scip, data->nlpis[
i], &(*problem)->nlpiproblems[
i]) );
163 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
168 SCIP_CALL( SCIPaddNlpiVars(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i],
nvars, lbs, ubs, varnames) );
185 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
190 SCIP_CALL( SCIPaddNlpiConstraints(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], nconss, lhss, rhss,
191 nlininds, lininds, linvals, exprs, names) );
207 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
212 SCIP_CALL( SCIPsetNlpiObjective(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], nlins, lininds, linvals, expr, constant) );
228 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
233 SCIP_CALL( SCIPchgNlpiVarBounds(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i],
nvars, indices, lbs, ubs) );
249 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
254 SCIP_CALL( SCIPchgNlpiConsSides(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], nconss, indices, lhss, rhss) );
273 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
283 SCIP_CALL( SCIPdelNlpiVarSet(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], tmpdstats, dstatssize) );
291 SCIP_CALL( SCIPdelNlpiVarSet(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], dstats, dstatssize) );
313 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
323 SCIP_CALL( SCIPdelNlpiConsSet(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], tmpdstats, dstatssize) );
331 SCIP_CALL( SCIPdelNlpiConsSet(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], dstats, dstatssize) );
350 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
355 SCIP_CALL( SCIPchgNlpiLinearCoefs(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], idx, nvals, varidxs, vals) );
371 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
376 SCIP_CALL( SCIPchgNlpiExpr(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], idxcons, expr) );
392 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
397 SCIP_CALL( SCIPchgNlpiObjConstant(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], objconstant) );
413 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
418 SCIP_CALL( SCIPsetNlpiInitialGuess(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], primalvalues, consdualvalues,
419 varlbdualvalues, varubdualvalues) );
439 problem->bestidx = 0;
446 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
457 SCIP_CALL( SCIPsolveNlpiParam(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], param) );
459 termstat = SCIPgetNlpiTermstat(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i]);
460 solstat = SCIPgetNlpiSolstat(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i]);
467 SCIP_CALL( SCIPgetNlpiSolution(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i],
473 if( termstat < besttermstat )
481 else if( solval < bestsolval )
487 besttermstat = termstat;
488 bestsolstat = solstat;
490 problem->bestidx =
i;
497 SCIP_CALL( SCIPgetNlpiStatistics(
scip, nlpidata->nlpis[
i], problem->nlpiproblems[
i], &stats) );
526 assert(nlpidata->nlpis[problem->bestidx] !=
NULL);
528 assert(problem->nlpiproblems[problem->bestidx] !=
NULL);
531 return SCIPgetNlpiSolstat(
scip, nlpidata->nlpis[problem->bestidx], problem->nlpiproblems[problem->bestidx]);
543 assert(nlpidata->nlpis[problem->bestidx] !=
NULL);
545 assert(problem->nlpiproblems[problem->bestidx] !=
NULL);
548 return SCIPgetNlpiTermstat(
scip, nlpidata->nlpis[problem->bestidx], problem->nlpiproblems[problem->bestidx]);
560 assert(nlpidata->nlpis[problem->bestidx] !=
NULL);
562 assert(problem->nlpiproblems[problem->bestidx] !=
NULL);
565 SCIP_CALL( SCIPgetNlpiSolution(
scip, nlpidata->nlpis[problem->bestidx], problem->nlpiproblems[problem->bestidx],
566 primalvalues, consdualvalues, varlbdualvalues, varubdualvalues,
objval) );
580 assert(nlpidata->nlpis[problem->bestidx] !=
NULL);
582 assert(problem->nlpiproblems[problem->bestidx] !=
NULL);
585 SCIP_CALL( SCIPgetNlpiStatistics(
scip, nlpidata->nlpis[problem->bestidx], problem->nlpiproblems[problem->bestidx],
619 for(
i = 0;
i < nlpidata->nnlpis; ++
i )
625 nlpiCopyAll, nlpiFreeAll,
NULL,
626 nlpiCreateProblemAll, nlpiFreeProblemAll,
NULL,
627 nlpiAddVarsAll, nlpiAddConstraintsAll, nlpiSetObjectiveAll,
628 nlpiChgVarBoundsAll, nlpiChgConsSidesAll, nlpiDelVarSetAll, nlpiDelConstraintSetAll,
629 nlpiChgLinearCoefsAll, nlpiChgExprAll,
630 nlpiChgObjConstantAll, nlpiSetInitialGuessAll, nlpiSolveAll, nlpiGetSolstatAll, nlpiGetTermstatAll,
631 nlpiGetSolutionAll, nlpiGetStatisticsAll,
SCIP_RETCODE SCIPincludeNlpSolverAll(SCIP *scip)
#define SCIPfreeBlockMemoryArray(scip, ptr, num)
#define SCIPallocClearBlockMemory(scip, ptr)
#define SCIPallocBlockMemoryArray(scip, ptr, num)
#define SCIPfreeBlockMemory(scip, ptr)
#define SCIPfreeBlockMemoryArrayNull(scip, ptr, num)
SCIP_RETCODE SCIPincludeNlpi(SCIP *scip, const char *name, const char *description, int priority, SCIP_DECL_NLPICOPY((*nlpicopy)), SCIP_DECL_NLPIFREE((*nlpifree)), SCIP_DECL_NLPIGETSOLVERPOINTER((*nlpigetsolverpointer)), SCIP_DECL_NLPICREATEPROBLEM((*nlpicreateproblem)), SCIP_DECL_NLPIFREEPROBLEM((*nlpifreeproblem)), SCIP_DECL_NLPIGETPROBLEMPOINTER((*nlpigetproblempointer)), SCIP_DECL_NLPIADDVARS((*nlpiaddvars)), SCIP_DECL_NLPIADDCONSTRAINTS((*nlpiaddconstraints)), SCIP_DECL_NLPISETOBJECTIVE((*nlpisetobjective)), SCIP_DECL_NLPICHGVARBOUNDS((*nlpichgvarbounds)), SCIP_DECL_NLPICHGCONSSIDES((*nlpichgconssides)), SCIP_DECL_NLPIDELVARSET((*nlpidelvarset)), SCIP_DECL_NLPIDELCONSSET((*nlpidelconsset)), SCIP_DECL_NLPICHGLINEARCOEFS((*nlpichglinearcoefs)), SCIP_DECL_NLPICHGEXPR((*nlpichgexpr)), SCIP_DECL_NLPICHGOBJCONSTANT((*nlpichgobjconstant)), SCIP_DECL_NLPISETINITIALGUESS((*nlpisetinitialguess)), SCIP_DECL_NLPISOLVE((*nlpisolve)), SCIP_DECL_NLPIGETSOLSTAT((*nlpigetsolstat)), SCIP_DECL_NLPIGETTERMSTAT((*nlpigettermstat)), SCIP_DECL_NLPIGETSOLUTION((*nlpigetsolution)), SCIP_DECL_NLPIGETSTATISTICS((*nlpigetstatistics)), SCIP_NLPIDATA *nlpidata)
SCIP_NLPIDATA * SCIPnlpiGetData(SCIP_NLPI *nlpi)
const char * SCIPnlpiGetName(SCIP_NLPI *nlpi)
int SCIPgetNNlpis(SCIP *scip)
SCIP_NLPI ** SCIPgetNlpis(SCIP *scip)
SCIP_Real SCIPinfinity(SCIP *scip)
SCIP_Bool SCIPisInfinity(SCIP *scip, SCIP_Real val)
assert(minobj< SCIPgetCutoffbound(scip))
#define BMScopyMemoryArray(ptr, source, num)
NLP interface that uses all available NLP interfaces.
public methods for message output
#define SCIPstatisticMessage
public methods for memory management
public methods for NLPI solver interfaces
public methods for numerical tolerances
SCIP_NLPIPROBLEM ** nlpiproblems
#define SCIP_DECL_NLPISOLVE(x)
struct SCIP_NlpiProblem SCIP_NLPIPROBLEM
struct SCIP_NlpStatistics SCIP_NLPSTATISTICS
#define SCIP_DECL_NLPICHGLINEARCOEFS(x)
#define SCIP_DECL_NLPICHGOBJCONSTANT(x)
#define SCIP_DECL_NLPIGETSOLUTION(x)
#define SCIP_DECL_NLPISETOBJECTIVE(x)
#define SCIP_DECL_NLPICREATEPROBLEM(x)
#define SCIP_DECL_NLPIGETSTATISTICS(x)
#define SCIP_DECL_NLPIDELCONSSET(x)
#define SCIP_DECL_NLPICHGCONSSIDES(x)
struct SCIP_Nlpi SCIP_NLPI
#define SCIP_DECL_NLPIDELVARSET(x)
#define SCIP_DECL_NLPICHGEXPR(x)
#define SCIP_DECL_NLPIADDVARS(x)
enum SCIP_NlpSolStat SCIP_NLPSOLSTAT
#define SCIP_DECL_NLPISETINITIALGUESS(x)
#define SCIP_DECL_NLPIFREEPROBLEM(x)
@ SCIP_NLPTERMSTAT_TIMELIMIT
@ SCIP_NLPTERMSTAT_INTERRUPT
#define SCIP_DECL_NLPICOPY(x)
#define SCIP_DECL_NLPIGETSOLSTAT(x)
#define SCIP_DECL_NLPICHGVARBOUNDS(x)
#define SCIP_DECL_NLPIFREE(x)
#define SCIP_DECL_NLPIADDCONSTRAINTS(x)
@ SCIP_NLPSOLSTAT_LOCINFEASIBLE
@ SCIP_NLPSOLSTAT_FEASIBLE
@ SCIP_NLPSOLSTAT_UNKNOWN
#define SCIP_DECL_NLPIGETTERMSTAT(x)
enum SCIP_NlpTermStat SCIP_NLPTERMSTAT
struct SCIP_NlpiData SCIP_NLPIDATA
enum SCIP_Retcode SCIP_RETCODE