Scippy

SCIP

Solving Constraint Integer Programs

type_nlpi.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-2014 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 email to scip@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file type_nlpi.h
17  * @ingroup TYPEDEFINITIONS
18  * @brief type definitions for specific NLP solver interfaces
19  * @author Stefan Vigerske
20  * @author Thorsten Gellermann
21  */
22 
23 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
24 
25 #ifndef __SCIP_TYPE_NLPI_H__
26 #define __SCIP_TYPE_NLPI_H__
27 
28 #include "scip/def.h"
29 #include "scip/type_message.h"
30 #include "blockmemshell/memory.h"
31 #include "nlpi/type_expr.h"
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 typedef struct SCIP_Nlpi SCIP_NLPI; /**< NLP solver interface */
38 typedef struct SCIP_NlpiData SCIP_NLPIDATA; /**< locally defined NLP solver interface data */
39 typedef struct SCIP_NlpiProblem SCIP_NLPIPROBLEM; /**< locally defined NLP solver interface data for a specific problem instance */
40 typedef struct SCIP_NlpStatistics SCIP_NLPSTATISTICS; /**< NLP solve statistics */
41 
42 /** NLP solver parameter */
44 {
45  SCIP_NLPPAR_FROMSCRATCH = 0, /**< solver should start from scratch at next call?: 0 no, 1 yes (int) */
46  SCIP_NLPPAR_VERBLEVEL = 1, /**< verbosity level of output of NLP solver to the screen: 0 off, 1 normal, 2 debug, > 2 more debug (int) */
47  SCIP_NLPPAR_FEASTOL = 2, /**< feasibility tolerance for primal variables and slacks (real) */
48  SCIP_NLPPAR_RELOBJTOL = 3, /**< relative objective tolerance (real) */
49  SCIP_NLPPAR_LOBJLIM = 4, /**< lower objective limit (cutoff) (real) */
50  SCIP_NLPPAR_INFINITY = 5, /**< value for infinity used to decide unbounded sides, unbounded variable and constraint bounds, and upper objective limit (real) */
51  SCIP_NLPPAR_ITLIM = 6, /**< NLP iteration limit (int) */
52  SCIP_NLPPAR_TILIM = 7, /**< NLP time limit (real) */
53  SCIP_NLPPAR_OPTFILE = 8, /**< name of a solver specific option file (string) */
54  SCIP_NLPPAR_FASTFAIL = 9 /**< should the NLP solver stop early if convergence is slow?: 0 no, 1 yes (int) */
55 };
56 typedef enum SCIP_NlpParam SCIP_NLPPARAM; /**< NLP solver parameter */
57 
58 /** NLP solution status */
60 {
61  SCIP_NLPSOLSTAT_GLOBOPT = 0, /**< solved to global optimality */
62  SCIP_NLPSOLSTAT_LOCOPT = 1, /**< solved to local optimality */
63  SCIP_NLPSOLSTAT_FEASIBLE = 2, /**< feasible solution found */
64  SCIP_NLPSOLSTAT_LOCINFEASIBLE = 3, /**< solution found is local infeasible */
65  SCIP_NLPSOLSTAT_GLOBINFEASIBLE = 4, /**< problem is proven infeasible */
66  SCIP_NLPSOLSTAT_UNBOUNDED = 5, /**< problem is unbounded */
67  SCIP_NLPSOLSTAT_UNKNOWN = 6 /**< unknown solution status (e.g., problem not solved yet) */
68 };
69 typedef enum SCIP_NlpSolStat SCIP_NLPSOLSTAT; /** NLP solution status */
70 
71 /** NLP solver termination status */
73 {
74  SCIP_NLPTERMSTAT_OKAY = 0, /**< terminated successfully */
75  SCIP_NLPTERMSTAT_TILIM = 1, /**< time limit exceeded */
76  SCIP_NLPTERMSTAT_ITLIM = 2, /**< iteration limit exceeded */
77  SCIP_NLPTERMSTAT_LOBJLIM = 3, /**< lower objective limit reached */
78  SCIP_NLPTERMSTAT_UOBJLIM = 4, /**< upper objective limit (= infinity) reached */
79  SCIP_NLPTERMSTAT_NUMERR = 5, /**< stopped on numerical error */
80  SCIP_NLPTERMSTAT_EVALERR = 6, /**< stopped on function evaluation error */
81  SCIP_NLPTERMSTAT_MEMERR = 7, /**< memory exceeded */
82  SCIP_NLPTERMSTAT_LICERR = 8, /**< licence error */
83  SCIP_NLPTERMSTAT_OTHER = 9 /**< other error (= this should never happen) */
84 };
85 typedef enum SCIP_NlpTermStat SCIP_NLPTERMSTAT; /** NLP solver termination status */
86 
87 /** copy method of NLP interface (called when SCIP copies plugins)
88  *
89  * input:
90  * - blkmem block memory of target SCIP
91  * - sourcenlpi the NLP interface to copy
92  * - targetnlpi buffer to store pointer to copy of NLP interface
93  */
94 #define SCIP_DECL_NLPICOPY(x) SCIP_RETCODE x (BMS_BLKMEM* blkmem, SCIP_NLPI* sourcenlpi, SCIP_NLPI** targetnlpi)
95 
96 /** destructor of NLP interface to free nlpi data
97  *
98  * input:
99  * - nlpi datastructure for solver interface
100  */
101 #define SCIP_DECL_NLPIFREE(x) SCIP_RETCODE x (SCIP_NLPI* nlpi)
102 
103 /** gets pointer to solver-internal NLP solver
104  *
105  * to do dirty stuff
106  *
107  * input:
108  * - nlpi datastructure for solver interface
109  *
110  * return: void pointer to solver
111  */
112 #define SCIP_DECL_NLPIGETSOLVERPOINTER(x) void* x (SCIP_NLPI* nlpi)
113 
114 /** creates a problem instance
115  *
116  * input:
117  * - nlpi datastructure for solver interface
118  * - problem pointer to store the problem data
119  * - name name of problem, can be NULL
120  */
121 #define SCIP_DECL_NLPICREATEPROBLEM(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM** problem, const char* name)
122 
123 /** free a problem instance
124  *
125  * input:
126  * - nlpi datastructure for solver interface
127  * - problem pointer where problem data is stored
128  */
129 #define SCIP_DECL_NLPIFREEPROBLEM(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM** problem)
130 
131 /** gets pointer to solver-internal problem instance
132  *
133  * to do dirty stuff
134  *
135  * input:
136  * - nlpi datastructure for solver interface
137  * - problem datastructure for problem instance
138  *
139  * return: void pointer to problem instance
140  */
141 #define SCIP_DECL_NLPIGETPROBLEMPOINTER(x) void* x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem)
142 
143 /** add variables
144  *
145  * input:
146  * - nlpi datastructure for solver interface
147  * - problem datastructure for problem instance
148  * - nvars number of variables
149  * - lbs lower bounds of variables, can be NULL if -infinity
150  * - ubs upper bounds of variables, can be NULL if +infinity
151  * - varnames names of variables, can be NULL
152  */
153 #define SCIP_DECL_NLPIADDVARS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int nvars, const SCIP_Real* lbs, \
154  const SCIP_Real* ubs, const char** varnames)
155 
156 /** add constraints
157  * quadratic coefficiens: row oriented matrix for each constraint
158  *
159  * input:
160  * - nlpi datastructure for solver interface
161  * - problem datastructure for problem instance
162  * - ncons number of added constraints
163  * - lhss left hand sides of constraints, can be NULL if -infinity
164  * - rhss right hand sides of constraints, can be NULL if +infinity
165  * - nlininds number of linear coefficients for each constraint
166  * may be NULL in case of no linear part
167  * - lininds indices of variables for linear coefficients for each constraint
168  * may be NULL in case of no linear part
169  * - linvals values of linear coefficient for each constraint
170  * may be NULL in case of no linear part
171  * - nquadelems number of quadratic elements for each constraint
172  * may be NULL in case of no quadratic part
173  * - quadelems quadratic elements for each constraint
174  * may be NULL in case of no quadratic part
175  * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp
176  * entry of array may be NULL in case of no expression tree
177  * may be NULL in case of no expression tree in any constraint
178  * - exprtrees expression tree for nonquadratic part of constraints
179  * entry of array may be NULL in case of no nonquadratic part
180  * may be NULL in case of no nonquadratic part in any constraint
181  * - names of constraints, may be NULL or entries may be NULL
182  */
183 #define SCIP_DECL_NLPIADDCONSTRAINTS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int ncons, const SCIP_Real* lhss, \
184  const SCIP_Real* rhss, const int* nlininds, int* const* lininds, SCIP_Real* const* linvals, const int* nquadelems, \
185  SCIP_QUADELEM* const* quadelems, int* const* exprvaridxs, SCIP_EXPRTREE* const* exprtrees, const char** names)
186 
187 /** sets or overwrites objective, a minimization problem is expected
188  * May change sparsity pattern.
189  *
190  * input:
191  * - nlpi datastructure for solver interface
192  * - problem datastructure for problem instance
193  * - nlins number of linear variables
194  * - lininds variable indices
195  * may be NULL in case of no linear part
196  * - linvals coefficient values
197  * may be NULL in case of no linear part
198  * - nquadelems number of elements in matrix of quadratic part
199  * - quadelems elements of quadratic part
200  * may be NULL in case of no quadratic part
201  * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp
202  * may be NULL in case of no expression tree
203  * - exprtree expression tree for nonquadratic part of objective function
204  * may be NULL in case of no nonquadratic part
205  * - constant objective value offset
206  */
207 #define SCIP_DECL_NLPISETOBJECTIVE(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int nlins, const int* lininds, \
208  const SCIP_Real* linvals, int nquadelems, const SCIP_QUADELEM* quadelems, const int* exprvaridxs, const SCIP_EXPRTREE* exprtree, \
209  const SCIP_Real constant)
210 
211 /** change variable bounds
212  *
213  * input:
214  * - nlpi datastructure for solver interface
215  * - problem datastructure for problem instance
216  * - nvars number of variables to change bounds
217  * - indices indices of variables to change bounds
218  * - lbs new lower bounds
219  * - ubs new upper bounds
220  */
221 #define SCIP_DECL_NLPICHGVARBOUNDS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, const int nvars, const int* indices, \
222  const SCIP_Real* lbs, const SCIP_Real* ubs)
223 
224 /** change constraint sides
225  *
226  * input:
227  * - nlpi datastructure for solver interface
228  * - problem datastructure for problem instance
229  * - nconss number of constraints to change sides
230  * - indices indices of constraints to change sides
231  * - lhss new left hand sides
232  * - rhss new right hand sides
233  */
234 #define SCIP_DECL_NLPICHGCONSSIDES(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int nconss, const int* indices, \
235  const SCIP_Real* lhss, const SCIP_Real* rhss)
236 
237 /** delete a set of variables
238  *
239  * input:
240  * - nlpi datastructure for solver interface
241  * - problem datastructure for problem instance
242  * - dstats deletion status of vars; 1 if var should be deleted, 0 if not
243  *
244  * output:
245  * - dstats new position of var, -1 if var was deleted
246  */
247 #define SCIP_DECL_NLPIDELVARSET(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int* dstats)
248 
249 /** delete a set of constraints
250  *
251  * input:
252  * - nlpi datastructure for solver interface
253  * - problem datastructure for problem instance
254  * - dstats deletion status of rows; 1 if row should be deleted, 0 if not
255  *
256  * output:
257  * - dstats new position of row, -1 if row was deleted
258  */
259 #define SCIP_DECL_NLPIDELCONSSET(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int* dstats)
260 
261 /** changes (or adds) linear coefficients in a constraint or objective
262  *
263  * input:
264  * - nlpi datastructure for solver interface
265  * - problem datastructure for problem instance
266  * - idx index of constraint or -1 for objective
267  * - nvals number of values in linear constraint to change
268  * - varidxs indices of variables which coefficient to change
269  * - vals new values for coefficients
270  */
271 #define SCIP_DECL_NLPICHGLINEARCOEFS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int idx, int nvals, \
272  const int* varidxs, const SCIP_Real* vals)
273 
274 /** changes (or adds) coefficients in the quadratic part of a constraint or objective
275  *
276  * input:
277  * - nlpi datastructure for solver interface
278  * - problem datastructure for problem instance
279  * - idx index of constraint or -1 for objective
280  * - nquadelems number of entries in quadratic matrix to change
281  * - quadelems new elements in quadratic matrix (replacing already existing ones or adding new ones)
282  */
283 #define SCIP_DECL_NLPICHGQUADCOEFS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int idx, int nquadelems, \
284  const SCIP_QUADELEM* quadelems)
285 
286 /** replaces the expression tree of a constraint or objective
287  *
288  * input:
289  * - nlpi datastructure for solver interface
290  * - problem datastructure for problem instance
291  * - idxcons index of constraint or -1 for objective
292  * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp, or NULL
293  * - exprtree new expression tree for constraint or objective, or NULL to only remove previous tree
294  */
295 #define SCIP_DECL_NLPICHGEXPRTREE(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int idxcons, \
296  const int* exprvaridxs, const SCIP_EXPRTREE* exprtree)
297 
298 /** change the value of one parameter in the nonlinear part
299  *
300  * input:
301  * - nlpi datastructure for solver interface
302  * - problem datastructure for problem instance
303  * - idxcons index of constraint or -1 for objective
304  * - idxparam index of parameter
305  * - value new value for nonlinear parameter
306  *
307  * return: Error if parameter does not exist
308  */
309 #define SCIP_DECL_NLPICHGNONLINCOEF(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int idxcons, int idxparam, \
310  SCIP_Real value)
311 
312 /** change the constant offset in the objective
313  *
314  * input:
315  * - nlpi datastructure for solver interface
316  * - problem datastructure for problem instance
317  * - objconstant new value for objective constant
318  */
319 #define SCIP_DECL_NLPICHGOBJCONSTANT(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_Real objconstant)
320 
321 /** sets initial guess for primal variables
322  *
323  * input:
324  * - nlpi datastructure for solver interface
325  * - problem datastructure for problem instance
326  * - primalvalues initial primal values for variables, or NULL to clear previous values
327  * - consdualvalues initial dual values for constraints, or NULL to clear previous values
328  * - varlbdualvalues initial dual values for variable lower bounds, or NULL to clear previous values
329  * - varubdualvalues initial dual values for variable upper bounds, or NULL to clear previous values
330  */
331 #define SCIP_DECL_NLPISETINITIALGUESS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_Real* primalvalues, \
332  SCIP_Real* consdualvalues, SCIP_Real* varlbdualvalues, SCIP_Real* varubdualvalues)
333 
334 /** tries to solve NLP
335  *
336  * input:
337  * - nlpi datastructure for solver interface
338  * - problem datastructure for problem instance
339  */
340 #define SCIP_DECL_NLPISOLVE(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem)
341 
342 /** gives solution status
343  *
344  * input:
345  * - nlpi datastructure for solver interface
346  * - problem datastructure for problem instance
347  *
348  * return: Solution Status
349  */
350 #define SCIP_DECL_NLPIGETSOLSTAT(x) SCIP_NLPSOLSTAT x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem)
351 
352 /** gives termination reason
353  *
354  * input:
355  * - nlpi datastructure for solver interface
356  * - problem datastructure for problem instance
357  *
358  * return: Termination Status
359  */
360 #define SCIP_DECL_NLPIGETTERMSTAT(x) SCIP_NLPTERMSTAT x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem)
361 
362 /** gives primal and dual solution values
363  *
364  * solver can return NULL in dual values if not available
365  * but if solver provides dual values for one side of variable bounds, then it must also provide those for the other side
366  *
367  * for a ranged constraint, the dual variable is positive if the right hand side is active and negative if the left hand side is active
368  *
369  * input:
370  * - nlpi datastructure for solver interface
371  * - problem datastructure for problem instance
372  * - primalvalues buffer to store pointer to array to primal values, or NULL if not needed
373  * - consdualvalues buffer to store pointer to array to dual values of constraints, or NULL if not needed
374  * - varlbdualvalues buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed
375  * - varubdualvalues buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed
376  */
377 #define SCIP_DECL_NLPIGETSOLUTION(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_Real** primalvalues, \
378  SCIP_Real** consdualvalues, SCIP_Real** varlbdualvalues, SCIP_Real** varubdualvalues)
379 
380 /** gives solve statistics
381  *
382  * input:
383  * - nlpi datastructure for solver interface
384  * - problem datastructure for problem instance
385  * - statistics pointer to store statistics
386  *
387  * output:
388  * - statistics solve statistics
389  */
390 #define SCIP_DECL_NLPIGETSTATISTICS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPSTATISTICS* statistics)
391 
392 /** gives required size of a buffer to store a warmstart object
393  *
394  * input:
395  * - nlpi datastructure for solver interface
396  * - problem datastructure for problem instance
397  * - size pointer to store required size for warmstart buffer
398  *
399  * output:
400  * - size required size for warmstart buffer
401  */
402 #define SCIP_DECL_NLPIGETWARMSTARTSIZE(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, size_t* size)
403 
404 /** stores warmstart information in buffer
405  *
406  * required size of buffer should have been obtained by SCIPnlpiGetWarmstartSize before
407  *
408  * input:
409  * - nlpi datastructure for solver interface
410  * - problem datastructure for problem instance
411  * - buffer memory to store warmstart information
412  *
413  * output:
414  * - buffer warmstart information in solver specific data structure
415  */
416 #define SCIP_DECL_NLPIGETWARMSTARTMEMO(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, void* buffer)
417 
418 /** sets warmstart information in solver
419  *
420  * write warmstart to buffer
421  *
422  * input:
423  * - nlpi datastructure for solver interface
424  * - problem datastructure for problem instance
425  * - buffer warmstart information
426  */
427 #define SCIP_DECL_NLPISETWARMSTARTMEMO(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, void* buffer)
428 
429 /**@name Parameter Methods */
430 /**@{ */
431 
432 /** gets integer parameter of NLP
433  *
434  * input:
435  * - nlpi NLP interface structure
436  * - problem datastructure for problem instance
437  * - type parameter number
438  * - ival pointer to store the parameter value
439  *
440  * output:
441  * - ival parameter value
442  */
443 #define SCIP_DECL_NLPIGETINTPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, int* ival)
444 
445 /** sets integer parameter of NLP
446  *
447  * input:
448  * - nlpi NLP interface structure
449  * - problem datastructure for problem instance
450  * - type parameter number
451  * - ival parameter value
452  */
453 #define SCIP_DECL_NLPISETINTPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, int ival)
454 
455 /** gets floating point parameter of NLP
456  *
457  * input:
458  * - nlpi NLP interface structure
459  * - problem datastructure for problem instance, can be NULL only if type == SCIP_NLPPAR_INFINITY
460  * - type parameter number
461  * - dval pointer to store the parameter value
462  *
463  * output:
464  * - dval parameter value
465  */
466 #define SCIP_DECL_NLPIGETREALPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, SCIP_Real* dval)
467 
468 /** sets floating point parameter of NLP
469  *
470  * input:
471  * - nlpi NLP interface structure
472  * - problem datastructure for problem instance, can be NULL only if type == SCIP_NLPPAR_INFINITY
473  * - type parameter number
474  * - dval parameter value
475  */
476 #define SCIP_DECL_NLPISETREALPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, SCIP_Real dval)
477 
478 /** gets string parameter of NLP
479  *
480  * input:
481  * - nlpi NLP interface structure
482  * - problem datastructure for problem instance
483  * - type parameter number
484  * - sval pointer to store the string value, the user must not modify the string
485  *
486  * output:
487  * - sval parameter value
488  */
489 #define SCIP_DECL_NLPIGETSTRINGPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, const char** sval)
490 
491 /** sets string parameter of NLP
492  *
493  * input:
494  * - nlpi NLP interface structure
495  * - problem datastructure for problem instance
496  * - type parameter number
497  * - sval parameter value
498  */
499 #define SCIP_DECL_NLPISETSTRINGPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, const char* sval)
500 
501 /** sets message handler for message output
502  *
503  * input:
504  * - nlpi NLP interface structure
505  * - messagehdlr SCIP message handler, or NULL to suppress all output
506  */
507 #define SCIP_DECL_NLPISETMESSAGEHDLR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_MESSAGEHDLR* messagehdlr)
508 
509 /**@} */
510 #ifdef __cplusplus
511 }
512 #endif
513 
514 #endif /*__SCIP_TYPE_NLPI_H__ */
515