Scippy

SCIP

Solving Constraint Integer Programs

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-2019 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scip.zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file nlpioracle.h
17  * @brief methods to store an NLP and request function, gradient, and hessian values
18  * @author Stefan Vigerske
19  *
20  * Not a full NLPI, but implements a common part of many NLPIs that takes care
21  * of the problem storage and function, gradient, and hessian evaluation.
22  */
23 
24 #ifndef __SCIP_NLPI_ORACLE_H__
25 #define __SCIP_NLPI_ORACLE_H__
26 
27 #include "scip/type_message.h"
28 #include "nlpi/type_nlpi.h"
30 
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 typedef struct SCIP_NlpiOracle SCIP_NLPIORACLE; /**< NLPI oracle data structure */
37 
38 /** creates an NLPIORACLE data structure */
41  BMS_BLKMEM* blkmem, /**< block memory */
42  SCIP_NLPIORACLE** oracle /**< pointer to store NLPIORACLE data structure */
43  );
44 
45 /** frees an NLPIORACLE data structure */
48  SCIP_NLPIORACLE** oracle /**< pointer to NLPIORACLE data structure */
49  );
50 
51 /** sets the value for infinity */
54  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
55  SCIP_Real infinity /**< value to use for infinity */
56  );
57 
58 /** gets the value for infinity */
61  SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
62  );
63 
64 /** sets the problem name (used for printing) */
67  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
68  const char* name /**< name of problem */
69  );
70 
71 /** gets the problem name, or NULL if none set */
74  SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
75  );
76 
77 /** adds variables */
80  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
81  int nvars, /**< number of variables to add */
82  const SCIP_Real* lbs, /**< array with lower bounds of new variables, or NULL if all -infinity */
83  const SCIP_Real* ubs, /**< array with upper bounds of new variables, or NULL if all +infinity */
84  const char** varnames /**< array with names of new variables, or NULL if no names should be stored */
85  );
86 
87 /** adds constraints
88  *
89  * linear coefficients: row(=constraint) oriented matrix;
90  * quadratic coefficients: row oriented matrix for each constraint
91  */
94  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
95  int nconss, /**< number of constraints to add */
96  const SCIP_Real* lhss, /**< array with left-hand sides of constraints, or NULL if all -infinity */
97  const SCIP_Real* rhss, /**< array with right-hand sides of constraints, or NULL if all +infinity */
98  const int* nlininds, /**< number of linear coefficients for each constraint, may be NULL in case of no linear part */
99  int* const* lininds, /**< indices of variables for linear coefficients for each constraint, may be NULL in case of no linear part */
100  SCIP_Real* const* linvals, /**< values of linear coefficient for each constraint, may be NULL in case of no linear part */
101  const int* nquadelems, /**< number of elements in matrix of quadratic part for each constraint,
102  * may be NULL in case of no quadratic part in any constraint */
103  SCIP_QUADELEM* const* quadelems, /**< quadratic elements specifying quadratic part for each constraint, entry of array may be NULL in case of no quadratic part,
104  * may be NULL in case of no quadratic part in any constraint */
105  int* const* exprvaridxs, /**< NULL if no nonquadratic parts, otherwise epxrvaridxs[.] maps variable indices in expression tree to indices in nlp */
106  SCIP_EXPRTREE* const* exprtrees, /**< NULL if no nonquadratic parts, otherwise exprtrees[.] gives nonquadratic part,
107  * or NULL if no nonquadratic part in this constraint */
108  const char** consnames /**< names of new constraints, or NULL if no names should be stored */
109  );
110 
111 /** sets or overwrites objective, a minimization problem is expected
112  *
113  * May change sparsity pattern.
114  */
117  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
118  const SCIP_Real constant, /**< constant part of objective */
119  int nlin, /**< number of linear variable coefficients */
120  const int* lininds, /**< indices of linear variables, or NULL if no linear part */
121  const SCIP_Real* linvals, /**< coefficients of linear variables, or NULL if no linear part */
122  int nquadelems, /**< number of entries in matrix of quadratic part */
123  const SCIP_QUADELEM* quadelems, /**< entries in matrix of quadratic part, may be NULL in case of no quadratic part */
124  const int* exprvaridxs, /**< maps variable indices in expression tree to indices in nlp, or NULL if no nonquadratic part */
125  const SCIP_EXPRTREE* exprtree /**< expression tree of nonquadratic part, or NULL if no nonquadratic part */
126  );
127 
128 /** change variable bounds */
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 */
141  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
142  int nconss, /**< number of constraints to change sides */
143  const int* indices, /**< array with indices of constraints to change sides */
144  const SCIP_Real* lhss, /**< array with new left-hand sides, or NULL if all should be -infty */
145  const SCIP_Real* rhss /**< array with new right-hand sides, or NULL if all should be +infty */
146  );
147 
148 /** deletes a set of variables */
151  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
152  int* delstats /**< array with deletion status of vars in input (1 if var should be deleted, 0 if not);
153  * new position of var in output (-1 if var was deleted) */
154  );
155 
156 /** deletes a set of constraints */
159  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
160  int* delstats /**< array with deletion status of rows in input (1 if row should be deleted, 0 if not);
161  * new position of row in output (-1 if row was deleted) */
162  );
163 
164 /** changes (or adds) linear coefficients in one constraint or objective */
167  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
168  int considx, /**< index of constraint where linear coefficients should be changed, or -1 for objective */
169  int nentries, /**< number of coefficients to change */
170  const int* varidxs, /**< array with indices of variables which coefficients should be changed */
171  const SCIP_Real* newcoefs /**< array with new coefficients of variables */
172  );
173 
174 /** changes (or adds) coefficients in the quadratic part of one constraint or objective */
177  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
178  int considx, /**< index of constraint where quadratic coefficients should be changed, or -1 for objective */
179  int nquadelems, /**< number of entries in quadratic constraint to change */
180  const SCIP_QUADELEM* quadelems /**< new elements in quadratic matrix (replacing already existing ones or adding new ones) */
181  );
182 
183 /** replaces expression tree of one constraint or objective */
186  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
187  int considx, /**< index of constraint where expression tree should be changed, or -1 for objective */
188  const int* exprvaridxs, /**< problem indices of variables in expression tree */
189  const SCIP_EXPRTREE* exprtree /**< new expression tree, or NULL */
190  );
191 
192 /** changes one parameter of expression tree of one constraint or objective
193  */
196  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
197  int considx, /**< index of constraint where parameter should be changed in expression tree, or -1 for objective */
198  int paramidx, /**< index of parameter */
199  SCIP_Real paramval /**< new value of parameter */
200  );
201 
202 /** changes the constant value in the objective function
203  */
206  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
207  SCIP_Real objconstant /**< new value for objective constant */
208  );
209 
210 /** gives the current number of variables */
213  SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
214  );
215 
216 /** gives the current number of constraints */
219  SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
220  );
221 
222 /** gives the variables lower bounds */
225  SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
226  );
227 
228 /** gives the variables upper bounds */
231  SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
232  );
233 
234 /** gives the variables names, or NULL if not set */
237  SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
238  );
239 
240 /** Gives maximum degree of a variable w.r.t. objective and all constraints.
241  * The degree of a variable is the degree of the summand where it appears in, and is infinity for nonpolynomial terms.
242  */
245  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
246  int varidx /**< the variable for which the degree is returned */
247  );
248 
249 /** Gives maximum degree of all variables w.r.t. objective and all constraints.
250  * The degree of a variable is the degree of the summand where it appears in, and is infinity for nonpolynomial terms.
251  */
254  SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
255  );
256 
257 /** gives left-hand side of a constraint */
260  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
261  int considx /**< constraint index */
262  );
263 
264 /** gives right-hand side of a constraint */
267  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
268  int considx /**< constraint index */
269  );
270 
271 /** gives name of a constraint, may be NULL */
274  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
275  int considx /**< constraint index */
276  );
277 
278 /** gives maximum degree of a constraint or objective
279  * The degree is the maximal degree of all summands,, and is infinity for nonpolynomial terms.
280  */
283  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
284  int considx /**< index of constraint for which the degree is requested, or -1 for objective */
285  );
286 
287 /** Gives maximum degree over all constraints and the objective (or over all variables, resp.).
288  * Thus, if this function returns 0, then the objective and all constraints are constant.
289  * If it returns 1, then the problem in linear.
290  * If it returns 2, then its a QP, QCP, or QCQP.
291  * And if it returns > 2, then it is an NLP.
292  */
295  SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
296  );
297 
298 /** Gives the evaluation capabilities that are shared among all expression trees in the problem. */
301  SCIP_NLPIORACLE* oracle /**< pointer to NLPIORACLE data structure */
302  );
303 
304 /** evaluates the objective function in a given point */
307  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
308  const SCIP_Real* x, /**< point where to evaluate */
309  SCIP_Real* objval /**< pointer to store objective value */
310  );
311 
312 /** evaluates one constraint function in a given point */
315  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
316  int considx, /**< index of constraint to evaluate */
317  const SCIP_Real* x, /**< point where to evaluate */
318  SCIP_Real* conval /**< pointer to store constraint value */
319  );
320 
321 /** evaluates all constraint functions in a given point */
324  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
325  const SCIP_Real* x, /**< point where to evaluate */
326  SCIP_Real* convals /**< pointer to store constraint values */
327  );
328 
329 /** computes the objective gradient in a given point
330  *
331  * @return SCIP_INVALIDDATA, if the function or its gradient could not be evaluated (domain error, etc.)
332  */
335  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
336  const SCIP_Real* x, /**< point where to evaluate */
337  SCIP_Bool isnewx, /**< has the point x changed since the last call to some evaluation function? */
338  SCIP_Real* objval, /**< pointer to buffer objective value */
339  SCIP_Real* objgrad /**< pointer to buffer (dense) objective gradient */
340  );
341 
342 /** computes a constraints gradient in a given point
343  *
344  * @return SCIP_INVALIDDATA, if the function or its gradient could not be evaluated (domain error, etc.)
345  */
348  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
349  const int considx, /**< index of constraint to compute gradient for */
350  const SCIP_Real* x, /**< point where to evaluate */
351  SCIP_Bool isnewx, /**< has the point x changed since the last call to some evaluation function? */
352  SCIP_Real* conval, /**< pointer to store constraint value */
353  SCIP_Real* congrad /**< pointer to store (dense) constraint gradient */
354  );
355 
356 /** gets sparsity pattern (rowwise) of Jacobian matrix
357  *
358  * Note that internal data is returned in *offset and *col, thus the user does not need to allocate memory there.
359  * Adding or deleting constraints destroys the sparsity structure and make another call to this function necessary.
360  */
363  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
364  const int** offset, /**< pointer to store pointer that stores the offsets to each rows sparsity pattern in col, can be NULL */
365  const int** col /**< pointer to store pointer that stores the indices of variables that appear in each row,
366  * offsets[nconss] gives length of col, can be NULL */
367  );
368 
369 /** evaluates the Jacobi matrix in a given point
370  *
371  * The values in the Jacobi matrix are returned in the same order as specified by the offset and col arrays obtained by SCIPnlpiOracleGetJacobianSparsity.
372  * The user need to call SCIPnlpiOracleGetJacobianSparsity at least ones before using this function.
373  *
374  * @return SCIP_INVALIDDATA, if the Jacobian could not be evaluated (domain error, etc.)
375  */
378  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
379  const SCIP_Real* x, /**< point where to evaluate */
380  SCIP_Bool isnewx, /**< has the point x changed since the last call to some evaluation function? */
381  SCIP_Real* convals, /**< pointer to store constraint values, can be NULL */
382  SCIP_Real* jacobi /**< pointer to store sparse jacobian values */
383  );
384 
385 /** gets sparsity pattern of the Hessian matrix of the Lagrangian
386  *
387  * Note that internal data is returned in *offset and *col, thus the user must not to allocate memory there.
388  * Adding or deleting variables, objective, or constraints may destroy the sparsity structure and make another call to this function necessary.
389  * Only elements of the lower left triangle and the diagonal are counted.
390  */
393  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
394  const int** offset, /**< pointer to store pointer that stores the offsets to each rows sparsity pattern in col, can be NULL */
395  const int** col /**< pointer to store pointer that stores the indices of variables that appear in each row,
396  * offsets[nconss] gives length of col, can be NULL */
397  );
398 
399 /** evaluates the Hessian matrix of the Lagrangian in a given point
400  *
401  * The values in the Hessian matrix are returned in the same order as specified by the offset and col arrays obtained by SCIPnlpiOracleGetHessianLagSparsity.
402  * The user must call SCIPnlpiOracleGetHessianLagSparsity at least ones before using this function.
403  * Only elements of the lower left triangle and the diagonal are computed.
404  *
405  * @return SCIP_INVALIDDATA, if the Hessian could not be evaluated (domain error, etc.)
406  */
409  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
410  const SCIP_Real* x, /**< point where to evaluate */
411  SCIP_Bool isnewx, /**< has the point x changed since the last call to some evaluation function? */
412  SCIP_Real objfactor, /**< weight for objective function */
413  const SCIP_Real* lambdas, /**< array with weights (Lagrangian multipliers) for the constraints */
414  SCIP_Real* hessian /**< pointer to store sparse hessian values */
415  );
416 
417 /** prints the problem to a file. */
420  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
421  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
422  FILE* file /**< file to print to, or NULL for standard output */
423  );
424 
425 /** prints the problem to a file in GAMS format
426  * If there are variable (equation, resp.) names with more than 9 characters, then variable (equation, resp.) names are prefixed with an unique identifier.
427  * This is to make it easier to identify variables solution output in the listing file.
428  * Names with more than 64 characters are shorten to 64 letters due to GAMS limits.
429  */
432  SCIP_NLPIORACLE* oracle, /**< pointer to NLPIORACLE data structure */
433  SCIP_Real* initval, /**< starting point values for variables or NULL */
434  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
435  FILE* file /**< file to print to, or NULL for standard output */
436  );
437 
438 #ifdef __cplusplus
439 }
440 #endif
441 
442 #endif
SCIP_EXPORT const SCIP_Real * SCIPnlpiOracleGetVarUbs(SCIP_NLPIORACLE *oracle)
Definition: nlpioracle.c:2232
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleChgQuadCoefs(SCIP_NLPIORACLE *oracle, int considx, int nquadelems, const SCIP_QUADELEM *quadelems)
Definition: nlpioracle.c:2006
SCIP_EXPORT 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:1610
SCIP_EXPORT char ** SCIPnlpiOracleGetVarNames(SCIP_NLPIORACLE *oracle)
Definition: nlpioracle.c:2242
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleEvalJacobian(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real *convals, SCIP_Real *jacobi)
Definition: nlpioracle.c:2658
#define infinity
Definition: gastrans.c:71
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleFree(SCIP_NLPIORACLE **oracle)
Definition: nlpioracle.c:1355
SCIP_EXPORT SCIP_Real SCIPnlpiOracleGetConstraintRhs(SCIP_NLPIORACLE *oracle, int considx)
Definition: nlpioracle.c:2296
type definitions for expression interpreter
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleEvalConstraintGradient(SCIP_NLPIORACLE *oracle, const int considx, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real *conval, SCIP_Real *congrad)
Definition: nlpioracle.c:2492
#define SCIP_EXPORT
Definition: def.h:98
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleEvalConstraintValues(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Real *convals)
Definition: nlpioracle.c:2442
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
SCIP_EXPORT int * SCIPnlpiOracleGetVarDegrees(SCIP_NLPIORACLE *oracle)
Definition: nlpioracle.c:2271
SCIP_EXPORT int SCIPnlpiOracleGetNConstraints(SCIP_NLPIORACLE *oracle)
Definition: nlpioracle.c:2212
unsigned int SCIP_EXPRINTCAPABILITY
SCIP_VAR ** x
Definition: circlepacking.c:54
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleEvalHessianLag(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real objfactor, const SCIP_Real *lambdas, SCIP_Real *hessian)
Definition: nlpioracle.c:2896
SCIP_EXPORT int SCIPnlpiOracleGetVarDegree(SCIP_NLPIORACLE *oracle, int varidx)
Definition: nlpioracle.c:2254
SCIP_EXPORT SCIP_EXPRINTCAPABILITY SCIPnlpiOracleGetEvalCapability(SCIP_NLPIORACLE *oracle)
Definition: nlpioracle.c:2382
SCIP_EXPORT char * SCIPnlpiOracleGetConstraintName(SCIP_NLPIORACLE *oracle, int considx)
Definition: nlpioracle.c:2309
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleEvalObjectiveValue(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Real *objval)
Definition: nlpioracle.c:2404
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleDelVarSet(SCIP_NLPIORACLE *oracle, int *delstats)
Definition: nlpioracle.c:1717
SCIP_EXPORT SCIP_Real SCIPnlpiOracleGetConstraintLhs(SCIP_NLPIORACLE *oracle, int considx)
Definition: nlpioracle.c:2283
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleDelConsSet(SCIP_NLPIORACLE *oracle, int *delstats)
Definition: nlpioracle.c:1827
SCIP_EXPORT int SCIPnlpiOracleGetConstraintDegree(SCIP_NLPIORACLE *oracle, int considx)
Definition: nlpioracle.c:2324
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleEvalConstraintValue(SCIP_NLPIORACLE *oracle, int considx, const SCIP_Real *x, SCIP_Real *conval)
Definition: nlpioracle.c:2423
SCIP_EXPORT const SCIP_Real * SCIPnlpiOracleGetVarLbs(SCIP_NLPIORACLE *oracle)
Definition: nlpioracle.c:2222
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleChgVarBounds(SCIP_NLPIORACLE *oracle, int nvars, const int *indices, const SCIP_Real *lbs, const SCIP_Real *ubs)
Definition: nlpioracle.c:1647
char ** varnames
Definition: nlpioracle.c:67
#define SCIP_Bool
Definition: def.h:70
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleChgObjConstant(SCIP_NLPIORACLE *oracle, SCIP_Real objconstant)
Definition: nlpioracle.c:2186
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleCreate(BMS_BLKMEM *blkmem, SCIP_NLPIORACLE **oracle)
Definition: nlpioracle.c:1328
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleGetHessianLagSparsity(SCIP_NLPIORACLE *oracle, const int **offset, const int **col)
Definition: nlpioracle.c:2797
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOraclePrintProblem(SCIP_NLPIORACLE *oracle, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: nlpioracle.c:2939
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleEvalObjectiveGradient(SCIP_NLPIORACLE *oracle, const SCIP_Real *x, SCIP_Bool isnewx, SCIP_Real *objval, SCIP_Real *objgrad)
Definition: nlpioracle.c:2468
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleGetJacobianSparsity(SCIP_NLPIORACLE *oracle, const int **offset, const int **col)
Definition: nlpioracle.c:2517
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleChgConsSides(SCIP_NLPIORACLE *oracle, int nconss, const int *indices, const SCIP_Real *lhss, const SCIP_Real *rhss)
Definition: nlpioracle.c:1683
SCIP_EXPORT int SCIPnlpiOracleGetNVars(SCIP_NLPIORACLE *oracle)
Definition: nlpioracle.c:2202
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleSetProblemName(SCIP_NLPIORACLE *oracle, const char *name)
Definition: nlpioracle.c:1412
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleAddVars(SCIP_NLPIORACLE *oracle, int nvars, const SCIP_Real *lbs, const SCIP_Real *ubs, const char **varnames)
Definition: nlpioracle.c:1447
SCIP_EXPORT 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:1532
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleSetInfinity(SCIP_NLPIORACLE *oracle, SCIP_Real infinity)
Definition: nlpioracle.c:1384
SCIP_EXPORT SCIP_Real SCIPnlpiOracleGetInfinity(SCIP_NLPIORACLE *oracle)
Definition: nlpioracle.c:1400
#define SCIP_Real
Definition: def.h:164
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOraclePrintProblemGams(SCIP_NLPIORACLE *oracle, SCIP_Real *initval, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: nlpioracle.c:3008
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleChgExprParam(SCIP_NLPIORACLE *oracle, int considx, int paramidx, SCIP_Real paramval)
Definition: nlpioracle.c:2161
SCIP_EXPORT int SCIPnlpiOracleGetMaxDegree(SCIP_NLPIORACLE *oracle)
Definition: nlpioracle.c:2356
BMS_BLKMEM * blkmem
Definition: nlpioracle.c:59
type definitions for message output methods
SCIP_EXPORT const char * SCIPnlpiOracleGetProblemName(SCIP_NLPIORACLE *oracle)
Definition: nlpioracle.c:1435
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:427
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleChgExprtree(SCIP_NLPIORACLE *oracle, int considx, const int *exprvaridxs, const SCIP_EXPRTREE *exprtree)
Definition: nlpioracle.c:2104
SCIP_EXPORT SCIP_RETCODE SCIPnlpiOracleChgLinearCoefs(SCIP_NLPIORACLE *oracle, int considx, int nentries, const int *varidxs, const SCIP_Real *newcoefs)
Definition: nlpioracle.c:1909
type definitions for specific NLP solver interfaces