1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 /* */ 3 /* This file is part of the program and library */ 4 /* SCIP --- Solving Constraint Integer Programs */ 5 /* */ 6 /* Copyright (C) 2002-2021 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 scipopt.org. */ 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 */ 43 enum SCIP_NlpParam 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 */ 59 enum SCIP_NlpSolStat 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 */ 72 enum SCIP_NlpTermStat 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_NUMERR = 5, /**< stopped on numerical error */ 79 SCIP_NLPTERMSTAT_EVALERR = 6, /**< stopped on function evaluation error */ 80 SCIP_NLPTERMSTAT_MEMERR = 7, /**< memory exceeded */ 81 SCIP_NLPTERMSTAT_LICERR = 8, /**< licence error */ 82 SCIP_NLPTERMSTAT_OTHER = 9 /**< other error (= this should never happen) */ 83 }; 84 typedef enum SCIP_NlpTermStat SCIP_NLPTERMSTAT; /** NLP solver termination status */ 85 86 /** copy method of NLP interface (called when SCIP copies plugins) 87 * 88 * input: 89 * - blkmem block memory of target SCIP 90 * - sourcenlpi the NLP interface to copy 91 * - targetnlpi buffer to store pointer to copy of NLP interface 92 */ 93 #define SCIP_DECL_NLPICOPY(x) SCIP_RETCODE x (BMS_BLKMEM* blkmem, SCIP_NLPI* sourcenlpi, SCIP_NLPI** targetnlpi) 94 95 /** destructor of NLP interface to free nlpi data 96 * 97 * input: 98 * - nlpi datastructure for solver interface 99 */ 100 #define SCIP_DECL_NLPIFREE(x) SCIP_RETCODE x (SCIP_NLPI* nlpi) 101 102 /** gets pointer to solver-internal NLP solver 103 * 104 * to do dirty stuff 105 * 106 * input: 107 * - nlpi datastructure for solver interface 108 * 109 * return: void pointer to solver 110 */ 111 #define SCIP_DECL_NLPIGETSOLVERPOINTER(x) void* x (SCIP_NLPI* nlpi) 112 113 /** creates a problem instance 114 * 115 * input: 116 * - nlpi datastructure for solver interface 117 * - problem pointer to store the problem data 118 * - name name of problem, can be NULL 119 */ 120 #define SCIP_DECL_NLPICREATEPROBLEM(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM** problem, const char* name) 121 122 /** free a problem instance 123 * 124 * input: 125 * - nlpi datastructure for solver interface 126 * - problem pointer where problem data is stored 127 */ 128 #define SCIP_DECL_NLPIFREEPROBLEM(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM** problem) 129 130 /** gets pointer to solver-internal problem instance 131 * 132 * to do dirty stuff 133 * 134 * input: 135 * - nlpi datastructure for solver interface 136 * - problem datastructure for problem instance 137 * 138 * return: void pointer to problem instance 139 */ 140 #define SCIP_DECL_NLPIGETPROBLEMPOINTER(x) void* x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem) 141 142 /** add variables 143 * 144 * input: 145 * - nlpi datastructure for solver interface 146 * - problem datastructure for problem instance 147 * - nvars number of variables 148 * - lbs lower bounds of variables, can be NULL if -infinity 149 * - ubs upper bounds of variables, can be NULL if +infinity 150 * - varnames names of variables, can be NULL 151 */ 152 #define SCIP_DECL_NLPIADDVARS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int nvars, const SCIP_Real* lbs, \ 153 const SCIP_Real* ubs, const char** varnames) 154 155 /** add constraints 156 * quadratic coefficiens: row oriented matrix for each constraint 157 * 158 * input: 159 * - nlpi datastructure for solver interface 160 * - problem datastructure for problem instance 161 * - ncons number of added constraints 162 * - lhss left hand sides of constraints, can be NULL if -infinity 163 * - rhss right hand sides of constraints, can be NULL if +infinity 164 * - nlininds number of linear coefficients for each constraint 165 * may be NULL in case of no linear part 166 * - lininds indices of variables for linear coefficients for each constraint 167 * may be NULL in case of no linear part 168 * - linvals values of linear coefficient for each constraint 169 * may be NULL in case of no linear part 170 * - nquadelems number of quadratic elements for each constraint 171 * may be NULL in case of no quadratic part 172 * - quadelems quadratic elements for each constraint 173 * may be NULL in case of no quadratic part 174 * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp 175 * entry of array may be NULL in case of no expression tree 176 * may be NULL in case of no expression tree in any constraint 177 * - exprtrees expression tree for nonquadratic part of constraints 178 * entry of array may be NULL in case of no nonquadratic part 179 * may be NULL in case of no nonquadratic part in any constraint 180 * - names of constraints, may be NULL or entries may be NULL 181 */ 182 #define SCIP_DECL_NLPIADDCONSTRAINTS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int ncons, const SCIP_Real* lhss, \ 183 const SCIP_Real* rhss, const int* nlininds, int* const* lininds, SCIP_Real* const* linvals, const int* nquadelems, \ 184 SCIP_QUADELEM* const* quadelems, int* const* exprvaridxs, SCIP_EXPRTREE* const* exprtrees, const char** names) 185 186 /** sets or overwrites objective, a minimization problem is expected 187 * May change sparsity pattern. 188 * 189 * input: 190 * - nlpi datastructure for solver interface 191 * - problem datastructure for problem instance 192 * - nlins number of linear variables 193 * - lininds variable indices 194 * may be NULL in case of no linear part 195 * - linvals coefficient values 196 * may be NULL in case of no linear part 197 * - nquadelems number of elements in matrix of quadratic part 198 * - quadelems elements of quadratic part 199 * may be NULL in case of no quadratic part 200 * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp 201 * may be NULL in case of no expression tree 202 * - exprtree expression tree for nonquadratic part of objective function 203 * may be NULL in case of no nonquadratic part 204 * - constant objective value offset 205 */ 206 #define SCIP_DECL_NLPISETOBJECTIVE(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int nlins, const int* lininds, \ 207 const SCIP_Real* linvals, int nquadelems, const SCIP_QUADELEM* quadelems, const int* exprvaridxs, const SCIP_EXPRTREE* exprtree, \ 208 const SCIP_Real constant) 209 210 /** change variable bounds 211 * 212 * input: 213 * - nlpi datastructure for solver interface 214 * - problem datastructure for problem instance 215 * - nvars number of variables to change bounds 216 * - indices indices of variables to change bounds 217 * - lbs new lower bounds 218 * - ubs new upper bounds 219 */ 220 #define SCIP_DECL_NLPICHGVARBOUNDS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, const int nvars, const int* indices, \ 221 const SCIP_Real* lbs, const SCIP_Real* ubs) 222 223 /** change constraint sides 224 * 225 * input: 226 * - nlpi datastructure for solver interface 227 * - problem datastructure for problem instance 228 * - nconss number of constraints to change sides 229 * - indices indices of constraints to change sides 230 * - lhss new left hand sides 231 * - rhss new right hand sides 232 */ 233 #define SCIP_DECL_NLPICHGCONSSIDES(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int nconss, const int* indices, \ 234 const SCIP_Real* lhss, const SCIP_Real* rhss) 235 236 /** delete a set of variables 237 * 238 * input: 239 * - nlpi datastructure for solver interface 240 * - problem datastructure for problem instance 241 * - dstats deletion status of vars; 1 if var should be deleted, 0 if not 242 * - size of the dstats array 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, int dstatssize) 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 * - size of the dstats array 256 * 257 * output: 258 * - dstats new position of row, -1 if row was deleted 259 */ 260 #define SCIP_DECL_NLPIDELCONSSET(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int* dstats, int dstatssize) 261 262 /** changes (or adds) linear coefficients in a constraint or objective 263 * 264 * input: 265 * - nlpi datastructure for solver interface 266 * - problem datastructure for problem instance 267 * - idx index of constraint or -1 for objective 268 * - nvals number of values in linear constraint to change 269 * - varidxs indices of variables which coefficient to change 270 * - vals new values for coefficients 271 */ 272 #define SCIP_DECL_NLPICHGLINEARCOEFS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int idx, int nvals, \ 273 const int* varidxs, const SCIP_Real* vals) 274 275 /** changes (or adds) coefficients in the quadratic part of a constraint or objective 276 * 277 * input: 278 * - nlpi datastructure for solver interface 279 * - problem datastructure for problem instance 280 * - idx index of constraint or -1 for objective 281 * - nquadelems number of entries in quadratic matrix to change 282 * - quadelems new elements in quadratic matrix (replacing already existing ones or adding new ones) 283 */ 284 #define SCIP_DECL_NLPICHGQUADCOEFS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int idx, int nquadelems, \ 285 const SCIP_QUADELEM* quadelems) 286 287 /** replaces the expression tree of a constraint or objective 288 * 289 * input: 290 * - nlpi datastructure for solver interface 291 * - problem datastructure for problem instance 292 * - idxcons index of constraint or -1 for objective 293 * - exprvaridxs indices of variables in expression tree, maps variable indices in expression tree to indices in nlp, or NULL 294 * - exprtree new expression tree for constraint or objective, or NULL to only remove previous tree 295 */ 296 #define SCIP_DECL_NLPICHGEXPRTREE(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int idxcons, \ 297 const int* exprvaridxs, const SCIP_EXPRTREE* exprtree) 298 299 /** change the value of one parameter in the nonlinear part 300 * 301 * input: 302 * - nlpi datastructure for solver interface 303 * - problem datastructure for problem instance 304 * - idxcons index of constraint or -1 for objective 305 * - idxparam index of parameter 306 * - value new value for nonlinear parameter 307 * 308 * return: Error if parameter does not exist 309 */ 310 #define SCIP_DECL_NLPICHGNONLINCOEF(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, int idxcons, int idxparam, \ 311 SCIP_Real value) 312 313 /** change the constant offset in the objective 314 * 315 * input: 316 * - nlpi datastructure for solver interface 317 * - problem datastructure for problem instance 318 * - objconstant new value for objective constant 319 */ 320 #define SCIP_DECL_NLPICHGOBJCONSTANT(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_Real objconstant) 321 322 /** sets initial guess for primal variables 323 * 324 * input: 325 * - nlpi datastructure for solver interface 326 * - problem datastructure for problem instance 327 * - primalvalues initial primal values for variables, or NULL to clear previous values 328 * - consdualvalues initial dual values for constraints, or NULL to clear previous values 329 * - varlbdualvalues initial dual values for variable lower bounds, or NULL to clear previous values 330 * - varubdualvalues initial dual values for variable upper bounds, or NULL to clear previous values 331 */ 332 #define SCIP_DECL_NLPISETINITIALGUESS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_Real* primalvalues, \ 333 SCIP_Real* consdualvalues, SCIP_Real* varlbdualvalues, SCIP_Real* varubdualvalues) 334 335 /** tries to solve NLP 336 * 337 * input: 338 * - nlpi datastructure for solver interface 339 * - problem datastructure for problem instance 340 */ 341 #define SCIP_DECL_NLPISOLVE(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem) 342 343 /** gives solution status 344 * 345 * input: 346 * - nlpi datastructure for solver interface 347 * - problem datastructure for problem instance 348 * 349 * return: Solution Status 350 */ 351 #define SCIP_DECL_NLPIGETSOLSTAT(x) SCIP_NLPSOLSTAT x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem) 352 353 /** gives termination reason 354 * 355 * input: 356 * - nlpi datastructure for solver interface 357 * - problem datastructure for problem instance 358 * 359 * return: Termination Status 360 */ 361 #define SCIP_DECL_NLPIGETTERMSTAT(x) SCIP_NLPTERMSTAT x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem) 362 363 /** gives primal and dual solution values 364 * 365 * solver can return NULL in dual values if not available 366 * but if solver provides dual values for one side of variable bounds, then it must also provide those for the other side 367 * 368 * 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 369 * 370 * input: 371 * - nlpi datastructure for solver interface 372 * - problem datastructure for problem instance 373 * - primalvalues buffer to store pointer to array to primal values, or NULL if not needed 374 * - consdualvalues buffer to store pointer to array to dual values of constraints, or NULL if not needed 375 * - varlbdualvalues buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed 376 * - varubdualvalues buffer to store pointer to array to dual values of variable lower bounds, or NULL if not needed 377 * - objval pointer to store the objective value, or NULL if not needed 378 */ 379 #define SCIP_DECL_NLPIGETSOLUTION(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_Real** primalvalues, \ 380 SCIP_Real** consdualvalues, SCIP_Real** varlbdualvalues, SCIP_Real** varubdualvalues, SCIP_Real* objval) 381 382 /** gives solve statistics 383 * 384 * input: 385 * - nlpi datastructure for solver interface 386 * - problem datastructure for problem instance 387 * - statistics pointer to store statistics 388 * 389 * output: 390 * - statistics solve statistics 391 */ 392 #define SCIP_DECL_NLPIGETSTATISTICS(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPSTATISTICS* statistics) 393 394 /** gives required size of a buffer to store a warmstart object 395 * 396 * input: 397 * - nlpi datastructure for solver interface 398 * - problem datastructure for problem instance 399 * - size pointer to store required size for warmstart buffer 400 * 401 * output: 402 * - size required size for warmstart buffer 403 */ 404 #define SCIP_DECL_NLPIGETWARMSTARTSIZE(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, size_t* size) 405 406 /** stores warmstart information in buffer 407 * 408 * required size of buffer should have been obtained by SCIPnlpiGetWarmstartSize before 409 * 410 * input: 411 * - nlpi datastructure for solver interface 412 * - problem datastructure for problem instance 413 * - buffer memory to store warmstart information 414 * 415 * output: 416 * - buffer warmstart information in solver specific data structure 417 */ 418 #define SCIP_DECL_NLPIGETWARMSTARTMEMO(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, void* buffer) 419 420 /** sets warmstart information in solver 421 * 422 * write warmstart to buffer 423 * 424 * input: 425 * - nlpi datastructure for solver interface 426 * - problem datastructure for problem instance 427 * - buffer warmstart information 428 */ 429 #define SCIP_DECL_NLPISETWARMSTARTMEMO(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, void* buffer) 430 431 /**@name Parameter Methods */ 432 /**@{ */ 433 434 /** gets integer parameter of NLP 435 * 436 * input: 437 * - nlpi NLP interface structure 438 * - problem datastructure for problem instance 439 * - type parameter number 440 * - ival pointer to store the parameter value 441 * 442 * output: 443 * - ival parameter value 444 */ 445 #define SCIP_DECL_NLPIGETINTPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, int* ival) 446 447 /** sets integer parameter of NLP 448 * 449 * input: 450 * - nlpi NLP interface structure 451 * - problem datastructure for problem instance 452 * - type parameter number 453 * - ival parameter value 454 */ 455 #define SCIP_DECL_NLPISETINTPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, int ival) 456 457 /** gets floating point parameter of NLP 458 * 459 * input: 460 * - nlpi NLP interface structure 461 * - problem datastructure for problem instance, can be NULL only if type == SCIP_NLPPAR_INFINITY 462 * - type parameter number 463 * - dval pointer to store the parameter value 464 * 465 * output: 466 * - dval parameter value 467 */ 468 #define SCIP_DECL_NLPIGETREALPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, SCIP_Real* dval) 469 470 /** sets floating point parameter of NLP 471 * 472 * input: 473 * - nlpi NLP interface structure 474 * - problem datastructure for problem instance, can be NULL only if type == SCIP_NLPPAR_INFINITY 475 * - type parameter number 476 * - dval parameter value 477 */ 478 #define SCIP_DECL_NLPISETREALPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, SCIP_Real dval) 479 480 /** gets string parameter of NLP 481 * 482 * input: 483 * - nlpi NLP interface structure 484 * - problem datastructure for problem instance 485 * - type parameter number 486 * - sval pointer to store the string value, the user must not modify the string 487 * 488 * output: 489 * - sval parameter value 490 */ 491 #define SCIP_DECL_NLPIGETSTRINGPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, const char** sval) 492 493 /** sets string parameter of NLP 494 * 495 * input: 496 * - nlpi NLP interface structure 497 * - problem datastructure for problem instance 498 * - type parameter number 499 * - sval parameter value 500 */ 501 #define SCIP_DECL_NLPISETSTRINGPAR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_NLPIPROBLEM* problem, SCIP_NLPPARAM type, const char* sval) 502 503 /** sets message handler for message output 504 * 505 * input: 506 * - nlpi NLP interface structure 507 * - messagehdlr SCIP message handler, or NULL to suppress all output 508 */ 509 #define SCIP_DECL_NLPISETMESSAGEHDLR(x) SCIP_RETCODE x (SCIP_NLPI* nlpi, SCIP_MESSAGEHDLR* messagehdlr) 510 511 /**@} */ 512 #ifdef __cplusplus 513 } 514 #endif 515 516 #endif /*__SCIP_TYPE_NLPI_H__ */ 517