|
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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");
600 SCIPerrorMessage("Error when modifiying Ipopt options using options string\n%s\n", data->defoptions.c_str());
608 SCIPerrorMessage("Error during initialization of Ipopt using optionfile \"%s\"\n", (*problem)->optfile.c_str());
709 * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp
751 * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp
909 * - quadelems new elements in quadratic matrix (replacing already existing ones or adding new ones)
932 * - exprtree new expression tree for constraint or objective, or NULL to only remove previous tree
997 * - varlbdualvalues initial dual values for variable lower bounds, or NULL to clear previous values
998 * - varubdualvalues initial dual values for variable upper bounds, or NULL to clear previous values
1011 if( BMSduplicateMemoryArray(&problem->initguess, primalvalues, SCIPnlpiOracleGetNVars(problem->oracle)) == NULL )
1061 /* 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,
1064 if( (cap & (SCIP_EXPRINTCAPABILITY_FUNCVALUE | SCIP_EXPRINTCAPABILITY_GRADIENT | SCIP_EXPRINTCAPABILITY_HESSIAN)) != (SCIP_EXPRINTCAPABILITY_FUNCVALUE | SCIP_EXPRINTCAPABILITY_GRADIENT | SCIP_EXPRINTCAPABILITY_HESSIAN)
1071 SCIPerrorMessage("Do not have expression interpreter that can compute function values and gradients. Cannot solve NLP with Ipopt.\n");
1077 /* enable Hessian approximation if we are nonquadratic and the expression interpreter or user expression do not support Hessians */
1091 /* ReOptimizeNLP with Ipopt <= 3.10.3 could return a solution not within bounds if all variables are fixed (see Ipopt ticket #179) */
1092 #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)
1112 SCIPdebugMessage("Ipopt failed because of an invalid number in function or derivative value\n");
1177 * - consdualvalues buffer to store pointer to array to dual values of constraints, or NULL if not needed
1178 * - varlbdualvalues buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed
1179 * - varubdualvalues buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed
1402 SCIPmessagePrintWarning(data->messagehdlr, "from scratch parameter not supported by Ipopt interface yet. Ignored.\n");
1428 problem->ipopt->Options()->SetIntegerValue("print_level", MIN(J_ITERSUMMARY + (ival-1), J_ALL));
1433 SCIPerrorMessage("Value %d for parameter from verbosity level out of range {0, 1, 2}\n", ival);
1519 * - problem datastructure for problem instance, can be NULL only if type == SCIP_NLPPAR_INFINITY
1619 * - problem datastructure for problem instance, can be NULL only if type == SCIP_NLPPAR_INFINITY
1679 SCIPmessagePrintWarning(data->messagehdlr, "Parameter lower objective limit not supported by Ipopt interface yet. Ignored.\n");
1910 SCIPerrorMessage("Error initializing Ipopt using optionfile \"%s\"\n", problem->optfile.c_str());
1975 nlpiChgLinearCoefsIpopt, nlpiChgQuadraticCoefsIpopt, nlpiChgExprtreeIpopt, nlpiChgNonlinCoefIpopt,
1976 nlpiChgObjConstantIpopt, nlpiSetInitialGuessIpopt, nlpiSolveIpopt, nlpiGetSolstatIpopt, nlpiGetTermstatIpopt,
2004 /** gives a pointer to the IpoptApplication object stored in Ipopt-NLPI's NLPI problem data structure */
2014 /** gives a pointer to the NLPIORACLE object stored in Ipopt-NLPI's NLPI problem data structure */
2151 SCIPdebugMessage("Ipopt started without intial primal values; make up starting guess by projecting 0 onto variable bounds\n");
2163 x[i] = SCIPgetRandomReal(MAX(lb, -MAXPERTURB*MIN(1.0, ub-lb)), MIN(ub, MAXPERTURB*MIN(1.0, ub-lb)), &perturbseed);
2185 var_types[i] = (SCIPnlpiOracleGetVarDegree(nlpiproblem->oracle, i) <= 1 ? LINEAR : NON_LINEAR);
2204 const_types[i] = (SCIPnlpiOracleGetConstraintDegree(nlpiproblem->oracle, i) <= 1 ? LINEAR : NON_LINEAR);
2315 bool new_x, /**< whether some function evaluation method has been called for this point before */
2331 bool new_x, /**< whether some function evaluation method has been called for this point before */
2342 return SCIPnlpiOracleEvalObjectiveGradient(nlpiproblem->oracle, x, TRUE, &dummy, grad_f) == SCIP_OKAY;
2349 bool new_x, /**< whether some function evaluation method has been called for this point before */
2369 bool new_x, /**< whether some function evaluation method has been called for this point before */
2372 Index* iRow, /**< buffer to store row indices of nonzero jacobian entries, or NULL if values are requested */
2373 Index* jCol, /**< buffer to store column indices of nonzero jacobian entries, or NULL if values are requested */
2374 Number* values /**< buffer to store values of nonzero jacobian entries, or NULL if structure is requested */
2421 bool new_x, /**< whether some function evaluation method has been called for this point before */
2425 bool new_lambda, /**< whether the hessian has been evaluated for these values of lambda before */
2427 Index* iRow, /**< buffer to store row indices of nonzero hessian entries, or NULL if values are requested */
2428 Index* jCol, /**< buffer to store column indices of nonzero hessian entries, or NULL if values are requested */
2429 Number* values /**< buffer to store values of nonzero hessian entries, or NULL if structure is requested */
2448 if( SCIPnlpiOracleGetHessianLagSparsity(nlpiproblem->oracle, &heslagoffset, &heslagcol) != SCIP_OKAY )
2462 if( SCIPnlpiOracleEvalHessianLag(nlpiproblem->oracle, x, TRUE, obj_factor, lambda, values) != SCIP_OKAY )
2489 if( nlpiproblem->storeintermediate && mode == RegularMode && inf_pr < nlpiproblem->lastsolinfeas )
2505 SCIPdebugMessage("update lastsol: inf_pr old = %g -> new = %g\n", nlpiproblem->lastsolinfeas, inf_pr);
2512 if( BMSallocMemoryArray(&nlpiproblem->lastsolprimals, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)) == NULL ||
2513 BMSallocMemoryArray(&nlpiproblem->lastsoldualcons, SCIPnlpiOracleGetNConstraints(nlpiproblem->oracle)) == NULL ||
2514 BMSallocMemoryArray(&nlpiproblem->lastsoldualvarlb, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)) == NULL ||
2515 BMSallocMemoryArray(&nlpiproblem->lastsoldualvarub, SCIPnlpiOracleGetNVars(nlpiproblem->oracle)) == NULL )
2528 tnlp_adapter->ResortG(*ip_data->curr()->y_c(), *ip_data->curr()->y_d(), nlpiproblem->lastsoldualcons);
2531 BMSclearMemoryArray(nlpiproblem->lastsoldualvarlb, SCIPnlpiOracleGetNVars(nlpiproblem->oracle));
2532 BMSclearMemoryArray(nlpiproblem->lastsoldualvarub, SCIPnlpiOracleGetNVars(nlpiproblem->oracle));
2535 tnlp_adapter->ResortBnds(*ip_data->curr()->z_L(), nlpiproblem->lastsoldualvarlb, *ip_data->curr()->z_U(), nlpiproblem->lastsoldualvarub);
2594 SCIPdebugPrintf("continue, because restoration phase only %d iters ago\n", iter - conv_lastrestoiter);
2596 else if( mode == RegularMode && inf_du <= conv_dutarget[i] && iter < conv_iterlim[i] + convcheck_maxiter[i] )
2598 /* if dual reduction is sufficient, we allow for twice the number of iterations to reach primal infeas reduction */
2599 SCIPdebugPrintf("continue, because dual infeas. red. sufficient and only %d iters above limit\n", iter - conv_iterlim[i]);
2614 /** This method is called when the algorithm is complete so the TNLP can store/write the solution. */
2645 /* if stop at acceptable point, then dual infeasibility can be arbitrary large, so claim only feasibility */
2673 /* still check feasibility, since we let Ipopt solve with higher tolerance than actually required */
2714 /* 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 */
2715 if( (x == NULL || nlpiproblem->lastsolstat == SCIP_NLPSOLSTAT_LOCINFEASIBLE || nlpiproblem->lastsolstat == SCIP_NLPSOLSTAT_UNKNOWN) && nlpiproblem->lastsolinfeas != SCIP_INVALID )
2725 nlpiproblem->ipopt->Options()->GetNumericValue("acceptable_constr_viol_tol", constrvioltol, "");
2731 SCIPdebugMessage("drop Ipopt's final point and report intermediate locally %sfeasible solution with infeas %g instead (acceptable: %g)\n",
2732 nlpiproblem->lastsolstat == SCIP_NLPSOLSTAT_LOCINFEASIBLE ? "in" : "", nlpiproblem->lastsolinfeas, constrvioltol);
2772 nlpiproblem->ipopt->Options()->GetNumericValue("acceptable_constr_viol_tol", constrvioltol, "");
2783 * Thus, we use IpLapack if F77_FUNC is not defined and access Lapack's Dsyev directly if F77_FUNC is defined.
2796 SCIP_Real* a, /**< matrix data on input (size N*N); eigenvectors on output if computeeigenvectors == TRUE */
2815 * Calls Lapacks IpLapackDgetrf routine to calculate a LU factorization and uses this factorization to solve
2889 char* jobz, /**< 'N' to compute eigenvalues only, 'V' to compute eigenvalues and eigenvectors */
2892 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 */
2896 int* LWORK, /**< length of WORK; if LWORK = -1, then the optimal workspace size is calculated and returned in WORK(1) */
2897 int* info /**< == 0: successful exit; < 0: illegal argument at given position; > 0: failed to converge */
2908 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:1254 static SCIP_DECL_NLPIFREEPROBLEM(nlpiFreeProblemIpopt) Definition: nlpi_ipopt.cpp:623 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:2169 static SCIP_DECL_NLPIGETSOLUTION(nlpiGetSolutionIpopt) Definition: nlpi_ipopt.cpp:1182 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:1289 static SCIP_DECL_NLPISETINITIALGUESS(nlpiSetInitialGuessIpopt) Definition: nlpi_ipopt.cpp:1001 void SCIPmessageVPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr, va_list ap) Definition: message.c:592 static SCIP_DECL_NLPISETINTPAR(nlpiSetIntParIpopt) Definition: nlpi_ipopt.cpp:1385 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:758 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:1846 Definition: type_nlpi.h:79 void * SCIPgetIpoptApplicationPointerIpopt(SCIP_NLPIPROBLEM *nlpiproblem) Definition: nlpi_ipopt.cpp:2005 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:1213 SCIP_DECL_NLPIGETPROBLEMPOINTER(nlpiGetProblemPointerIpopt) Definition: nlpi_ipopt.cpp:654 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:979 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:914 static SCIP_DECL_NLPICHGNONLINCOEF(nlpiChgNonlinCoefIpopt) Definition: nlpi_ipopt.cpp:959 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:1527 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:2015 static SCIP_DECL_NLPICHGVARBOUNDS(nlpiChgVarBoundsIpopt) Definition: nlpi_ipopt.cpp:786 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:2028 SCIP_RETCODE SCIPcreateNlpSolverIpopt(BMS_BLKMEM *blkmem, SCIP_NLPI **nlpi) Definition: nlpi_ipopt.cpp:1957 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:1270 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:890 static SCIP_DECL_NLPIGETSOLSTAT(nlpiGetSolstatIpopt) Definition: nlpi_ipopt.cpp:1146 static SCIP_DECL_NLPIGETTERMSTAT(nlpiGetTermstatIpopt) Definition: nlpi_ipopt.cpp:1163 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:718 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:7714 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:1235 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:835 Definition: nlpioracle.c:57 static SCIP_DECL_NLPISETMESSAGEHDLR(nlpiSetMessageHdlrIpopt) Definition: nlpi_ipopt.cpp:1942 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:1757 static SCIP_DECL_NLPIDELCONSSET(nlpiDelConstraintSetIpopt) Definition: nlpi_ipopt.cpp:862 static SCIP_DECL_NLPISETREALPAR(nlpiSetRealParIpopt) Definition: nlpi_ipopt.cpp:1624 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:841 char ** SCIPnlpiOracleGetVarNames(SCIP_NLPIORACLE *oracle) Definition: nlpioracle.c:2230 static SCIP_DECL_NLPICHGEXPRTREE(nlpiChgExprtreeIpopt) Definition: nlpi_ipopt.cpp:935 Definition: reader_osil.c:59 static SCIP_DECL_NLPICHGCONSSIDES(nlpiChgConsSidesIpopt) Definition: nlpi_ipopt.cpp:810 SCIP_RETCODE LapackDsyev(SCIP_Bool computeeigenvectors, int N, SCIP_Real *a, SCIP_Real *w) Definition: nlpi_ipopt.cpp:2793 Definition: nlpi_ipopt.cpp:124 SCIP_RETCODE SCIPsolveLinearProb(int N, SCIP_Real **A, SCIP_Real *b, SCIP_Real *x, SCIP_Bool *success) Definition: nlpi_ipopt.cpp:2819 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 |