|
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
nlpi_ipopt.cpp
Go to the documentation of this file.
22 * @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
29 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
71 #define FEASTOLFACTOR 0.05 /**< factor for user-given feasibility tolerance to get feasibility tolerance that is actually passed to Ipopt */
81 * The targets are updated once they are reached and the limit on allowed iterations to reach the new target is reset.
89 * it is unlikely that Ipopt will continue to decrease primal infeasibility, since it may now target on
91 * - If the target on dual infeasibility reduction has been achieved, we are below twice the iteration limit, and
95 * However, in restoration mode, dual infeasibility does not correspond to the original problem and
100 static const int convcheck_maxiter[convcheck_nchecks] = { 5, 15, 30 }; /**< maximal number of iterations to achieve each convergence check */
101 static const SCIP_Real convcheck_minred[convcheck_nchecks] = { 1.0, 0.5, 0.1 }; /**< minimal required infeasibility reduction in each convergence check */
134 SCIP_Bool firstrun; /**< whether the next NLP solve will be the first one (with the current problem structure) */
140 SCIP_Real* lastsoldualcons; /**< dual solution values of constraints from last run, if available */
141 SCIP_Real* lastsoldualvarlb; /**< dual solution values of variable lower bounds from last run, if available */
142 SCIP_Real* lastsoldualvarub; /**< dual solution values of variable upper bounds from last run, if available */
143 SCIP_Real lastsolinfeas;/**< infeasibility (constraint violation) of solution stored in lastsolprimals */
164 SCIP_Real conv_prtarget[convcheck_nchecks]; /**< target primal infeasibility for each convergence check */
165 SCIP_Real conv_dutarget[convcheck_nchecks]; /**< target dual infeasibility for each convergence check */
166 int conv_iterlim[convcheck_nchecks]; /**< iteration number where target primal infeasibility should to be achieved */
170 bool approxhessian; /**< do we tell Ipopt to approximate the hessian? (may also be false if user set to approx. hessian via option file) */
258 bool new_x, /**< whether some function evaluation method has been called for this point before */
266 bool new_x, /**< whether some function evaluation method has been called for this point before */
274 bool new_x, /**< whether some function evaluation method has been called for this point before */
286 bool new_x, /**< whether some function evaluation method has been called for this point before */
304 bool new_x, /**< whether some function evaluation method has been called for this point before */
308 bool new_lambda, /**< whether the hessian has been evaluated for these values of lambda before */
314 Number* values /**< buffer to store values of nonzero hessian entries, or NULL if structure is requested */
337 /** This method is called when the algorithm is complete so the TNLP can store/write the solution. */
353 /** A particular Ipopt::Journal implementation that uses the SCIP message routines for output. */
408 /** clears the last solution arrays and sets the solstat and termstat to unknown and other, resp. */
427 * Sets tol and constr_viol_tol to FEASTOLFACTOR*feastol and acceptable_tol and acceptable_viol_tol to feastol.
428 * Since the users and Ipopts conception of feasibility may differ, we let Ipopt try to compute solutions
430 * Only if Ipopt has problems to achieve this accuracy, we also accept solutions that are accurate w.r.t. feastol only.
431 * The additional effort for computing a more accurate solution should be small if one can assume fast convergence when close to a local minimizer.
445 /* It seem to be better to let Ipopt relax bounds a bit to ensure that a relative interior exists.
447 * If the user wants to set a tight feasibility tolerance, then (s)he has probably difficulties to compute accurate enough solutions.
448 * Thus, we turn off the bound_relax_factor completely if it would be below its default value of 1e-8.
450 nlpiproblem->ipopt->Options()->SetNumericValue("bound_relax_factor", feastol < 1e-8/FEASTOLFACTOR ? 0.0 : FEASTOLFACTOR * feastol);
576 (*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");
599 SCIPerrorMessage("Error when modifiying Ipopt options using options string\n%s\n", data->defoptions.c_str());
607 SCIPerrorMessage("Error during initialization of Ipopt using optionfile \"%s\"\n", (*problem)->optfile.c_str());
708 * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp
750 * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp
908 * - quadelems new elements in quadratic matrix (replacing already existing ones or adding new ones)
931 * - exprtree new expression tree for constraint or objective, or NULL to only remove previous tree
996 * - varlbdualvalues initial dual values for variable lower bounds, or NULL to clear previous values
997 * - varubdualvalues initial dual values for variable upper bounds, or NULL to clear previous values
1010 if( BMSduplicateMemoryArray(&problem->initguess, primalvalues, SCIPnlpiOracleGetNVars(problem->oracle)) == NULL )
1056 /* if the expression interpreter does not support function values and gradients and hessians, and the problem is not at most quadratic,
1059 if( (SCIPexprintGetCapability() & (SCIP_EXPRINTCAPABILITY_FUNCVALUE | SCIP_EXPRINTCAPABILITY_GRADIENT | SCIP_EXPRINTCAPABILITY_HESSIAN)) != (SCIP_EXPRINTCAPABILITY_FUNCVALUE | SCIP_EXPRINTCAPABILITY_GRADIENT | SCIP_EXPRINTCAPABILITY_HESSIAN)
1066 SCIPerrorMessage("Do not have expression interpreter that can compute function values and gradients. Cannot solve NLP with Ipopt.\n");
1072 /* enable hessian approximation if we are nonquadratic and the expression interpreter does not support hessians */
1086 /* ReOptimizeNLP with Ipopt <= 3.10.3 could return a solution not within bounds if all variables are fixed (see Ipopt ticket #179) */
1087 #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)
1107 SCIPdebugMessage("Ipopt failed because of an invalid number in function or derivative value\n");
1172 * - consdualvalues buffer to store pointer to array to dual values of constraints, or NULL if not needed
1173 * - varlbdualvalues buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed
1174 * - varubdualvalues buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed
1397 SCIPmessagePrintWarning(data->messagehdlr, "from scratch parameter not supported by Ipopt interface yet. Ignored.\n");
1423 problem->ipopt->Options()->SetIntegerValue("print_level", MIN(J_ITERSUMMARY + (ival-1), J_ALL));
1428 SCIPerrorMessage("Value %d for parameter from verbosity level out of range {0, 1, 2}\n", ival);
1514 * - problem datastructure for problem instance, can be NULL only if type == SCIP_NLPPAR_INFINITY
1614 * - problem datastructure for problem instance, can be NULL only if type == SCIP_NLPPAR_INFINITY
1674 SCIPmessagePrintWarning(data->messagehdlr, "Parameter lower objective limit not supported by Ipopt interface yet. Ignored.\n");
1905 SCIPerrorMessage("Error initializing Ipopt using optionfile \"%s\"\n", problem->optfile.c_str());
1970 nlpiChgLinearCoefsIpopt, nlpiChgQuadraticCoefsIpopt, nlpiChgExprtreeIpopt, nlpiChgNonlinCoefIpopt,
1971 nlpiChgObjConstantIpopt, nlpiSetInitialGuessIpopt, nlpiSolveIpopt, nlpiGetSolstatIpopt, nlpiGetTermstatIpopt,
1999 /** gives a pointer to the IpoptApplication object stored in Ipopt-NLPI's NLPI problem data structure */
2009 /** gives a pointer to the NLPIORACLE object stored in Ipopt-NLPI's NLPI problem data structure */
2146 SCIPdebugMessage("Ipopt started without intial primal values; make up starting guess by projecting 0 onto variable bounds\n");
2158 x[i] = SCIPgetRandomReal(MAX(lb, -MAXPERTURB*MIN(1.0, ub-lb)), MIN(ub, MAXPERTURB*MIN(1.0, ub-lb)), &perturbseed);
2180 var_types[i] = (SCIPnlpiOracleGetVarDegree(nlpiproblem->oracle, i) <= 1 ? LINEAR : NON_LINEAR);
2199 const_types[i] = (SCIPnlpiOracleGetConstraintDegree(nlpiproblem->oracle, i) <= 1 ? LINEAR : NON_LINEAR);
2310 bool new_x, /**< whether some function evaluation method has been called for this point before */
2326 bool new_x, /**< whether some function evaluation method has been called for this point before */
2337 return SCIPnlpiOracleEvalObjectiveGradient(nlpiproblem->oracle, x, TRUE, &dummy, grad_f) == SCIP_OKAY;
2344 bool new_x, /**< whether some function evaluation method has been called for this point before */
2364 bool new_x, /**< whether some function evaluation method has been called for this point before */
2367 Index* iRow, /**< buffer to store row indices of nonzero jacobian entries, or NULL if values are requested */
2368 Index* jCol, /**< buffer to store column indices of nonzero jacobian entries, or NULL if values are requested */
2369 Number* values /**< buffer to store values of nonzero jacobian entries, or NULL if structure is requested */
2416 bool new_x, /**< whether some function evaluation method has been called for this point before */
2420 bool new_lambda, /**< whether the hessian has been evaluated for these values of lambda before */
2422 Index* iRow, /**< buffer to store row indices of nonzero hessian entries, or NULL if values are requested */
2423 Index* jCol, /**< buffer to store column indices of nonzero hessian entries, or NULL if values are requested */
2424 Number* values /**< buffer to store values of nonzero hessian entries, or NULL if structure is requested */
2443 if( SCIPnlpiOracleGetHessianLagSparsity(nlpiproblem->oracle, &heslagoffset, &heslagcol) != SCIP_OKAY )
2457 if( SCIPnlpiOracleEvalHessianLag(nlpiproblem->oracle, x, TRUE, obj_factor, lambda, values) != SCIP_OKAY )
2484 if( nlpiproblem->storeintermediate && mode == RegularMode && inf_pr < nlpiproblem->lastsolinfeas )
2500 SCIPdebugMessage("update lastsol: inf_pr old = %g -> new = %g\n", nlpiproblem->lastsolinfeas, inf_pr);
2507 if( BMSallocMemoryArray(&nlpiproblem->lastsolprimals, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)) == NULL ||
2508 BMSallocMemoryArray(&nlpiproblem->lastsoldualcons, SCIPnlpiOracleGetNConstraints(nlpiproblem->oracle)) == NULL ||
2509 BMSallocMemoryArray(&nlpiproblem->lastsoldualvarlb, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)) == NULL ||
2510 BMSallocMemoryArray(&nlpiproblem->lastsoldualvarub, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)) == NULL )
2523 tnlp_adapter->ResortG(*ip_data->curr()->y_c(), *ip_data->curr()->y_d(), nlpiproblem->lastsoldualcons);
2526 BMSclearMemoryArray(nlpiproblem->lastsoldualvarlb, SCIPnlpiOracleGetNVars(nlpiproblem->oracle));
2527 BMSclearMemoryArray(nlpiproblem->lastsoldualvarub, SCIPnlpiOracleGetNVars(nlpiproblem->oracle));
2530 tnlp_adapter->ResortBnds(*ip_data->curr()->z_L(), nlpiproblem->lastsoldualvarlb, *ip_data->curr()->z_U(), nlpiproblem->lastsoldualvarub);
2589 SCIPdebugPrintf("continue, because restoration phase only %d iters ago\n", iter - conv_lastrestoiter);
2591 else if( mode == RegularMode && inf_du <= conv_dutarget[i] && iter < conv_iterlim[i] + convcheck_maxiter[i] )
2593 /* if dual reduction is sufficient, we allow for twice the number of iterations to reach primal infeas reduction */
2594 SCIPdebugPrintf("continue, because dual infeas. red. sufficient and only %d iters above limit\n", iter - conv_iterlim[i]);
2609 /** This method is called when the algorithm is complete so the TNLP can store/write the solution. */
2640 /* if stop at acceptable point, then dual infeasibility can be arbitrary large, so claim only feasibility */
2668 /* still check feasibility, since we let Ipopt solve with higher tolerance than actually required */
2709 /* 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 */
2710 if( (x == NULL || nlpiproblem->lastsolstat == SCIP_NLPSOLSTAT_LOCINFEASIBLE || nlpiproblem->lastsolstat == SCIP_NLPSOLSTAT_UNKNOWN) && nlpiproblem->lastsolinfeas != SCIP_INVALID )
2720 nlpiproblem->ipopt->Options()->GetNumericValue("acceptable_constr_viol_tol", constrvioltol, "");
2726 SCIPdebugMessage("drop Ipopt's final point and report intermediate locally %sfeasible solution with infeas %g instead (acceptable: %g)\n",
2727 nlpiproblem->lastsolstat == SCIP_NLPSOLSTAT_LOCINFEASIBLE ? "in" : "", nlpiproblem->lastsolinfeas, constrvioltol);
2767 nlpiproblem->ipopt->Options()->GetNumericValue("acceptable_constr_viol_tol", constrvioltol, "");
2778 * Thus, we use IpLapack if F77_FUNC is not defined and access Lapack's Dsyev directly if F77_FUNC is defined.
2791 SCIP_Real* a, /**< matrix data on input (size N*N); eigenvectors on output if computeeigenvectors == TRUE */
2813 char* jobz, /**< 'N' to compute eigenvalues only, 'V' to compute eigenvalues and eigenvectors */
2816 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 */
2820 int* LWORK, /**< length of WORK; if LWORK = -1, then the optimal workspace size is calculated and returned in WORK(1) */
2821 int* info /**< == 0: successful exit; < 0: illegal argument at given position; > 0: failed to converge */
2832 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:2408 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:2477 Definition: type_nlpi.h:51 SCIP_RETCODE SCIPnlpiOracleGetHessianLagSparsity(SCIP_NLPIORACLE *oracle, const int **offset, const int **col) Definition: nlpioracle.c:2755 static SCIP_DECL_NLPICREATEPROBLEM(nlpiCreateProblemIpopt) Definition: nlpi_ipopt.cpp:529 int SCIPnlpiOracleGetNVars(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:2190 Definition: type_nlpi.h:66 static SCIP_DECL_NLPIGETWARMSTARTMEMO(nlpiGetWarmstartMemoIpopt) Definition: nlpi_ipopt.cpp:1249 static SCIP_DECL_NLPIFREEPROBLEM(nlpiFreeProblemIpopt) Definition: nlpi_ipopt.cpp:622 void SCIPnlpStatisticsSetNIterations(SCIP_NLPSTATISTICS *statistics, int niterations) Definition: nlpi.c:831 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_Real SCIPnlpiOracleGetConstraintLhs(SCIP_NLPIORACLE *oracle, int considx) Definition: nlpioracle.c:2271 SCIP_EXPRINTCAPABILITY SCIPexprintGetCapability(void) Definition: exprinterpret_cppad.cpp:1744 static SCIP_DECL_NLPIGETSOLUTION(nlpiGetSolutionIpopt) Definition: nlpi_ipopt.cpp:1177 Definition: struct_message.h:35 SCIP_RETCODE SCIPnlpiOracleEvalObjectiveValue(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Real *objval) Definition: nlpioracle.c:2370 static SCIP_DECL_NLPIGETINTPAR(nlpiGetIntParIpopt) Definition: nlpi_ipopt.cpp:1284 static SCIP_DECL_NLPISETINITIALGUESS(nlpiSetInitialGuessIpopt) Definition: nlpi_ipopt.cpp:1000 void SCIPmessageVPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr, va_list ap) Definition: message.c:592 static SCIP_DECL_NLPISETINTPAR(nlpiSetIntParIpopt) Definition: nlpi_ipopt.cpp:1380 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:2431 static SCIP_DECL_NLPISETOBJECTIVE(nlpiSetObjectiveIpopt) Definition: nlpi_ipopt.cpp:757 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:1841 Definition: type_nlpi.h:79 void * SCIPgetIpoptApplicationPointerIpopt(SCIP_NLPIPROBLEM *nlpiproblem) Definition: nlpi_ipopt.cpp:2000 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:1208 SCIP_DECL_NLPIGETPROBLEMPOINTER(nlpiGetProblemPointerIpopt) Definition: nlpi_ipopt.cpp:653 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:978 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:913 static SCIP_DECL_NLPICHGNONLINCOEF(nlpiChgNonlinCoefIpopt) Definition: nlpi_ipopt.cpp:958 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:1522 void SCIPmessagePrintWarning(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...) Definition: message.c:411 static void invalidateSolution(SCIP_NLPIPROBLEM *problem) Definition: nlpi_ipopt.cpp:410 Definition: type_retcode.h:33 void * SCIPgetNlpiOracleIpopt(SCIP_NLPIPROBLEM *nlpiproblem) Definition: nlpi_ipopt.cpp:2010 static SCIP_DECL_NLPICHGVARBOUNDS(nlpiChgVarBoundsIpopt) Definition: nlpi_ipopt.cpp:785 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:2023 SCIP_RETCODE SCIPcreateNlpSolverIpopt(BMS_BLKMEM *blkmem, SCIP_NLPI **nlpi) Definition: nlpi_ipopt.cpp:1952 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:1265 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:434 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:889 static SCIP_DECL_NLPIGETSOLSTAT(nlpiGetSolstatIpopt) Definition: nlpi_ipopt.cpp:1141 static SCIP_DECL_NLPIGETTERMSTAT(nlpiGetTermstatIpopt) Definition: nlpi_ipopt.cpp:1158 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:717 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:7231 SCIP_RETCODE SCIPnlpiOracleDelVarSet(SCIP_NLPIORACLE *oracle, int *delstats) Definition: nlpioracle.c:1709 static SCIP_DECL_NLPIGETSOLVERPOINTER(nlpiGetSolverPointerIpopt) Definition: nlpi_ipopt.cpp:514 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:1230 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:2852 static SCIP_DECL_NLPIDELVARSET(nlpiDelVarSetIpopt) Definition: nlpi_ipopt.cpp:834 Definition: nlpioracle.c:57 static SCIP_DECL_NLPISETMESSAGEHDLR(nlpiSetMessageHdlrIpopt) Definition: nlpi_ipopt.cpp:1937 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:1752 static SCIP_DECL_NLPIDELCONSSET(nlpiDelConstraintSetIpopt) Definition: nlpi_ipopt.cpp:861 static SCIP_DECL_NLPISETREALPAR(nlpiSetRealParIpopt) Definition: nlpi_ipopt.cpp:1619 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:2616 Definition: type_nlpi.h:75 Definition: type_retcode.h:35 static const SCIP_Real convcheck_minred[convcheck_nchecks] Definition: nlpi_ipopt.cpp:101 void SCIPnlpStatisticsSetTotalTime(SCIP_NLPSTATISTICS *statistics, SCIP_Real totaltime) Definition: nlpi.c:841 char ** SCIPnlpiOracleGetVarNames(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:2230 static SCIP_DECL_NLPICHGEXPRTREE(nlpiChgExprtreeIpopt) Definition: nlpi_ipopt.cpp:934 Definition: reader_osil.c:59 static SCIP_DECL_NLPICHGCONSSIDES(nlpiChgConsSidesIpopt) Definition: nlpi_ipopt.cpp:809 SCIP_RETCODE LapackDsyev(SCIP_Bool computeeigenvectors, int N, SCIP_Real *a, SCIP_Real *w) Definition: nlpi_ipopt.cpp:2788 Definition: nlpi_ipopt.cpp:123 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:100 Definition: struct_nlpi.h:35 |