SCIP Doxygen Documentation
Loading...
Searching...
No Matches
nlpioracle.h
Go to the documentation of this file.
1/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2/* */
3/* This file is part of the program and library */
4/* SCIP --- Solving Constraint Integer Programs */
5/* */
6/* Copyright (c) 2002-2026 Zuse Institute Berlin (ZIB) */
7/* */
8/* Licensed under the Apache License, Version 2.0 (the "License"); */
9/* you may not use this file except in compliance with the License. */
10/* You may obtain a copy of the License at */
11/* */
12/* http://www.apache.org/licenses/LICENSE-2.0 */
13/* */
14/* Unless required by applicable law or agreed to in writing, software */
15/* distributed under the License is distributed on an "AS IS" BASIS, */
16/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
17/* See the License for the specific language governing permissions and */
18/* limitations under the License. */
19/* */
20/* You should have received a copy of the Apache-2.0 license */
21/* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
22/* */
23/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
24
25/**@file nlpioracle.h
26 * @ingroup PUBLICCOREAPI
27 * @brief methods to store an NLP and request function, gradient, and Hessian values
28 * @author Stefan Vigerske
29 *
30 * A common part of many NLPIs that takes care of the problem storage and function, gradient, and Hessian evaluation.
31 */
32
33#ifndef __SCIP_NLPIORACLE_H__
34#define __SCIP_NLPIORACLE_H__
35
36#include "scip/type_message.h"
38
39/**@defgroup NLPIOracle NLPI Oracle
40 * @ingroup DataStructures
41 * @brief NLP representation used by various NLP solver interface implementations
42 *
43 *@{
44 */
45
46
47#ifdef __cplusplus
48extern "C" {
49#endif
50
51typedef struct SCIP_NlpiOracle SCIP_NLPIORACLE; /**< NLPI oracle data structure */
52
53/** creates an NLPIORACLE data structure */
54SCIP_EXPORT
56 SCIP* scip, /**< SCIP data structure */
57 SCIP_NLPIORACLE** oracle /**< pointer to store NLPIORACLE data structure */
58 );
59
60/** frees an NLPIORACLE data structure */
61SCIP_EXPORT
63 SCIP* scip, /**< SCIP data structure */
64 SCIP_NLPIORACLE** oracle /**< pointer to NLPIORACLE data structure */
65 );
66
67/** sets the problem name (used for printing) */
68SCIP_EXPORT
70 SCIP* scip, /**< SCIP data structure */
71 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
72 const char* name /**< name of problem */
73 );
74
75/** gets the problem name, or NULL if none set */
76SCIP_EXPORT
78 SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
79 );
80
81/** adds variables */
82SCIP_EXPORT
84 SCIP* scip, /**< SCIP data structure */
85 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
86 int nvars, /**< number of variables to add */
87 const SCIP_Real* lbs, /**< array with lower bounds of new variables, or NULL if all -infinity */
88 const SCIP_Real* ubs, /**< array with upper bounds of new variables, or NULL if all +infinity */
89 const char** varnames /**< array with names of new variables, or NULL if no names should be stored */
90 );
91
92/** adds constraints
93 *
94 * linear coefficients: row(=constraint) oriented matrix;
95 * quadratic coefficients: row oriented matrix for each constraint
96 */
97SCIP_EXPORT
99 SCIP* scip, /**< SCIP data structure */
100 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
101 int nconss, /**< number of constraints to add */
102 const SCIP_Real* lhss, /**< array with left-hand sides of constraints, or NULL if all -infinity */
103 const SCIP_Real* rhss, /**< array with right-hand sides of constraints, or NULL if all +infinity */
104 const int* nlininds, /**< number of linear coefficients for each constraint, may be NULL in case of no linear part */
105 int* const* lininds, /**< indices of variables for linear coefficients for each constraint, may be NULL in case of no linear part */
106 SCIP_Real* const* linvals, /**< values of linear coefficient for each constraint, may be NULL in case of no linear part */
107 SCIP_EXPR** exprs, /**< NULL if no nonlinear parts, otherwise exprs[.] gives nonlinear part,
108 * or NULL if no nonlinear part in this constraint */
109 const char** consnames /**< names of new constraints, or NULL if no names should be stored */
110 );
111
112/** sets or overwrites objective, a minimization problem is expected
113 *
114 * May change sparsity pattern.
115 */
116SCIP_EXPORT
118 SCIP* scip, /**< SCIP data structure */
119 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
120 const SCIP_Real constant, /**< constant part of objective */
121 int nlin, /**< number of linear variable coefficients */
122 const int* lininds, /**< indices of linear variables, or NULL if no linear part */
123 const SCIP_Real* linvals, /**< coefficients of linear variables, or NULL if no linear part */
124 SCIP_EXPR* expr /**< expression of nonlinear part, or NULL if no nonlinear part */
125 );
126
127/** change variable bounds */
128SCIP_EXPORT
130 SCIP* scip, /**< SCIP data structure */
131 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
132 int nvars, /**< number of variables to change bounds */
133 const int* indices, /**< array with indices of variables to change bounds */
134 const SCIP_Real* lbs, /**< array with new lower bounds, or NULL if all should be -infty */
135 const SCIP_Real* ubs /**< array with new upper bounds, or NULL if all should be +infty */
136 );
137
138/** change constraint sides */
139SCIP_EXPORT
141 SCIP* scip, /**< SCIP data structure */
142 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
143 int nconss, /**< number of constraints to change sides */
144 const int* indices, /**< array with indices of constraints to change sides */
145 const SCIP_Real* lhss, /**< array with new left-hand sides, or NULL if all should be -infty */
146 const SCIP_Real* rhss /**< array with new right-hand sides, or NULL if all should be +infty */
147 );
148
149/** deletes a set of variables */
150SCIP_EXPORT
152 SCIP* scip, /**< SCIP data structure */
153 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
154 int* delstats /**< array with deletion status of vars in input (1 if var should be deleted, 0 if not);
155 * new position of var in output (-1 if var was deleted) */
156 );
157
158/** deletes a set of constraints */
159SCIP_EXPORT
161 SCIP* scip, /**< SCIP data structure */
162 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
163 int* delstats /**< array with deletion status of rows in input (1 if row should be deleted, 0 if not);
164 * new position of row in output (-1 if row was deleted) */
165 );
166
167/** changes (or adds) linear coefficients in one constraint or objective */
168SCIP_EXPORT
170 SCIP* scip, /**< SCIP data structure */
171 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
172 int considx, /**< index of constraint where linear coefficients should be changed, or -1 for objective */
173 int nentries, /**< number of coefficients to change */
174 const int* varidxs, /**< array with indices of variables which coefficients should be changed */
175 const SCIP_Real* newcoefs /**< array with new coefficients of variables */
176 );
177
178/** replaces expression of one constraint or objective */
179SCIP_EXPORT
181 SCIP* scip, /**< SCIP data structure */
182 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
183 int considx, /**< index of constraint where expression should be changed, or -1 for objective */
184 SCIP_EXPR* expr /**< new expression, or NULL */
185 );
186
187/** changes the constant value in the objective function
188 */
189SCIP_EXPORT
191 SCIP* scip, /**< SCIP data structure */
192 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
193 SCIP_Real objconstant /**< new value for objective constant */
194 );
195
196/** gives the current number of variables */
197SCIP_EXPORT
199 SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
200 );
201
202/** gives the current number of constraints */
203SCIP_EXPORT
205 SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
206 );
207
208/** gives the variables lower bounds */
209SCIP_EXPORT
211 SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
212 );
213
214/** gives the variables upper bounds */
215SCIP_EXPORT
217 SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
218 );
219
220/** gives the variables names, or NULL if not set */
221SCIP_EXPORT
223 SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
224 );
225
226/** indicates whether variable appears nonlinear in any objective or constraint */
227SCIP_EXPORT
229 SCIP* scip, /**< SCIP data structure */
230 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
231 int varidx /**< the variable to check */
232 );
233
234/** returns number of linear and nonlinear appearances of variables in objective and constraints */
235SCIP_EXPORT
237 SCIP* scip, /**< SCIP data structure */
238 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
239 const int** lincounts, /**< buffer to return pointer to array of counts of linear appearances */
240 const int** nlcounts /**< buffer to return pointer to array of counts of nonlinear appearances */
241 );
242
243/** gives constant term of objective */
244SCIP_EXPORT
246 SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
247 );
248
249/** gives left-hand side of a constraint */
250SCIP_EXPORT
252 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
253 int considx /**< constraint index */
254 );
255
256/** gives right-hand side of a constraint */
257SCIP_EXPORT
259 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
260 int considx /**< constraint index */
261 );
262
263/** gives name of a constraint, may be NULL */
264SCIP_EXPORT
266 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
267 int considx /**< constraint index */
268 );
269
270/** gives linear coefficient of a given variable in a constraint */
271SCIP_EXPORT
273 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
274 int considx, /**< constraint index, or -1 for objective */
275 int varpos /**< position in the constraint's linear coefficient array */
276 );
277
278/** indicates whether constraint is nonlinear */
279SCIP_EXPORT
281 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
282 int considx /**< index of constraint for which nonlinearity status is returned, or -1 for objective */
283 );
284
285/** gives the evaluation capabilities that are shared among all expressions in the problem */
286SCIP_EXPORT
288 SCIP* scip, /**< SCIP data structure */
289 SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
290 );
291
292/** evaluates the objective function in a given point */
293SCIP_EXPORT
295 SCIP* scip, /**< SCIP data structure */
296 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
297 const SCIP_Real* x, /**< point where to evaluate */
298 SCIP_Real* objval /**< pointer to store objective value */
299 );
300
301/** evaluates one constraint function in a given point */
302SCIP_EXPORT
304 SCIP* scip, /**< SCIP data structure */
305 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
306 int considx, /**< index of constraint to evaluate */
307 const SCIP_Real* x, /**< point where to evaluate */
308 SCIP_Real* conval /**< pointer to store constraint value */
309 );
310
311/** evaluates all constraint functions in a given point */
312SCIP_EXPORT
314 SCIP* scip, /**< SCIP data structure */
315 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
316 const SCIP_Real* x, /**< point where to evaluate */
317 SCIP_Real* convals /**< pointer to store constraint values */
318 );
319
320/** interval evaluate objective function for given variable bounds */
321SCIP_EXPORT
323 SCIP* scip, /**< SCIP data structure */
324 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
325 SCIP_Real infinity, /**< value for infinity */
326 const SCIP_Real* xmin, /**< lower bound on variable interval */
327 const SCIP_Real* xmax, /**< upper bound on variable interval */
328 SCIP_Real* objmin, /**< buffer to store lower bound of objective */
329 SCIP_Real* objmax /**< buffer to store upper bound of objective */
330 );
331
332/** interval evaluate one constraint function for given variable bounds */
333SCIP_EXPORT
335 SCIP* scip, /**< SCIP data structure */
336 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
337 SCIP_Real infinity, /**< value for infinity */
338 int considx, /**< index of constraint to evaluate */
339 const SCIP_Real* xmin, /**< lower bound on variable interval */
340 const SCIP_Real* xmax, /**< upper bound on variable interval */
341 SCIP_Real* conmin, /**< buffer to store lower bound of constraint */
342 SCIP_Real* conmax /**< buffer to store upper bound of constraint */
343 );
344
345/** computes the objective gradient in a given point
346 *
347 * @return SCIP_INVALIDDATA, if the function or its gradient could not be evaluated (domain error, etc.)
348 */
349SCIP_EXPORT
351 SCIP* scip, /**< SCIP data structure */
352 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
353 const SCIP_Real* x, /**< point where to evaluate */
354 SCIP_Bool isnewx, /**< has the point x changed since the last call to some evaluation function? */
355 SCIP_Real* objval, /**< pointer to buffer objective value */
356 SCIP_Real* objgrad /**< pointer to buffer (dense) objective gradient */
357 );
358
359/** computes a constraints gradient in a given point
360 *
361 * @return SCIP_INVALIDDATA, if the function or its gradient could not be evaluated (domain error, etc.)
362 */
363SCIP_EXPORT
365 SCIP* scip, /**< SCIP data structure */
366 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
367 const int considx, /**< index of constraint to compute gradient for */
368 const SCIP_Real* x, /**< point where to evaluate */
369 SCIP_Bool isnewx, /**< has the point x changed since the last call to some evaluation function? */
370 SCIP_Real* conval, /**< pointer to store constraint value */
371 SCIP_Real* congrad /**< pointer to store (dense) constraint gradient */
372 );
373
374/** gets sparsity pattern (rowwise) of Jacobian matrix
375 *
376 * Note that internal data is returned in *rowoffsets and *cols, thus the user does not need to allocate memory there.
377 * Adding or deleting constraints destroys the sparsity structure and make another call to this function necessary.
378 */
379SCIP_EXPORT
381 SCIP* scip, /**< SCIP data structure */
382 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
383 const int** rowoffsets, /**< pointer to store pointer that stores the offsets to each rows sparsity pattern in col, can be NULL */
384 const int** cols, /**< pointer to store pointer that stores the indices of variables that appear in each row,
385 * rowoffset[nconss] gives length of col, can be NULL */
386 const SCIP_Bool** colnlflags, /**< flags indicating whether an entry in nonlinear (sorted row-wise), can be NULL */
387 int* nnlnz /**< number of nonlinear nonzeroes */
388 );
389
390/** gets sparsity pattern (columnwise) of Jacobian matrix
391 *
392 * Note that internal data is returned in *coloffsets and *rows, thus the user does not need to allocate memory there.
393 * Adding or deleting constraints destroys the sparsity structure and make another call to this function necessary.
394 */
395SCIP_EXPORT
397 SCIP* scip, /**< SCIP data structure */
398 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
399 const int** coloffsets, /**< pointer to store pointer that stores the offsets to each column's sparsity pattern in row, can be NULL */
400 const int** rows, /**< pointer to store pointer that stores the indices of rows that each variable participates in,
401 * coloffset[nvars] gives length of row, can be NULL */
402 const SCIP_Bool** rownlflags, /**< flags indicating whether an entry in nonlinear (sorted column-wise) */
403 int* nnlnz /**< number of nonlinear nonzeroes */
404 );
405
406/** gets nonzero indices in the objective gradient
407 *
408 * Note that internal data is returned in *nz and *nlnz, thus the user does not need to allocate memory there.
409 */
410SCIP_EXPORT
412 SCIP* scip, /**< SCIP data structure */
413 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
414 const int** nz, /**< pointer to store pointer that stores the nonzeroes of the objective gradient */
415 const SCIP_Bool** nlnz, /**< flags marking nonlinear nonzeroes */
416 int* nnz, /**< number of nonzeroes */
417 int* nnlnz /**< number of nonlinear nonzeroes */
418 );
419
420/** evaluates the Jacobian matrix in a given point
421 *
422 * The values in the Jacobian matrix are returned in the same order as specified by the offset and col arrays obtained by SCIPnlpiOracleGetJacobianRowSparsity().
423 * The user need to call SCIPnlpiOracleGetJacobianRowSparsity() at least ones before using this function.
424 *
425 * @return SCIP_INVALIDDATA, if the Jacobian could not be evaluated (domain error, etc.)
426 */
427SCIP_EXPORT
429 SCIP* scip, /**< SCIP data structure */
430 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
431 const SCIP_Real* x, /**< point where to evaluate */
432 SCIP_Bool isnewx, /**< has the point x changed since the last call to some evaluation function? */
433 SCIP_Real* convals, /**< pointer to store constraint values, can be NULL */
434 SCIP_Real* jacobi /**< pointer to store sparse jacobian values */
435 );
436
437/** gets sparsity pattern of the Hessian matrix of the Lagrangian
438 *
439 * Note that internal data is returned in *offset and *col, thus the user must not to allocate memory there.
440 * Adding or deleting variables, objective, or constraints may destroy the sparsity structure and make another call to this function necessary.
441 * Only elements of the lower left triangle and the diagonal are counted.
442 */
443SCIP_EXPORT
445 SCIP* scip, /**< SCIP data structure */
446 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
447 const int** offset, /**< pointer to store pointer that stores the offsets to each row's (or col's if colwise == TRUE) sparsity pattern in nzs, can be NULL */
448 const int** allnz, /**< pointer to store pointer that stores the indices of variables that appear in each row (or col if colwise = TRUE), offset[nvars] gives length of nzs, can be NULL */
449 SCIP_Bool colwise /**< tells whether a columnwise (TRUE) or rowwise representation is needed */
450 );
451
452/** evaluates the Hessian matrix of the Lagrangian in a given point
453 *
454 * The values in the Hessian matrix are returned in the same order as specified by the offset and col arrays obtained by SCIPnlpiOracleGetHessianLagSparsity().
455 * The user must call SCIPnlpiOracleGetHessianLagSparsity() at least ones before using this function.
456 * Only elements of the lower left triangle and the diagonal are computed.
457 *
458 * @return SCIP_INVALIDDATA, if the Hessian could not be evaluated (domain error, etc.)
459 */
460SCIP_EXPORT
462 SCIP* scip, /**< SCIP data structure */
463 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
464 const SCIP_Real* x, /**< point where to evaluate */
465 SCIP_Bool isnewx_obj, /**< has the point x changed since the last call to an objective evaluation function? */
466 SCIP_Bool isnewx_cons, /**< has the point x changed since the last call to the constraint evaluation function? */
467 SCIP_Real objfactor, /**< weight for objective function */
468 const SCIP_Real* lambda, /**< array with weights (Lagrangian multipliers) for the constraints */
469 SCIP_Real* hessian, /**< pointer to store sparse hessian values */
470 SCIP_Bool colwise /**< whether the entries should be first sorted column-wise (TRUE) or row-wise */
471 );
472
473/** resets clock that measures evaluation time */
474SCIP_EXPORT
476 SCIP* scip, /**< SCIP data structure */
477 SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
478 );
479
480/** gives time spend in evaluation since last reset of clock
481 *
482 * Gives 0 if the eval clock is disabled.
483 */
484SCIP_EXPORT
486 SCIP* scip, /**< SCIP data structure */
487 SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
488 );
489
490/** prints the problem to a file. */
491SCIP_EXPORT
493 SCIP* scip, /**< SCIP data structure */
494 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
495 FILE* file /**< file to print to, or NULL for standard output */
496 );
497
498/** prints the problem to a file in GAMS format
499 *
500 * If there are variable (equation, resp.) names with more than 9 characters, then variable (equation, resp.) names are prefixed with an unique identifier.
501 * This is to make it easier to identify variables solution output in the listing file.
502 * Names with more than 64 characters are shorten to 64 letters due to GAMS limits.
503 */
504SCIP_EXPORT
506 SCIP* scip, /**< SCIP data structure */
507 SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
508 SCIP_Real* initval, /**< starting point values for variables or NULL */
509 FILE* file /**< file to print to, or NULL for standard output */
510 );
511
512/** @} */
513
514#ifdef __cplusplus
515}
516#endif
517
518#endif
SCIP_VAR ** x
#define SCIP_Bool
Definition def.h:100
#define SCIP_Real
Definition def.h:165
#define infinity
Definition gastrans.c:80
SCIP_RETCODE SCIPnlpiOracleEvalObjectiveValue(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Real *objval)
SCIP_RETCODE SCIPnlpiOracleChgLinearCoefs(SCIP *scip, SCIP_NLPIORACLE *oracle, int considx, int nentries, const int *varidxs, const SCIP_Real *newcoefs)
SCIP_RETCODE SCIPnlpiOracleEvalConstraintInterval(SCIP *scip, SCIP_NLPIORACLE *oracle, SCIP_Real infinity, int considx, const SCIP_Real *xmin, const SCIP_Real *xmax, SCIP_Real *conmin, SCIP_Real *conmax)
SCIP_RETCODE SCIPnlpiOracleGetJacobianRowSparsity(SCIP *scip, SCIP_NLPIORACLE *oracle, const int **rowoffsets, const int **cols, const SCIP_Bool **colnlflags, int *nnlnz)
SCIP_RETCODE SCIPnlpiOracleGetHessianLagSparsity(SCIP *scip, SCIP_NLPIORACLE *oracle, const int **offset, const int **allnz, SCIP_Bool colwise)
SCIP_RETCODE SCIPnlpiOracleChgVarBounds(SCIP *scip, SCIP_NLPIORACLE *oracle, int nvars, const int *indices, const SCIP_Real *lbs, const SCIP_Real *ubs)
SCIP_RETCODE SCIPnlpiOracleAddConstraints(SCIP *scip, SCIP_NLPIORACLE *oracle, 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 **consnames)
SCIP_Bool SCIPnlpiOracleIsConstraintNonlinear(SCIP_NLPIORACLE *oracle, int considx)
SCIP_RETCODE SCIPnlpiOracleDelVarSet(SCIP *scip, SCIP_NLPIORACLE *oracle, int *delstats)
SCIP_RETCODE SCIPnlpiOracleEvalConstraintValues(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Real *convals)
SCIP_RETCODE SCIPnlpiOracleCreate(SCIP *scip, SCIP_NLPIORACLE **oracle)
void SCIPnlpiOracleGetVarCounts(SCIP *scip, SCIP_NLPIORACLE *oracle, const int **lincounts, const int **nlcounts)
char * SCIPnlpiOracleGetConstraintName(SCIP_NLPIORACLE *oracle, int considx)
SCIP_RETCODE SCIPnlpiOracleEvalObjectiveGradient(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real *objval, SCIP_Real *objgrad)
SCIP_RETCODE SCIPnlpiOracleResetEvalTime(SCIP *scip, SCIP_NLPIORACLE *oracle)
SCIP_RETCODE SCIPnlpiOraclePrintProblem(SCIP *scip, SCIP_NLPIORACLE *oracle, FILE *file)
SCIP_RETCODE SCIPnlpiOracleSetObjective(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real constant, int nlin, const int *lininds, const SCIP_Real *linvals, SCIP_EXPR *expr)
SCIP_Real SCIPnlpiOracleGetConstraintRhs(SCIP_NLPIORACLE *oracle, int considx)
SCIP_Real SCIPnlpiOracleGetEvalTime(SCIP *scip, SCIP_NLPIORACLE *oracle)
SCIP_RETCODE SCIPnlpiOracleChgConsSides(SCIP *scip, SCIP_NLPIORACLE *oracle, int nconss, const int *indices, const SCIP_Real *lhss, const SCIP_Real *rhss)
SCIP_Real SCIPnlpiOracleGetConstraintLhs(SCIP_NLPIORACLE *oracle, int considx)
SCIP_RETCODE SCIPnlpiOracleGetJacobianColSparsity(SCIP *scip, SCIP_NLPIORACLE *oracle, const int **coloffsets, const int **rows, const SCIP_Bool **rownlflags, int *nnlnz)
SCIP_RETCODE SCIPnlpiOracleAddVars(SCIP *scip, SCIP_NLPIORACLE *oracle, int nvars, const SCIP_Real *lbs, const SCIP_Real *ubs, const char **varnames)
SCIP_RETCODE SCIPnlpiOracleEvalHessianLag(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx_obj, SCIP_Bool isnewx_cons, SCIP_Real objfactor, const SCIP_Real *lambda, SCIP_Real *hessian, SCIP_Bool colwise)
SCIP_RETCODE SCIPnlpiOracleEvalConstraintGradient(SCIP *scip, SCIP_NLPIORACLE *oracle, const int considx, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real *conval, SCIP_Real *congrad)
int SCIPnlpiOracleGetNVars(SCIP_NLPIORACLE *oracle)
int SCIPnlpiOracleGetNConstraints(SCIP_NLPIORACLE *oracle)
SCIP_RETCODE SCIPnlpiOracleGetObjGradientNnz(SCIP *scip, SCIP_NLPIORACLE *oracle, const int **nz, const SCIP_Bool **nlnz, int *nnz, int *nnlnz)
SCIP_EXPRINTCAPABILITY SCIPnlpiOracleGetEvalCapability(SCIP *scip, SCIP_NLPIORACLE *oracle)
SCIP_Real SCIPnlpiOracleGetObjectiveConstant(SCIP_NLPIORACLE *oracle)
SCIP_RETCODE SCIPnlpiOraclePrintProblemGams(SCIP *scip, SCIP_NLPIORACLE *oracle, SCIP_Real *initval, FILE *file)
SCIP_Bool SCIPnlpiOracleIsVarNonlinear(SCIP *scip, SCIP_NLPIORACLE *oracle, int varidx)
SCIP_RETCODE SCIPnlpiOracleEvalJacobian(SCIP *scip, SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real *convals, SCIP_Real *jacobi)
SCIP_RETCODE SCIPnlpiOracleDelConsSet(SCIP *scip, SCIP_NLPIORACLE *oracle, int *delstats)
SCIP_RETCODE SCIPnlpiOracleSetProblemName(SCIP *scip, SCIP_NLPIORACLE *oracle, const char *name)
SCIP_RETCODE SCIPnlpiOracleChgObjConstant(SCIP *scip, SCIP_NLPIORACLE *oracle, SCIP_Real objconstant)
SCIP_RETCODE SCIPnlpiOracleEvalConstraintValue(SCIP *scip, SCIP_NLPIORACLE *oracle, int considx, const SCIP_Real *x, SCIP_Real *conval)
char ** SCIPnlpiOracleGetVarNames(SCIP_NLPIORACLE *oracle)
SCIP_Real SCIPnlpiOracleGetConstraintLinearCoef(SCIP_NLPIORACLE *oracle, int considx, int varpos)
SCIP_RETCODE SCIPnlpiOracleEvalObjectiveInterval(SCIP *scip, SCIP_NLPIORACLE *oracle, SCIP_Real infinity, const SCIP_Real *xmin, const SCIP_Real *xmax, SCIP_Real *objmin, SCIP_Real *objmax)
const SCIP_Real * SCIPnlpiOracleGetVarLbs(SCIP_NLPIORACLE *oracle)
const SCIP_Real * SCIPnlpiOracleGetVarUbs(SCIP_NLPIORACLE *oracle)
SCIP_RETCODE SCIPnlpiOracleFree(SCIP *scip, SCIP_NLPIORACLE **oracle)
struct SCIP_NlpiOracle SCIP_NLPIORACLE
Definition nlpioracle.h:51
const char * SCIPnlpiOracleGetProblemName(SCIP_NLPIORACLE *oracle)
SCIP_RETCODE SCIPnlpiOracleChgExpr(SCIP *scip, SCIP_NLPIORACLE *oracle, int considx, SCIP_EXPR *expr)
SCIP_Real objval
int nvars
char ** varnames
Definition nlpioracle.c:72
struct SCIP_Expr SCIP_EXPR
Definition type_expr.h:55
type definitions for expression interpreter
unsigned int SCIP_EXPRINTCAPABILITY
type definitions for message output methods
enum SCIP_Retcode SCIP_RETCODE
struct Scip SCIP
Definition type_scip.h:39