methods for handling NLP solver interface
Definition in file nlpi.c.
#include <stdio.h>#include <assert.h>#include <string.h>#include "scip/nlpi.h"#include "scip/pub_message.h"#include "scip/pub_nlpi.h"#include "scip/clock.h"#include "scip/struct_nlpi.h"#include "scip/struct_set.h"#include "scip/struct_stat.h"Go to the source code of this file.
| SCIP_RETCODE SCIPnlpiCreate | ( | SCIP_NLPI ** | nlpi, |
| 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 ) |
creates an NLP solver interface
| nlpi | pointer to NLP interface data structure |
| name | name of NLP interface |
| description | description of NLP interface |
| priority | priority of NLP interface |
| nlpidata | NLP interface local data |
Definition at line 53 of file nlpi.c.
References assert(), BMSallocClearMemory, BMSduplicateMemoryArray, BMSfreeMemory, BMSfreeMemoryArray, NULL, SCIP_ALLOC, SCIP_CLOCKTYPE_DEFAULT, SCIP_DECL_NLPIADDCONSTRAINTS, SCIP_DECL_NLPIADDVARS, SCIP_DECL_NLPICHGCONSSIDES, SCIP_DECL_NLPICHGEXPR, SCIP_DECL_NLPICHGLINEARCOEFS, SCIP_DECL_NLPICHGOBJCONSTANT, SCIP_DECL_NLPICHGVARBOUNDS, SCIP_DECL_NLPICOPY, SCIP_DECL_NLPICREATEPROBLEM, SCIP_DECL_NLPIDELCONSSET, SCIP_DECL_NLPIDELVARSET, SCIP_DECL_NLPIFREE, SCIP_DECL_NLPIFREEPROBLEM, SCIP_DECL_NLPIGETPROBLEMPOINTER, SCIP_DECL_NLPIGETSOLSTAT, SCIP_DECL_NLPIGETSOLUTION, SCIP_DECL_NLPIGETSOLVERPOINTER, SCIP_DECL_NLPIGETSTATISTICS, SCIP_DECL_NLPIGETTERMSTAT, SCIP_DECL_NLPISETINITIALGUESS, SCIP_DECL_NLPISETOBJECTIVE, SCIP_DECL_NLPISOLVE, SCIP_NOMEMORY, SCIP_OKAY, and SCIPclockCreate().
Referenced by SCIPincludeNlpi().
| void SCIPnlpiSetPriority | ( | SCIP_NLPI * | nlpi, |
| int | priority ) |
sets NLP solver priority
| nlpi | NLP interface structure |
| priority | new priority of NLPI |
Definition at line 156 of file nlpi.c.
References assert(), NULL, and SCIP_Nlpi::priority.
| SCIP_RETCODE SCIPnlpiCopyInclude | ( | SCIP_NLPI * | sourcenlpi, |
| SCIP_SET * | targetset ) |
copies an NLPI and includes it into another SCIP instance
| sourcenlpi | the NLP interface to copy |
| targetset | global SCIP settings where to include copy |
Definition at line 167 of file nlpi.c.
References assert(), NULL, SCIP_Set::scip, SCIP_CALL, and SCIP_OKAY.
Referenced by SCIPsetCopyPlugins().
| SCIP_RETCODE SCIPnlpiFree | ( | SCIP_NLPI ** | nlpi, |
| SCIP_SET * | set ) |
frees NLPI
Definition at line 184 of file nlpi.c.
References assert(), BMSfreeMemory, BMSfreeMemoryArray, SCIP_Nlpi::nlpidata, NULL, SCIP_CALL, SCIP_OKAY, and SCIPclockFree().
| void SCIPnlpiInit | ( | SCIP_NLPI * | nlpi | ) |
initializes NLPI
| nlpi | solver interface |
Definition at line 211 of file nlpi.c.
References assert(), BMSclearMemoryArray, SCIP_Nlpi::evaltime, SCIP_Nlpi::niter, SCIP_Nlpi::nproblems, SCIP_Nlpi::nsolstat, SCIP_Nlpi::nsolves, SCIP_Nlpi::ntermstat, NULL, SCIP_Nlpi::problemtime, SCIP_NLPSOLSTAT_UNKNOWN, SCIP_NLPTERMSTAT_OTHER, SCIPclockReset(), and SCIP_Nlpi::solvetime.
| void * SCIPnlpiGetSolverPointer | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem ) |
| SCIP_RETCODE SCIPnlpiCreateProblem | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM ** | problem, | ||
| const char * | name ) |
creates a problem instance
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem pointer to store the problem data |
| name | name of problem, can be NULL |
Definition at line 244 of file nlpi.c.
References assert(), SCIP_Nlpi::nproblems, NULL, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), and SCIPclockStop().
Referenced by SCIP_DECL_NLPICREATEPROBLEM(), SCIPcreateNlpiProblemFromNlRows(), and SCIPnlpCreate().
| SCIP_RETCODE SCIPnlpiFreeProblem | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM ** | problem ) |
frees a problem instance
| set | global SCIP settings |
| nlpi | solver interface |
| problem | pointer where problem instance is stored |
Definition at line 266 of file nlpi.c.
References assert(), NULL, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), and SCIPclockStop().
Referenced by SCIP_DECL_NLPIFREEPROBLEM(), and SCIPnlpFree().
| void * SCIPnlpiGetProblemPointer | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem ) |
| SCIP_RETCODE SCIPnlpiAddVars | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| int | nvars, | ||
| const SCIP_Real * | lbs, | ||
| const SCIP_Real * | ubs, | ||
| const char ** | varnames ) |
add variables to nlpi
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| nvars | number of variables |
| lbs | lower bounds of variables, can be NULL if -infinity |
| ubs | upper bounds of variables, can be NULL if +infinity |
| varnames | names of variables, can be NULL |
Definition at line 302 of file nlpi.c.
References assert(), NULL, nvars, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPclockStart(), and SCIPclockStop().
Referenced by nlpFlushVarAdditions(), and SCIP_DECL_NLPIADDVARS().
| SCIP_RETCODE SCIPnlpiAddConstraints | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| int | nconss, | ||
| const SCIP_Real * | lhss, | ||
| const SCIP_Real * | rhss, | ||
| const int * | nlininds, | ||
| int *const * | lininds, | ||
| SCIP_Real *const * | linvals, | ||
| SCIP_EXPR ** | exprs, | ||
| const char ** | names ) |
add constraints to nlpi
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| nconss | number of constraints |
| lhss | left hand sides of constraints, can be NULL if -infinity |
| rhss | right hand sides of constraints, can be NULL if +infinity |
| nlininds | number of linear coefficients for each constraint, may be NULL in case of no linear part |
| lininds | indices of variables for linear coefficients for each constraint, may be NULL in case of no linear part |
| linvals | values of linear coefficient for each constraint, may be NULL in case of no linear part |
| exprs | expressions for nonlinear part of constraints, entry of array may be NULL in case of no nonlinear part, may be NULL in case of no nonlinear part in any constraint |
| names | names of constraints, may be NULL or entries may be NULL |
Definition at line 325 of file nlpi.c.
References assert(), NULL, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPclockStart(), and SCIPclockStop().
Referenced by nlpFlushNlRowAdditions(), and SCIP_DECL_NLPIADDCONSTRAINTS().
| SCIP_RETCODE SCIPnlpiSetObjective | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| int | nlins, | ||
| const int * | lininds, | ||
| const SCIP_Real * | linvals, | ||
| SCIP_EXPR * | expr, | ||
| const SCIP_Real | constant ) |
sets or overwrites objective, a minimization problem is expected
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| nlins | number of linear variables |
| lininds | variable indices, may be NULL in case of no linear part |
| linvals | coefficient values, may be NULL in case of no linear part |
| expr | expression for nonlinear part of objective function, may be NULL in case of no nonlinear part |
| constant | objective value offset |
Definition at line 352 of file nlpi.c.
References assert(), NULL, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPclockStart(), and SCIPclockStop().
Referenced by nlpFlushObjective(), and SCIP_DECL_NLPISETOBJECTIVE().
| SCIP_RETCODE SCIPnlpiChgVarBounds | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| const int | nvars, | ||
| const int * | indices, | ||
| const SCIP_Real * | lbs, | ||
| const SCIP_Real * | ubs ) |
change variable bounds
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| nvars | number of variables to change bounds |
| indices | indices of variables to change bounds |
| lbs | new lower bounds |
| ubs | new upper bounds |
Definition at line 376 of file nlpi.c.
References assert(), NULL, nvars, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPclockStart(), and SCIPclockStop().
Referenced by nlpUpdateVarBounds(), SCIP_DECL_NLPICHGVARBOUNDS(), SCIPnlpChgVarBoundsDive(), SCIPnlpChgVarsBoundsDive(), and SCIPnlpEndDive().
| SCIP_RETCODE SCIPnlpiChgConsSides | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| int | nconss, | ||
| const int * | indices, | ||
| const SCIP_Real * | lhss, | ||
| const SCIP_Real * | rhss ) |
change constraint sides
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| nconss | number of constraints to change sides |
| indices | indices of constraints to change sides |
| lhss | new left hand sides |
| rhss | new right hand sides |
Definition at line 399 of file nlpi.c.
References assert(), NULL, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPclockStart(), and SCIPclockStop().
Referenced by nlrowConstantChanged(), nlrowSideChanged(), and SCIP_DECL_NLPICHGCONSSIDES().
| SCIP_RETCODE SCIPnlpiDelVarSet | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| int * | dstats, | ||
| int | dstatssize ) |
delete a set of variables
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| dstats | deletion status of vars; 1 if var should be deleted, 0 if not |
| dstatssize | size of the dstats array |
Definition at line 422 of file nlpi.c.
References assert(), NULL, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), and SCIPclockStop().
Referenced by nlpFlushVarDeletions(), and SCIP_DECL_NLPIDELVARSET().
| SCIP_RETCODE SCIPnlpiDelConsSet | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| int * | dstats, | ||
| int | dstatssize ) |
delete a set of constraints
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| dstats | deletion status of constraints; 1 if constraint should be deleted, 0 if not |
| dstatssize | size of the dstats array |
Definition at line 443 of file nlpi.c.
References assert(), NULL, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), and SCIPclockStop().
Referenced by nlpFlushNlRowDeletions(), and SCIP_DECL_NLPIDELCONSSET().
| SCIP_RETCODE SCIPnlpiChgLinearCoefs | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| int | idx, | ||
| int | nvals, | ||
| const int * | varidxs, | ||
| const SCIP_Real * | vals ) |
changes or adds linear coefficients in a constraint or objective
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| idx | index of constraint or -1 for objective |
| nvals | number of values in linear constraint to change |
| varidxs | indices of variables which coefficient to change |
| vals | new values for coefficients |
Definition at line 464 of file nlpi.c.
References assert(), NULL, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPclockStart(), and SCIPclockStop().
Referenced by nlpUpdateObjCoef(), nlrowLinearCoefChanged(), SCIP_DECL_NLPICHGLINEARCOEFS(), and SCIPnlpChgVarObjDive().
| SCIP_RETCODE SCIPnlpiChgExpr | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| int | idxcons, | ||
| SCIP_EXPR * | expr ) |
change the expression in the nonlinear part
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| idxcons | index of constraint or -1 for objective |
| expr | new expression for constraint or objective, or NULL to only remove previous tree |
Definition at line 487 of file nlpi.c.
References assert(), NULL, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIPclockStart(), and SCIPclockStop().
Referenced by nlrowExprChanged(), and SCIP_DECL_NLPICHGEXPR().
| SCIP_RETCODE SCIPnlpiChgObjConstant | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| SCIP_Real | objconstant ) |
change the constant offset in the objective
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| objconstant | new value for objective constant |
Definition at line 508 of file nlpi.c.
References assert(), NULL, SCIP_Nlpi::problemtime, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPclockStart(), and SCIPclockStop().
Referenced by SCIP_DECL_NLPICHGOBJCONSTANT().
| SCIP_RETCODE SCIPnlpiSetInitialGuess | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| SCIP_Real * | primalvalues, | ||
| SCIP_Real * | consdualvalues, | ||
| SCIP_Real * | varlbdualvalues, | ||
| SCIP_Real * | varubdualvalues ) |
sets initial guess for primal variables
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| primalvalues | initial primal values for variables, or NULL to clear previous values |
| consdualvalues | initial dual values for constraints, or NULL to clear previous values |
| varlbdualvalues | initial dual values for variable lower bounds, or NULL to clear previous values |
| varubdualvalues | initial dual values for variable upper bounds, or NULL to clear previous values |
Definition at line 528 of file nlpi.c.
References assert(), NULL, SCIP_CALL, SCIP_OKAY, and SCIP_Real.
Referenced by nlpSolve(), SCIP_DECL_NLPISETINITIALGUESS(), and SCIPnlpSetInitialGuess().
| SCIP_RETCODE SCIPnlpiSolve | ( | SCIP_SET * | set, |
| SCIP_STAT * | stat, | ||
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| SCIP_NLPPARAM * | param ) |
tries to solve NLP
| set | global SCIP settings |
| stat | problem statistics |
| nlpi | solver interface |
| problem | problem instance |
| param | solve parameters |
Definition at line 551 of file nlpi.c.
References assert(), SCIP_Nlpi::evaltime, SCIP_NlpStatistics::evaltime, SCIP_NlpParam::feastol, SCIP_NlpParam::iterlimit, SCIP_Nlpi::niter, SCIP_NlpStatistics::niterations, SCIP_Nlpi::nsolstat, SCIP_Nlpi::nsolves, SCIP_Nlpi::ntermstat, NULL, SCIP_NlpParam::opttol, SCIP_CALL, SCIP_OKAY, SCIP_PARAMETERWRONGVAL, SCIP_REAL_MAX, SCIPclockGetTime(), SCIPerrorMessage, SCIP_NlpParam::solvertol, SCIP_Nlpi::solvetime, SCIP_Stat::solvingtime, SCIP_NlpParam::timelimit, and SCIP_NlpStatistics::totaltime.
Referenced by nlpSolve(), and SCIP_DECL_NLPISOLVE().
| SCIP_NLPSOLSTAT SCIPnlpiGetSolstat | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem ) |
gives solution status
Definition at line 621 of file nlpi.c.
References assert(), and NULL.
Referenced by nlpSolve(), and SCIP_DECL_NLPIGETSOLSTAT().
| SCIP_NLPTERMSTAT SCIPnlpiGetTermstat | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem ) |
gives termination reason
Definition at line 636 of file nlpi.c.
References assert(), and NULL.
Referenced by nlpSolve(), and SCIP_DECL_NLPIGETTERMSTAT().
| SCIP_RETCODE SCIPnlpiGetSolution | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| SCIP_Real ** | primalvalues, | ||
| SCIP_Real ** | consdualvalues, | ||
| SCIP_Real ** | varlbdualvalues, | ||
| SCIP_Real ** | varubdualvalues, | ||
| SCIP_Real * | objval ) |
gives primal and dual solution for a ranged constraint, the dual variable is positive if the right hand side is active and negative if the left hand side is active
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| primalvalues | buffer to store pointer to array to primal values, or NULL if not needed |
| consdualvalues | buffer to store pointer to array to dual values of constraints, or NULL if not needed |
| varlbdualvalues | buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed |
| varubdualvalues | buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed |
| objval | pointer to store the objective value, or NULL if not needed |
Definition at line 653 of file nlpi.c.
References assert(), NULL, objval, SCIP_CALL, SCIP_OKAY, and SCIP_Real.
Referenced by nlpSolve(), and SCIP_DECL_NLPIGETSOLUTION().
| SCIP_RETCODE SCIPnlpiGetStatistics | ( | SCIP_SET * | set, |
| SCIP_NLPI * | nlpi, | ||
| SCIP_NLPIPROBLEM * | problem, | ||
| SCIP_NLPSTATISTICS * | statistics ) |
gives solve statistics
| set | global SCIP settings |
| nlpi | solver interface |
| problem | problem instance |
| statistics | pointer to store statistics |
Definition at line 675 of file nlpi.c.
References assert(), NULL, SCIP_CALL, and SCIP_OKAY.
Referenced by SCIP_DECL_NLPIGETSTATISTICS(), and SCIPnlpGetStatistics().