nlpi_ipopt.cpp
Go to the documentation of this file.
23 * @todo use new_x: Ipopt sets new_x = false if any function has been evaluated for the current x already, while oracle allows new_x to be false only if the current function has been evaluated for the current x before 30 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ 72 #define FEASTOLFACTOR 0.05 /**< factor for user-given feasibility tolerance to get feasibility tolerance that is actually passed to Ipopt */ 82 * The targets are updated once they are reached and the limit on allowed iterations to reach the new target is reset. 90 * it is unlikely that Ipopt will continue to decrease primal infeasibility, since it may now target on 92 * - If the target on dual infeasibility reduction has been achieved, we are below twice the iteration limit, and 96 * However, in restoration mode, dual infeasibility does not correspond to the original problem and 100 static const int convcheck_startiter = 10; /**< iteration where to start convergence checking */ 101 static const int convcheck_maxiter[convcheck_nchecks] = { 5, 15, 30 }; /**< maximal number of iterations to achieve each convergence check */ 102 static const SCIP_Real convcheck_minred[convcheck_nchecks] = { 1.0, 0.5, 0.1 }; /**< minimal required infeasibility reduction in each convergence check */ 135 SCIP_Bool firstrun; /**< whether the next NLP solve will be the first one (with the current problem structure) */ 141 SCIP_Real* lastsoldualcons; /**< dual solution values of constraints from last run, if available */ 142 SCIP_Real* lastsoldualvarlb; /**< dual solution values of variable lower bounds from last run, if available */ 143 SCIP_Real* lastsoldualvarub; /**< dual solution values of variable upper bounds from last run, if available */ 144 SCIP_Real lastsolinfeas;/**< infeasibility (constraint violation) of solution stored in lastsolprimals */ 165 SCIP_Real conv_prtarget[convcheck_nchecks]; /**< target primal infeasibility for each convergence check */ 166 SCIP_Real conv_dutarget[convcheck_nchecks]; /**< target dual infeasibility for each convergence check */ 167 int conv_iterlim[convcheck_nchecks]; /**< iteration number where target primal infeasibility should to be achieved */ 171 bool approxhessian; /**< do we tell Ipopt to approximate the hessian? (may also be false if user set to approx. hessian via option file) */ 259 bool new_x, /**< whether some function evaluation method has been called for this point before */ 267 bool new_x, /**< whether some function evaluation method has been called for this point before */ 275 bool new_x, /**< whether some function evaluation method has been called for this point before */ 287 bool new_x, /**< whether some function evaluation method has been called for this point before */ 305 bool new_x, /**< whether some function evaluation method has been called for this point before */ 309 bool new_lambda, /**< whether the hessian has been evaluated for these values of lambda before */ 315 Number* values /**< buffer to store values of nonzero hessian entries, or NULL if structure is requested */ 338 /** This method is called when the algorithm is complete so the TNLP can store/write the solution. */ 354 /** A particular Ipopt::Journal implementation that uses the SCIP message routines for output. */ 409 /** clears the last solution arrays and sets the solstat and termstat to unknown and other, resp. */ 428 * Sets tol and constr_viol_tol to FEASTOLFACTOR*feastol and acceptable_tol and acceptable_viol_tol to feastol. 429 * Since the users and Ipopts conception of feasibility may differ, we let Ipopt try to compute solutions 431 * Only if Ipopt has problems to achieve this accuracy, we also accept solutions that are accurate w.r.t. feastol only. 432 * The additional effort for computing a more accurate solution should be small if one can assume fast convergence when close to a local minimizer. 446 /* It seem to be better to let Ipopt relax bounds a bit to ensure that a relative interior exists. 448 * If the user wants to set a tight feasibility tolerance, then (s)he has probably difficulties to compute accurate enough solutions. 449 * Thus, we turn off the bound_relax_factor completely if it would be below its default value of 1e-8. 451 nlpiproblem->ipopt->Options()->SetNumericValue("bound_relax_factor", feastol < 1e-8/FEASTOLFACTOR ? 0.0 : FEASTOLFACTOR * feastol); 577 (*problem)->ipopt->RegOptions()->AddStringOption2("store_intermediate", "whether to store the most feasible intermediate solutions", "no", "yes", "", "no", "", "useful when Ipopt looses a once found feasible solution and then terminates with an infeasible point"); 598 #if (IPOPT_VERSION_MAJOR > 3) || (IPOPT_VERSION_MAJOR == 3 && IPOPT_VERSION_MINOR > 12) || (IPOPT_VERSION_MAJOR == 3 && IPOPT_VERSION_MINOR == 12 && IPOPT_VERSION_RELEASE >= 5) 604 SCIPerrorMessage("Error when modifiying Ipopt options using options string\n%s\n", data->defoptions.c_str()); 612 SCIPerrorMessage("Error during initialization of Ipopt using optionfile \"%s\"\n", (*problem)->optfile.c_str()); 713 * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp 755 * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp 913 * - quadelems new elements in quadratic matrix (replacing already existing ones or adding new ones) 936 * - exprtree new expression tree for constraint or objective, or NULL to only remove previous tree 1001 * - varlbdualvalues initial dual values for variable lower bounds, or NULL to clear previous values 1002 * - varubdualvalues initial dual values for variable upper bounds, or NULL to clear previous values 1015 if( BMSduplicateMemoryArray(&problem->initguess, primalvalues, SCIPnlpiOracleGetNVars(problem->oracle)) == NULL ) 1065 /* if the expression interpreter or some user expression do not support function values and gradients and Hessians, and the problem is not at most quadratic, 1068 if( (cap & (SCIP_EXPRINTCAPABILITY_FUNCVALUE | SCIP_EXPRINTCAPABILITY_GRADIENT | SCIP_EXPRINTCAPABILITY_HESSIAN)) != (SCIP_EXPRINTCAPABILITY_FUNCVALUE | SCIP_EXPRINTCAPABILITY_GRADIENT | SCIP_EXPRINTCAPABILITY_HESSIAN) 1075 SCIPerrorMessage("Do not have expression interpreter that can compute function values and gradients. Cannot solve NLP with Ipopt.\n"); 1081 /* enable Hessian approximation if we are nonquadratic and the expression interpreter or user expression do not support Hessians */ 1095 /* ReOptimizeNLP with Ipopt <= 3.10.3 could return a solution not within bounds if all variables are fixed (see Ipopt ticket #179) */ 1096 #if (IPOPT_VERSION_MAJOR > 3) || (IPOPT_VERSION_MAJOR == 3 && IPOPT_VERSION_MINOR > 10) || (IPOPT_VERSION_MAJOR == 3 && IPOPT_VERSION_MINOR == 10 && IPOPT_VERSION_RELEASE > 3) 1116 SCIPdebugMessage("Ipopt failed because of an invalid number in function or derivative value\n"); 1181 * - consdualvalues buffer to store pointer to array to dual values of constraints, or NULL if not needed 1182 * - varlbdualvalues buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed 1183 * - varubdualvalues buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed 1406 SCIPmessagePrintWarning(data->messagehdlr, "from scratch parameter not supported by Ipopt interface yet. Ignored.\n"); 1432 problem->ipopt->Options()->SetIntegerValue("print_level", MIN(J_ITERSUMMARY + (ival-1), J_ALL)); 1437 SCIPerrorMessage("Value %d for parameter from verbosity level out of range {0, 1, 2}\n", ival); 1523 * - problem datastructure for problem instance, can be NULL only if type == SCIP_NLPPAR_INFINITY 1623 * - problem datastructure for problem instance, can be NULL only if type == SCIP_NLPPAR_INFINITY 1683 SCIPmessagePrintWarning(data->messagehdlr, "Parameter lower objective limit not supported by Ipopt interface yet. Ignored.\n"); 1914 SCIPerrorMessage("Error initializing Ipopt using optionfile \"%s\"\n", problem->optfile.c_str()); 1979 nlpiChgLinearCoefsIpopt, nlpiChgQuadraticCoefsIpopt, nlpiChgExprtreeIpopt, nlpiChgNonlinCoefIpopt, 1980 nlpiChgObjConstantIpopt, nlpiSetInitialGuessIpopt, nlpiSolveIpopt, nlpiGetSolstatIpopt, nlpiGetTermstatIpopt, 2008 /** gives a pointer to the IpoptApplication object stored in Ipopt-NLPI's NLPI problem data structure */ 2018 /** gives a pointer to the NLPIORACLE object stored in Ipopt-NLPI's NLPI problem data structure */ 2155 SCIPdebugMessage("Ipopt started without intial primal values; make up starting guess by projecting 0 onto variable bounds\n"); 2167 x[i] = SCIPgetRandomReal(MAX(lb, -MAXPERTURB*MIN(1.0, ub-lb)), MIN(ub, MAXPERTURB*MIN(1.0, ub-lb)), &perturbseed); 2189 var_types[i] = (SCIPnlpiOracleGetVarDegree(nlpiproblem->oracle, i) <= 1 ? LINEAR : NON_LINEAR); 2208 const_types[i] = (SCIPnlpiOracleGetConstraintDegree(nlpiproblem->oracle, i) <= 1 ? LINEAR : NON_LINEAR); 2319 bool new_x, /**< whether some function evaluation method has been called for this point before */ 2335 bool new_x, /**< whether some function evaluation method has been called for this point before */ 2346 return SCIPnlpiOracleEvalObjectiveGradient(nlpiproblem->oracle, x, TRUE, &dummy, grad_f) == SCIP_OKAY; 2353 bool new_x, /**< whether some function evaluation method has been called for this point before */ 2373 bool new_x, /**< whether some function evaluation method has been called for this point before */ 2376 Index* iRow, /**< buffer to store row indices of nonzero jacobian entries, or NULL if values are requested */ 2377 Index* jCol, /**< buffer to store column indices of nonzero jacobian entries, or NULL if values are requested */ 2378 Number* values /**< buffer to store values of nonzero jacobian entries, or NULL if structure is requested */ 2425 bool new_x, /**< whether some function evaluation method has been called for this point before */ 2429 bool new_lambda, /**< whether the hessian has been evaluated for these values of lambda before */ 2431 Index* iRow, /**< buffer to store row indices of nonzero hessian entries, or NULL if values are requested */ 2432 Index* jCol, /**< buffer to store column indices of nonzero hessian entries, or NULL if values are requested */ 2433 Number* values /**< buffer to store values of nonzero hessian entries, or NULL if structure is requested */ 2452 if( SCIPnlpiOracleGetHessianLagSparsity(nlpiproblem->oracle, &heslagoffset, &heslagcol) != SCIP_OKAY ) 2466 if( SCIPnlpiOracleEvalHessianLag(nlpiproblem->oracle, x, TRUE, obj_factor, lambda, values) != SCIP_OKAY ) 2493 if( nlpiproblem->storeintermediate && mode == RegularMode && inf_pr < nlpiproblem->lastsolinfeas ) 2509 SCIPdebugMessage("update lastsol: inf_pr old = %g -> new = %g\n", nlpiproblem->lastsolinfeas, inf_pr); 2516 if( BMSallocMemoryArray(&nlpiproblem->lastsolprimals, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)) == NULL || 2517 BMSallocMemoryArray(&nlpiproblem->lastsoldualcons, SCIPnlpiOracleGetNConstraints(nlpiproblem->oracle)) == NULL || 2518 BMSallocMemoryArray(&nlpiproblem->lastsoldualvarlb, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)) == NULL || 2519 BMSallocMemoryArray(&nlpiproblem->lastsoldualvarub, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)) == NULL ) 2532 tnlp_adapter->ResortG(*ip_data->curr()->y_c(), *ip_data->curr()->y_d(), nlpiproblem->lastsoldualcons); 2535 BMSclearMemoryArray(nlpiproblem->lastsoldualvarlb, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)); 2536 BMSclearMemoryArray(nlpiproblem->lastsoldualvarub, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)); 2539 tnlp_adapter->ResortBnds(*ip_data->curr()->z_L(), nlpiproblem->lastsoldualvarlb, *ip_data->curr()->z_U(), nlpiproblem->lastsoldualvarub); 2598 SCIPdebugPrintf("continue, because restoration phase only %d iters ago\n", iter - conv_lastrestoiter); 2600 else if( mode == RegularMode && inf_du <= conv_dutarget[i] && iter < conv_iterlim[i] + convcheck_maxiter[i] ) 2602 /* if dual reduction is sufficient, we allow for twice the number of iterations to reach primal infeas reduction */ 2603 SCIPdebugPrintf("continue, because dual infeas. red. sufficient and only %d iters above limit\n", iter - conv_iterlim[i]); 2618 /** This method is called when the algorithm is complete so the TNLP can store/write the solution. */ 2649 /* if stop at acceptable point, then dual infeasibility can be arbitrary large, so claim only feasibility */ 2677 /* still check feasibility, since we let Ipopt solve with higher tolerance than actually required */ 2718 /* if Ipopt reports its solution as locally infeasible or we don't know feasibility, then report the intermediate point with lowest constraint violation, if available */ 2719 if( (x == NULL || nlpiproblem->lastsolstat == SCIP_NLPSOLSTAT_LOCINFEASIBLE || nlpiproblem->lastsolstat == SCIP_NLPSOLSTAT_UNKNOWN) && nlpiproblem->lastsolinfeas != SCIP_INVALID ) 2729 nlpiproblem->ipopt->Options()->GetNumericValue("acceptable_constr_viol_tol", constrvioltol, ""); 2735 SCIPdebugMessage("drop Ipopt's final point and report intermediate locally %sfeasible solution with infeas %g instead (acceptable: %g)\n", 2736 nlpiproblem->lastsolstat == SCIP_NLPSOLSTAT_LOCINFEASIBLE ? "in" : "", nlpiproblem->lastsolinfeas, constrvioltol); 2776 nlpiproblem->ipopt->Options()->GetNumericValue("acceptable_constr_viol_tol", constrvioltol, ""); 2787 * Thus, we use IpLapack if F77_FUNC is not defined and access Lapack's Dsyev directly if F77_FUNC is defined. 2800 SCIP_Real* a, /**< matrix data on input (size N*N); eigenvectors on output if computeeigenvectors == TRUE */ 2861 * Calls Lapacks IpLapackDgetrf routine to calculate a LU factorization and uses this factorization to solve 2930 char* jobz, /**< 'N' to compute eigenvalues only, 'V' to compute eigenvalues and eigenvectors */ 2933 double* A, /**< matrix A on entry; orthonormal eigenvectors on exit, if jobz == 'V' and info == 0; if jobz == 'N', then the matrix data is destroyed */ 2937 int* LWORK, /**< length of WORK; if LWORK = -1, then the optimal workspace size is calculated and returned in WORK(1) */ 2938 int* info /**< == 0: successful exit; < 0: illegal argument at given position; > 0: failed to converge */ 2949 SCIP_Real* a, /**< matrix data on input (size N*N); eigenvectors on output if computeeigenvectors == TRUE */ Definition: type_nlpi.h:46 SCIP_RETCODE SCIPnlpiOracleEvalConstraintValues(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Real *convals) Definition: nlpioracle.c:2430 Definition: type_nlpi.h:64 const SCIP_Real * SCIPnlpiOracleGetVarUbs(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:2220 methods to interpret (evaluate) an expression tree "fast" SCIP_RETCODE SCIPnlpiOracleGetJacobianSparsity(SCIP_NLPIORACLE *oracle, const int **offset, const int **col) Definition: nlpioracle.c:2499 SCIP_EXPRINTCAPABILITY SCIPnlpiOracleGetEvalCapability(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:2370 Definition: type_nlpi.h:51 SCIP_RETCODE SCIPnlpiOracleGetHessianLagSparsity(SCIP_NLPIORACLE *oracle, const int **offset, const int **col) Definition: nlpioracle.c:2777 static SCIP_DECL_NLPICREATEPROBLEM(nlpiCreateProblemIpopt) Definition: nlpi_ipopt.cpp:530 int SCIPnlpiOracleGetNVars(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:2190 Definition: type_nlpi.h:66 static SCIP_DECL_NLPIGETWARMSTARTMEMO(nlpiGetWarmstartMemoIpopt) Definition: nlpi_ipopt.cpp:1258 static SCIP_DECL_NLPIFREEPROBLEM(nlpiFreeProblemIpopt) Definition: nlpi_ipopt.cpp:627 void SCIPnlpStatisticsSetNIterations(SCIP_NLPSTATISTICS *statistics, int niterations) Definition: nlpi.c:830 internal methods for NLPI solver interfaces Definition: type_nlpi.h:80 SCIP_RETCODE SCIPnlpiOracleSetObjective(SCIP_NLPIORACLE *oracle, const SCIP_Real constant, int nlin, const int *lininds, const SCIP_Real *linvals, int nquadelems, const SCIP_QUADELEM *quadelems, const int *exprvaridxs, const SCIP_EXPRTREE *exprtree) Definition: nlpioracle.c:1602 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_NLPICHGQUADCOEFS((*nlpichgquadcoefs)), SCIP_DECL_NLPICHGEXPRTREE((*nlpichgexprtree)), SCIP_DECL_NLPICHGNONLINCOEF((*nlpichgnonlincoef)), 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_DECL_NLPIGETWARMSTARTSIZE((*nlpigetwarmstartsize)), SCIP_DECL_NLPIGETWARMSTARTMEMO((*nlpigetwarmstartmemo)), SCIP_DECL_NLPISETWARMSTARTMEMO((*nlpisetwarmstartmemo)), SCIP_DECL_NLPIGETINTPAR((*nlpigetintpar)), SCIP_DECL_NLPISETINTPAR((*nlpisetintpar)), SCIP_DECL_NLPIGETREALPAR((*nlpigetrealpar)), SCIP_DECL_NLPISETREALPAR((*nlpisetrealpar)), SCIP_DECL_NLPIGETSTRINGPAR((*nlpigetstringpar)), SCIP_DECL_NLPISETSTRINGPAR((*nlpisetstringpar)), SCIP_DECL_NLPISETMESSAGEHDLR((*nlpisetmessagehdlr)), SCIP_NLPIDATA *nlpidata) Definition: nlpi.c:40 methods to store an NLP and request function, gradient, and hessian values Definition: type_nlpi.h:83 SCIP_RETCODE SCIPsolveLinearProb(int N, SCIP_Real *A, SCIP_Real *b, SCIP_Real *x, SCIP_Bool *success) Definition: nlpi_ipopt.cpp:2865 SCIP_Real SCIPnlpiOracleGetConstraintLhs(SCIP_NLPIORACLE *oracle, int considx) Definition: nlpioracle.c:2271 SCIP_EXPRINTCAPABILITY SCIPexprintGetCapability(void) Definition: exprinterpret_cppad.cpp:2169 static SCIP_DECL_NLPIGETSOLUTION(nlpiGetSolutionIpopt) Definition: nlpi_ipopt.cpp:1186 Definition: struct_message.h:35 SCIP_RETCODE SCIPnlpiOracleEvalObjectiveValue(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Real *objval) Definition: nlpioracle.c:2392 static SCIP_DECL_NLPIGETINTPAR(nlpiGetIntParIpopt) Definition: nlpi_ipopt.cpp:1293 static SCIP_DECL_NLPISETINITIALGUESS(nlpiSetInitialGuessIpopt) Definition: nlpi_ipopt.cpp:1005 void SCIPmessageVPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr, va_list ap) Definition: message.c:592 static SCIP_DECL_NLPISETINTPAR(nlpiSetIntParIpopt) Definition: nlpi_ipopt.cpp:1389 Definition: type_nlpi.h:47 SCIP_RETCODE SCIPnlpiOracleEvalObjectiveGradient(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real *objval, SCIP_Real *objgrad) Definition: nlpioracle.c:2453 static SCIP_DECL_NLPISETOBJECTIVE(nlpiSetObjectiveIpopt) Definition: nlpi_ipopt.cpp:762 SCIP_RETCODE SCIPnlpiOracleDelConsSet(SCIP_NLPIORACLE *oracle, int *delstats) Definition: nlpioracle.c:1819 SCIP_RETCODE SCIPnlpiOracleChgObjConstant(SCIP_NLPIORACLE *oracle, SCIP_Real objconstant) Definition: nlpioracle.c:2174 static SCIP_DECL_NLPISETSTRINGPAR(nlpiSetStringParIpopt) Definition: nlpi_ipopt.cpp:1850 Definition: type_nlpi.h:79 void * SCIPgetIpoptApplicationPointerIpopt(SCIP_NLPIPROBLEM *nlpiproblem) Definition: nlpi_ipopt.cpp:2009 int SCIPnlpiOracleGetNConstraints(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:2200 Definition: type_nlpi.h:67 void SCIPmessageVPrintError(const char *formatstr, va_list ap) Definition: message.c:788 static SCIP_DECL_NLPIGETSTATISTICS(nlpiGetStatisticsIpopt) Definition: nlpi_ipopt.cpp:1217 SCIP_DECL_NLPIGETPROBLEMPOINTER(nlpiGetProblemPointerIpopt) Definition: nlpi_ipopt.cpp:658 int SCIPnlpiOracleGetConstraintDegree(SCIP_NLPIORACLE *oracle, int considx) Definition: nlpioracle.c:2312 Definition: type_retcode.h:47 Definition: type_nlpi.h:63 SCIP_RETCODE SCIPnlpiOracleChgExprtree(SCIP_NLPIORACLE *oracle, int considx, const int *exprvaridxs, const SCIP_EXPRTREE *exprtree) Definition: nlpioracle.c:2092 static SCIP_DECL_NLPICHGOBJCONSTANT(nlpiChgObjConstantIpopt) Definition: nlpi_ipopt.cpp:983 SCIP_RETCODE SCIPnlpiOracleCreate(BMS_BLKMEM *blkmem, SCIP_NLPIORACLE **oracle) Definition: nlpioracle.c:1320 Definition: type_nlpi.h:52 const SCIP_Real * SCIPnlpiOracleGetVarLbs(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:2210 SCIP_RETCODE SCIPnlpiOracleChgVarBounds(SCIP_NLPIORACLE *oracle, int nvars, const int *indices, const SCIP_Real *lbs, const SCIP_Real *ubs) Definition: nlpioracle.c:1639 static SCIP_DECL_NLPICHGQUADCOEFS(nlpiChgQuadraticCoefsIpopt) Definition: nlpi_ipopt.cpp:918 static SCIP_DECL_NLPICHGNONLINCOEF(nlpiChgNonlinCoefIpopt) Definition: nlpi_ipopt.cpp:963 Definition: type_retcode.h:48 SCIP_RETCODE SCIPnlpiOracleAddVars(SCIP_NLPIORACLE *oracle, int nvars, const SCIP_Real *lbs, const SCIP_Real *ubs, const char **varnames) Definition: nlpioracle.c:1439 static SCIP_DECL_NLPIGETREALPAR(nlpiGetRealParIpopt) Definition: nlpi_ipopt.cpp:1531 void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...) Definition: message.c:411 static void invalidateSolution(SCIP_NLPIPROBLEM *problem) Definition: nlpi_ipopt.cpp:411 Definition: type_retcode.h:33 void * SCIPgetNlpiOracleIpopt(SCIP_NLPIPROBLEM *nlpiproblem) Definition: nlpi_ipopt.cpp:2019 static SCIP_DECL_NLPICHGVARBOUNDS(nlpiChgVarBoundsIpopt) Definition: nlpi_ipopt.cpp:790 Definition: type_retcode.h:46 void SCIPmessagePrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...) Definition: message.c:578 SCIP_Real SCIPnlpiOracleGetConstraintRhs(SCIP_NLPIORACLE *oracle, int considx) Definition: nlpioracle.c:2284 SCIP_Real SCIPnlpiOracleGetInfinity(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:1392 SCIP_RETCODE SCIPnlpiOracleFree(SCIP_NLPIORACLE **oracle) Definition: nlpioracle.c:1347 Definition: type_retcode.h:34 methods for catching the user CTRL-C interrupt void SCIPsetModifiedDefaultSettingsIpopt(SCIP_NLPI *nlpi, const char *optionsstring) Definition: nlpi_ipopt.cpp:2032 SCIP_RETCODE SCIPcreateNlpSolverIpopt(BMS_BLKMEM *blkmem, SCIP_NLPI **nlpi) Definition: nlpi_ipopt.cpp:1961 Ipopt NLP interface. Definition: type_nlpi.h:54 public data structures and miscellaneous methods #define SCIP_EXPRINTCAPABILITY_HESSIAN Definition: type_exprinterpret.h:40 SCIP_RETCODE SCIPnlpiSetRealPar(SCIP_NLPI *nlpi, SCIP_NLPIPROBLEM *problem, SCIP_NLPPARAM type, SCIP_Real dval) Definition: nlpi.c:668 static SCIP_DECL_NLPISETWARMSTARTMEMO(nlpiSetWarmstartMemoIpopt) Definition: nlpi_ipopt.cpp:1274 SCIP_RETCODE SCIPnlpiOracleSetProblemName(SCIP_NLPIORACLE *oracle, const char *name) Definition: nlpioracle.c:1404 static void setFeastol(SCIP_NLPIPROBLEM *nlpiproblem, SCIP_Real feastol) Definition: nlpi_ipopt.cpp:435 SCIP_RETCODE SCIPnlpiOracleAddConstraints(SCIP_NLPIORACLE *oracle, int nconss, const SCIP_Real *lhss, const SCIP_Real *rhss, const int *nlininds, int *const *lininds, SCIP_Real *const *linvals, const int *nquadelems, SCIP_QUADELEM *const *quadelems, int *const *exprvaridxs, SCIP_EXPRTREE *const *exprtrees, const char **consnames) Definition: nlpioracle.c:1524 Definition: type_nlpi.h:50 static SCIP_DECL_NLPICHGLINEARCOEFS(nlpiChgLinearCoefsIpopt) Definition: nlpi_ipopt.cpp:894 static SCIP_DECL_NLPIGETSOLSTAT(nlpiGetSolstatIpopt) Definition: nlpi_ipopt.cpp:1150 static SCIP_DECL_NLPIGETTERMSTAT(nlpiGetTermstatIpopt) Definition: nlpi_ipopt.cpp:1167 SCIP_RETCODE SCIPnlpiOracleChgLinearCoefs(SCIP_NLPIORACLE *oracle, int considx, int nentries, const int *varidxs, const SCIP_Real *newcoefs) Definition: nlpioracle.c:1897 static SCIP_DECL_NLPIADDCONSTRAINTS(nlpiAddConstraintsIpopt) Definition: nlpi_ipopt.cpp:722 SCIP_RETCODE SCIPnlpiOracleChgQuadCoefs(SCIP_NLPIORACLE *oracle, int considx, int nquadelems, const SCIP_QUADELEM *quadelems) Definition: nlpioracle.c:1994 SCIP_RETCODE SCIPnlpiOracleChgConsSides(SCIP_NLPIORACLE *oracle, int nconss, const int *indices, const SCIP_Real *lhss, const SCIP_Real *rhss) Definition: nlpioracle.c:1675 Definition: type_nlpi.h:74 Definition: type_nlpi.h:53 Definition: type_nlpi.h:76 SCIP_Real SCIPgetRandomReal(SCIP_Real minrandval, SCIP_Real maxrandval, unsigned int *seedp) Definition: misc.c:7719 SCIP_RETCODE SCIPnlpiOracleDelVarSet(SCIP_NLPIORACLE *oracle, int *delstats) Definition: nlpioracle.c:1709 static SCIP_DECL_NLPIGETSOLVERPOINTER(nlpiGetSolverPointerIpopt) Definition: nlpi_ipopt.cpp:515 Definition: type_nlpi.h:48 char * SCIPnlpiOracleGetConstraintName(SCIP_NLPIORACLE *oracle, int considx) Definition: nlpioracle.c:2297 #define SCIP_EXPRINTCAPABILITY_FUNCVALUE Definition: type_exprinterpret.h:36 Definition: type_nlpi.h:45 SCIP_RETCODE SCIPnlpiOracleChgExprParam(SCIP_NLPIORACLE *oracle, int considx, int paramidx, SCIP_Real paramval) Definition: nlpioracle.c:2149 int SCIPnlpiOracleGetVarDegree(SCIP_NLPIORACLE *oracle, int varidx) Definition: nlpioracle.c:2242 static SCIP_DECL_NLPIGETWARMSTARTSIZE(nlpiGetWarmstartSizeIpopt) Definition: nlpi_ipopt.cpp:1239 SCIP_RETCODE SCIPnlpiOracleEvalHessianLag(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real objfactor, const SCIP_Real *lambda, SCIP_Real *hessian) Definition: nlpioracle.c:2874 static SCIP_DECL_NLPIDELVARSET(nlpiDelVarSetIpopt) Definition: nlpi_ipopt.cpp:839 Definition: nlpioracle.c:57 static SCIP_DECL_NLPISETMESSAGEHDLR(nlpiSetMessageHdlrIpopt) Definition: nlpi_ipopt.cpp:1946 Definition: type_nlpi.h:81 Definition: type_nlpi.h:49 SCIP_RETCODE SCIPnlpiOracleSetInfinity(SCIP_NLPIORACLE *oracle, SCIP_Real infinity) Definition: nlpioracle.c:1376 static SCIP_DECL_NLPIGETSTRINGPAR(nlpiGetStringParIpopt) Definition: nlpi_ipopt.cpp:1761 static SCIP_DECL_NLPIDELCONSSET(nlpiDelConstraintSetIpopt) Definition: nlpi_ipopt.cpp:866 static SCIP_DECL_NLPISETREALPAR(nlpiSetRealParIpopt) Definition: nlpi_ipopt.cpp:1628 Definition: type_nlpi.h:62 SCIP_RETCODE SCIPnlpiOracleEvalJacobian(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real *convals, SCIP_Real *jacobi) Definition: nlpioracle.c:2638 Definition: type_nlpi.h:75 Definition: type_retcode.h:35 static const SCIP_Real convcheck_minred[convcheck_nchecks] Definition: nlpi_ipopt.cpp:102 void SCIPnlpStatisticsSetTotalTime(SCIP_NLPSTATISTICS *statistics, SCIP_Real totaltime) Definition: nlpi.c:840 char ** SCIPnlpiOracleGetVarNames(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:2230 static SCIP_DECL_NLPICHGEXPRTREE(nlpiChgExprtreeIpopt) Definition: nlpi_ipopt.cpp:939 Definition: reader_osil.c:59 static SCIP_DECL_NLPICHGCONSSIDES(nlpiChgConsSidesIpopt) Definition: nlpi_ipopt.cpp:814 static SCIP_RETCODE SCIPsolveLinearProb3(SCIP_Real *A, SCIP_Real *b, SCIP_Real *x, SCIP_Bool *success) Definition: nlpi_ipopt.cpp:2819 SCIP_RETCODE LapackDsyev(SCIP_Bool computeeigenvectors, int N, SCIP_Real *a, SCIP_Real *w) Definition: nlpi_ipopt.cpp:2797 Definition: nlpi_ipopt.cpp:124 Definition: type_nlpi.h:78 SCIP_RETCODE SCIPnlpiSetMessageHdlr(SCIP_NLPI *nlpi, SCIP_MESSAGEHDLR *messagehdlr) Definition: nlpi.c:717 #define SCIP_EXPRINTCAPABILITY_GRADIENT Definition: type_exprinterpret.h:38 int SCIPnlpiOracleGetMaxDegree(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:2344 static const int convcheck_maxiter[convcheck_nchecks] Definition: nlpi_ipopt.cpp:101 Definition: struct_nlpi.h:35 |