Scippy

SCIP

Solving Constraint Integer Programs

scip_nlp.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-2025 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 scip_nlp.h
26 * @ingroup PUBLICCOREAPI
27 * @brief public methods for nonlinear relaxation
28 * @author Thorsten Gellermann
29 * @author Stefan Vigerske
30 */
31
32/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
33
34#ifndef __SCIP_SCIP_NLP_H__
35#define __SCIP_SCIP_NLP_H__
36
37
38#include "scip/def.h"
39#include "scip/type_lp.h"
40#include "scip/type_nlp.h"
41#include "scip/type_nlpi.h"
42#include "scip/type_retcode.h"
43#include "scip/type_scip.h"
44#include "scip/type_sol.h"
45#include "scip/type_var.h"
46#include "scip/type_expr.h"
47#include "scip/pub_nlp.h"
48
49#ifdef __cplusplus
50extern "C" {
51#endif
52
53/**@addtogroup PublicNLPMethods
54 *
55 * @{
56 */
57
58/** returns whether the NLP relaxation has been enabled
59 *
60 * If the NLP relaxation is enabled, then SCIP will construct the NLP relaxation when the solving process is about to begin.
61 * To check whether an NLP is existing, use SCIPisNLPConstructed().
62 *
63 * @pre This method can be called if SCIP is in one of the following stages:
64 * - \ref SCIP_STAGE_INITPRESOLVE
65 * - \ref SCIP_STAGE_PRESOLVING
66 * - \ref SCIP_STAGE_EXITPRESOLVE
67 * - \ref SCIP_STAGE_PRESOLVED
68 * - \ref SCIP_STAGE_INITSOLVE
69 * - \ref SCIP_STAGE_SOLVING
70 *
71 * @see SCIPenableNLP
72 */
73SCIP_EXPORT
75 SCIP* scip /**< SCIP data structure */
76 );
77
78/** notifies SCIP that the NLP relaxation should be initialized in INITSOLVE
79 *
80 * This method is typically called by a constraint handler that handles constraints that have a nonlinear representation as nonlinear rows, e.g., cons_nonlinear.
81 *
82 * The function should be called before the branch-and-bound process is initialized, e.g., when presolve is exiting.
83 *
84 * @pre This method can be called if SCIP is in one of the following stages:
85 * - \ref SCIP_STAGE_INITPRESOLVE
86 * - \ref SCIP_STAGE_PRESOLVING
87 * - \ref SCIP_STAGE_EXITPRESOLVE
88 * - \ref SCIP_STAGE_PRESOLVED
89 */
90SCIP_EXPORT
91void SCIPenableNLP(
92 SCIP* scip /**< SCIP data structure */
93 );
94
95/** returns whether an NLP has been constructed
96 *
97 * @pre This method can be called if SCIP is in one of the following stages:
98 * - \ref SCIP_STAGE_INITSOLVE
99 * - \ref SCIP_STAGE_SOLVING
100 */
101SCIP_EXPORT
103 SCIP* scip /**< SCIP data structure */
104 );
105
106/** checks whether the NLP has a continuous variable in a nonlinear term
107 *
108 * @pre This method can be called if SCIP is in one of the following stages:
109 * - \ref SCIP_STAGE_INITSOLVE
110 * - \ref SCIP_STAGE_SOLVING
111 */
112SCIP_EXPORT
114 SCIP* scip, /**< SCIP data structure */
115 SCIP_Bool* result /**< buffer to store result */
116 );
117
118/** gets current NLP variables along with the current number of NLP variables
119 *
120 * @pre This method can be called if SCIP is in one of the following stages:
121 * - \ref SCIP_STAGE_INITSOLVE
122 * - \ref SCIP_STAGE_SOLVING
123 */
124SCIP_EXPORT
126 SCIP* scip, /**< SCIP data structure */
127 SCIP_VAR*** vars, /**< pointer to store the array of NLP variables, or NULL */
128 int* nvars /**< pointer to store the number of NLP variables, or NULL */
129 );
130
131/** gets array with variables of the NLP
132 *
133 * @pre This method can be called if SCIP is in one of the following stages:
134 * - \ref SCIP_STAGE_INITSOLVE
135 * - \ref SCIP_STAGE_SOLVING
136 */
137SCIP_EXPORT
139 SCIP* scip /**< SCIP data structure */
140 );
141
142/** gets current number of variables in NLP
143 *
144 * @pre This method can be called if SCIP is in one of the following stages:
145 * - \ref SCIP_STAGE_INITSOLVE
146 * - \ref SCIP_STAGE_SOLVING
147 */
148SCIP_EXPORT
150 SCIP* scip /**< SCIP data structure */
151 );
152
153/** computes for each variables the number of NLP rows in which the variable appears in the nonlinear part
154 *
155 * @pre This method can be called if SCIP is in one of the following stages:
156 * - \ref SCIP_STAGE_INITSOLVE
157 * - \ref SCIP_STAGE_SOLVING
158 */
159SCIP_EXPORT
161 SCIP* scip, /**< SCIP data structure */
162 int* nlcount /**< an array of length at least SCIPnlpGetNVars() to store nonlinearity counts of variables */
163 );
164
165/** returns dual solution values associated with lower bounds of NLP variables
166 *
167 * @pre This method can be called if SCIP is in one of the following stages:
168 * - \ref SCIP_STAGE_INITSOLVE
169 * - \ref SCIP_STAGE_SOLVING
170 */
171SCIP_EXPORT
173 SCIP* scip /**< SCIP data structure */
174 );
175
176/** returns dual solution values associated with upper bounds of NLP variables
177 *
178 * @pre This method can be called if SCIP is in one of the following stages:
179 * - \ref SCIP_STAGE_INITSOLVE
180 * - \ref SCIP_STAGE_SOLVING
181 */
182SCIP_EXPORT
184 SCIP* scip /**< SCIP data structure */
185 );
186
187/** gets current NLP nonlinear rows along with the current number of NLP nonlinear rows
188 *
189 * @pre This method can be called if SCIP is in one of the following stages:
190 * - \ref SCIP_STAGE_INITSOLVE
191 * - \ref SCIP_STAGE_SOLVING
192 */
193SCIP_EXPORT
195 SCIP* scip, /**< SCIP data structure */
196 SCIP_NLROW*** nlrows, /**< pointer to store the array of NLP nonlinear rows, or NULL */
197 int* nnlrows /**< pointer to store the number of NLP nonlinear rows, or NULL */
198 );
199
200/** gets array with nonlinear rows of the NLP
201 *
202 * @pre This method can be called if SCIP is in one of the following stages:
203 * - \ref SCIP_STAGE_INITSOLVE
204 * - \ref SCIP_STAGE_SOLVING
205 */
206SCIP_EXPORT
208 SCIP* scip /**< SCIP data structure */
209 );
210
211/** gets current number of nonlinear rows in NLP
212 *
213 * @pre This method can be called if SCIP is in one of the following stages:
214 * - \ref SCIP_STAGE_INITSOLVE
215 * - \ref SCIP_STAGE_SOLVING
216 */
217SCIP_EXPORT
219 SCIP* scip /**< SCIP data structure */
220 );
221
222/** gets statistics on convexity of rows in NLP
223 *
224 * Reports counts on the current number of linear rows, convex inequalities, nonconvex inequalities, and nonlinear equalities or ranged rows.
225 * - A nonlinear inequality with infinity left-hand-side is accounted as convex if its expression has been marked as convex.
226 * - A nonlinear inequality with infinity right-hand-side is accounted as convex if its expression has been marked as concave.
227 * - Other nonlinear rows are accounted as nonconvex. Note that convexity for a nonlinear row may just not have been detected.
228 *
229 * @pre This method can be called if SCIP is in one of the following stages:
230 * - \ref SCIP_STAGE_INITSOLVE
231 * - \ref SCIP_STAGE_SOLVING
232 * - \ref SCIP_STAGE_SOLVED
233 */
234SCIP_EXPORT
236 SCIP* scip, /**< SCIP data structure */
237 int* nlinear, /**< buffer to store number of linear rows in NLP, or NULL */
238 int* nconvexineq, /**< buffer to store number of convex inequalities in NLP, or NULL */
239 int* nnonconvexineq, /**< buffer to store number of nonconvex inequalities in NLP, or NULL */
240 int* nnonlineareq /**< buffer to store number of nonlinear equalities or ranged rows in NLP, or NULL */
241 );
242
243/** adds a nonlinear row to the NLP. This row is captured by the NLP.
244 *
245 * @pre This method can be called if SCIP is in one of the following stages:
246 * - \ref SCIP_STAGE_INITSOLVE
247 * - \ref SCIP_STAGE_SOLVING
248 */
249SCIP_EXPORT
251 SCIP* scip, /**< SCIP data structure */
252 SCIP_NLROW* nlrow /**< nonlinear row to add to NLP */
253 );
254
255/** removes a nonlinear row from the NLP
256 *
257 * This row is released in the NLP.
258 *
259 * @pre This method can be called if SCIP is in one of the following stages:
260 * - \ref SCIP_STAGE_INITSOLVE
261 * - \ref SCIP_STAGE_SOLVING
262 * - \ref SCIP_STAGE_SOLVED
263 * - \ref SCIP_STAGE_EXITSOLVE
264 */
265SCIP_EXPORT
267 SCIP* scip, /**< SCIP data structure */
268 SCIP_NLROW* nlrow /**< nonlinear row to add to NLP */
269 );
270
271/** makes sure that the NLP of the current node is flushed
272 *
273 * @pre This method can be called if SCIP is in one of the following stages:
274 * - \ref SCIP_STAGE_INITSOLVE
275 * - \ref SCIP_STAGE_SOLVING
276 */
277SCIP_EXPORT
279 SCIP* scip /**< SCIP data structure */
280 );
281
282/** sets or clears initial primal guess for NLP solution (start point for NLP solver)
283 *
284 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
285 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
286 *
287 * @pre This method can be called if SCIP is in one of the following stages:
288 * - \ref SCIP_STAGE_INITSOLVE
289 * - \ref SCIP_STAGE_SOLVING
290 */
291SCIP_EXPORT
293 SCIP* scip, /**< SCIP data structure */
294 SCIP_Real* initialguess /**< values of initial guess (corresponding to variables from SCIPgetNLPVarsData), or NULL to use no start point */
295 );
296
297/** sets initial primal guess for NLP solution (start point for NLP solver)
298 *
299 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
300 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
301 *
302 * @pre This method can be called if SCIP is in one of the following stages:
303 * - \ref SCIP_STAGE_INITSOLVE
304 * - \ref SCIP_STAGE_SOLVING
305 */
306SCIP_EXPORT
308 SCIP* scip, /**< SCIP data structure */
309 SCIP_SOL* sol /**< solution which values should be taken as initial guess, or NULL for LP solution */
310 );
311
312/** solves the current NLP (or diving NLP if in diving mode) with given parameters
313 *
314 * Typical use is
315 *
316 * SCIP_NLPPARAM nlparam = { SCIP_NLPPARAM_DEFAULT(scip); }
317 * nlpparam.iterlimit = 42;
318 * SCIP_CALL( SCIPsolveNLPParam(scip, nlpparam) );
319 *
320 * or, in one line:
321 *
322 * SCIP_CALL( SCIPsolveNLPParam(scip, (SCIP_NLPPARAM){ SCIP_NLPPARAM_DEFAULT(scip), .iterlimit = 42 }) );
323 *
324 * To get the latter, also \ref SCIPsolveNLP can be used.
325 *
326 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
327 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
328 *
329 * @pre This method can be called if SCIP is in one of the following stages:
330 * - \ref SCIP_STAGE_INITSOLVE
331 * - \ref SCIP_STAGE_SOLVING
332 */
333SCIP_EXPORT
335 SCIP* scip, /**< SCIP data structure */
336 SCIP_NLPPARAM param /**< NLP solve parameters */
337 );
338
339/** solves the current NLP (or diving NLP if in diving mode) with non-default parameters given as optional arguments
340 *
341 * Typical use is
342 *
343 * SCIP_CALL( SCIPsolveNLP(scip) );
344 *
345 * to solve with default parameters.
346 * Additionally, one or several values of SCIP_NLPPARAM can be set:
347 *
348 * SCIP_CALL( SCIPsolveNLP(scip, .iterlimit = 42, .verblevel = 1) ); //lint !e666
349 *
350 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
351 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
352 *
353 * @pre This method can be called if SCIP is in one of the following stages:
354 * - \ref SCIP_STAGE_INITSOLVE
355 * - \ref SCIP_STAGE_SOLVING
356 */
357/* the scip argument has been made part of the variadic arguments, since ISO C99 requires at least one argument for the "..." part and we want to allow leaving all parameters at default
358 * for the same reason, we have the .caller argument, so that macro SCIP_VARARGS_REST will have at least one arg to return
359 */
360#if !defined(_MSC_VER) || _MSC_VER >= 1800
361#define SCIPsolveNLP(...) \
362 SCIPsolveNLPParam(SCIP_VARARGS_FIRST((__VA_ARGS__, ignored)), \
363 (SCIP_NLPPARAM){ SCIP_NLPPARAM_DEFAULT_INITS(SCIP_VARARGS_FIRST((__VA_ARGS__, ignored))), SCIP_VARARGS_REST(__VA_ARGS__, .caller = __FILE__) })
364#else
365/* very old MSVC doesn't support C99's designated initializers, so have a version of SCIPsolveNLP() that just ignores given parameters
366 * (compilation of scip_nlp.c will print a warning)
367 */
368#define SCIPsolveNLP(...) \
369 SCIPsolveNLPParam(SCIP_VARARGS_FIRST((__VA_ARGS__, ignored)), SCIP_NLPPARAM_DEFAULT_STATIC)
370#endif
371
372
373/** gets solution status of current NLP
374 *
375 * @pre This method can be called if SCIP is in one of the following stages:
376 * - \ref SCIP_STAGE_INITSOLVE
377 * - \ref SCIP_STAGE_SOLVING
378 */
379SCIP_EXPORT
381 SCIP* scip /**< SCIP data structure */
382 );
383
384/** gets termination status of last NLP solve
385 *
386 * @pre This method can be called if SCIP is in one of the following stages:
387 * - \ref SCIP_STAGE_INITSOLVE
388 * - \ref SCIP_STAGE_SOLVING
389 */
390SCIP_EXPORT
392 SCIP* scip /**< SCIP data structure */
393 );
394
395/** gives statistics (number of iterations, solving time, ...) of last NLP solve
396 *
397 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
398 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
399 *
400 * @pre This method can be called if SCIP is in one of the following stages:
401 * - \ref SCIP_STAGE_INITSOLVE
402 * - \ref SCIP_STAGE_SOLVING
403 */
404SCIP_EXPORT
406 SCIP* scip, /**< SCIP data structure */
407 SCIP_NLPSTATISTICS* statistics /**< pointer to store statistics */
408 );
409
410/** gets objective value of current NLP
411 *
412 * @pre This method can be called if SCIP is in one of the following stages:
413 * - \ref SCIP_STAGE_INITSOLVE
414 * - \ref SCIP_STAGE_SOLVING
415 */
416SCIP_EXPORT
418 SCIP* scip /**< SCIP data structure */
419 );
420
421/** indicates whether a solution for the current NLP is available
422 *
423 * The solution may be optimal, feasible, or infeasible.
424 * Thus, returns whether the NLP solution status is at most \ref SCIP_NLPSOLSTAT_LOCINFEASIBLE.
425 *
426 * @pre This method can be called if SCIP is in one of the following stages:
427 * - \ref SCIP_STAGE_INITSOLVE
428 * - \ref SCIP_STAGE_SOLVING
429 */
430SCIP_EXPORT
432 SCIP* scip /**< SCIP data structure */
433 );
434
435/** gets fractional variables of last NLP solution along with solution values and fractionalities
436 *
437 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
438 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
439 *
440 * @pre This method can be called if SCIP is in one of the following stages:
441 * - \ref SCIP_STAGE_INITSOLVE
442 * - \ref SCIP_STAGE_SOLVING
443 */
444SCIP_EXPORT
446 SCIP* scip, /**< SCIP data structure */
447 SCIP_VAR*** fracvars, /**< pointer to store the array of NLP fractional variables, or NULL */
448 SCIP_Real** fracvarssol, /**< pointer to store the array of NLP fractional variables solution values, or NULL */
449 SCIP_Real** fracvarsfrac, /**< pointer to store the array of NLP fractional variables fractionalities, or NULL */
450 int* nfracvars, /**< pointer to store the number of NLP fractional variables , or NULL */
451 int* npriofracvars /**< pointer to store the number of NLP fractional variables with maximal branching priority, or NULL */
452 );
453
454/** writes current NLP to a file
455 *
456 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
457 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
458 *
459 * @pre This method can be called if SCIP is in one of the following stages:
460 * - \ref SCIP_STAGE_INITSOLVE
461 * - \ref SCIP_STAGE_SOLVING
462 */
463SCIP_EXPORT
465 SCIP* scip, /**< SCIP data structure */
466 const char* filename /**< file name */
467 );
468
469/** gets the NLP interface and problem used by the SCIP NLP
470 *
471 * @warning With the NLPI and its problem, all methods defined in \ref scip_nlpi.h and \ref pub_nlpi.h can be used.
472 * It needs to be ensured that the full internal state of the NLPI does not change or is recovered completely
473 * after the end of the method that uses the NLPI. In particular, if the NLP or its solution is manipulated
474 * (e.g. by calling one of the SCIPaddNlpi...() or the SCIPsolveNlpi() method), one has to check in advance
475 * whether the NLP is currently solved. If this is the case, one has to make sure that the internal solution
476 * status is recovered completely again. Additionally one has to resolve the NLP with
477 * SCIPsolveNlpi() in order to reinstall the internal solution status.
478 *
479 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
480 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
481 *
482 * @pre This method can be called if SCIP is in one of the following stages:
483 * - \ref SCIP_STAGE_INITSOLVE
484 * - \ref SCIP_STAGE_SOLVING
485 */
486SCIP_EXPORT
488 SCIP* scip, /**< SCIP data structure */
489 SCIP_NLPI** nlpi, /**< pointer to store the NLP solver interface */
490 SCIP_NLPIPROBLEM** nlpiproblem /**< pointer to store the NLP solver interface problem */
491 );
492
493/**@} */
494
495/**@addtogroup PublicNLPDiveMethods
496 *
497 * @{ */
498
499/** initiates NLP diving
500 *
501 * Makes functions SCIPchgVarObjDiveNLP(), SCIPchgVarBoundsDiveNLP() and SCIPchgVarsBoundsDiveNLP() available.
502 * Further, SCIPsolveNLP() can be used to solve the diving NLP.
503 *
504 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
505 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
506 *
507 * @pre This method can be called if SCIP is in one of the following stages:
508 * - \ref SCIP_STAGE_INITSOLVE
509 * - \ref SCIP_STAGE_SOLVING
510 */
511SCIP_EXPORT
513 SCIP* scip /**< SCIP data structure */
514 );
515
516/** ends NLP diving
517 *
518 * Resets changes made by SCIPchgVarObjDiveNLP(), SCIPchgVarBoundsDiveNLP(), and SCIPchgVarsBoundsDiveNLP().
519 *
520 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
521 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
522 *
523 * @pre This method can be called if SCIP is in one of the following stages:
524 * - \ref SCIP_STAGE_INITSOLVE
525 * - \ref SCIP_STAGE_SOLVING
526 */
527SCIP_EXPORT
529 SCIP* scip /**< SCIP data structure */
530 );
531
532/** changes linear objective coefficient of a variable in diving NLP
533 *
534 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
535 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
536 *
537 * @pre This method can be called if SCIP is in one of the following stages:
538 * - \ref SCIP_STAGE_INITSOLVE
539 * - \ref SCIP_STAGE_SOLVING
540 */
541SCIP_EXPORT
543 SCIP* scip, /**< SCIP data structure */
544 SCIP_VAR* var, /**< variable which coefficient to change */
545 SCIP_Real coef /**< new value for coefficient */
546 );
547
548/** changes bounds of a variable in diving NLP
549 *
550 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
551 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
552 *
553 * @pre This method can be called if SCIP is in one of the following stages:
554 * - \ref SCIP_STAGE_INITSOLVE
555 * - \ref SCIP_STAGE_SOLVING
556 */
557SCIP_EXPORT
559 SCIP* scip, /**< SCIP data structure */
560 SCIP_VAR* var, /**< variable which bounds to change */
561 SCIP_Real lb, /**< new lower bound */
562 SCIP_Real ub /**< new upper bound */
563 );
564
565/** changes bounds of a set of variables in diving NLP
566 *
567 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
568 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
569 *
570 * @pre This method can be called if SCIP is in one of the following stages:
571 * - \ref SCIP_STAGE_INITSOLVE
572 * - \ref SCIP_STAGE_SOLVING
573 */
574SCIP_EXPORT
576 SCIP* scip, /**< SCIP data structure */
577 int nvars, /**< number of variables which bounds to changes */
578 SCIP_VAR** vars, /**< variables which bounds to change */
579 SCIP_Real* lbs, /**< new lower bounds */
580 SCIP_Real* ubs /**< new upper bounds */
581 );
582
583/**@} */
584
585/**@addtogroup PublicNLRowMethods
586 *
587 * @{
588 */
589
590/** creates and captures a nonlinear row
591 *
592 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
593 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
594 *
595 * @pre This method can be called if SCIP is in one of the following stages:
596 * - \ref SCIP_STAGE_PRESOLVED
597 * - \ref SCIP_STAGE_INITSOLVE
598 * - \ref SCIP_STAGE_SOLVING
599 */
600SCIP_EXPORT
602 SCIP* scip, /**< SCIP data structure */
603 SCIP_NLROW** nlrow, /**< buffer to store pointer to nonlinear row */
604 const char* name, /**< name of nonlinear row */
605 SCIP_Real constant, /**< constant */
606 int nlinvars, /**< number of linear variables */
607 SCIP_VAR** linvars, /**< linear variables, or NULL if nlinvars == 0 */
608 SCIP_Real* lincoefs, /**< linear coefficients, or NULL if nlinvars == 0 */
609 SCIP_EXPR* expr, /**< nonlinear expression, or NULL */
610 SCIP_Real lhs, /**< left hand side */
611 SCIP_Real rhs, /**< right hand side */
612 SCIP_EXPRCURV curvature /**< curvature of the nonlinear row */
613 );
614
615/** creates and captures a nonlinear row without any coefficients
616 *
617 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
618 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
619 *
620 * @pre This method can be called if SCIP is in one of the following stages:
621 * - \ref SCIP_STAGE_PRESOLVED
622 * - \ref SCIP_STAGE_INITSOLVE
623 * - \ref SCIP_STAGE_SOLVING
624 */
625SCIP_EXPORT
627 SCIP* scip, /**< SCIP data structure */
628 SCIP_NLROW** nlrow, /**< pointer to nonlinear row */
629 const char* name, /**< name of nonlinear row */
630 SCIP_Real lhs, /**< left hand side */
631 SCIP_Real rhs /**< right hand side */
632 );
633
634/** creates and captures a nonlinear row from a linear row
635 *
636 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
637 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
638 *
639 * @pre This method can be called if SCIP is in one of the following stages:
640 * - \ref SCIP_STAGE_PRESOLVED
641 * - \ref SCIP_STAGE_INITSOLVE
642 * - \ref SCIP_STAGE_SOLVING
643 */
644SCIP_EXPORT
646 SCIP* scip, /**< SCIP data structure */
647 SCIP_NLROW** nlrow, /**< pointer to nonlinear row */
648 SCIP_ROW* row /**< the linear row to copy */
649 );
650
651/** increases usage counter of a nonlinear row
652 *
653 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
654 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
655 *
656 * @pre This method can be called if SCIP is in one of the following stages:
657 * - \ref SCIP_STAGE_PRESOLVED
658 * - \ref SCIP_STAGE_INITSOLVE
659 * - \ref SCIP_STAGE_SOLVING
660 */
661SCIP_EXPORT
663 SCIP* scip, /**< SCIP data structure */
664 SCIP_NLROW* nlrow /**< nonlinear row to capture */
665 );
666
667/** decreases usage counter of a nonlinear row, and frees memory if necessary
668 *
669 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
670 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
671 *
672 * @pre This method can be called if SCIP is in one of the following stages:
673 * - \ref SCIP_STAGE_PRESOLVED
674 * - \ref SCIP_STAGE_INITSOLVE
675 * - \ref SCIP_STAGE_SOLVING
676 * - \ref SCIP_STAGE_EXITSOLVE
677 */
678SCIP_EXPORT
680 SCIP* scip, /**< SCIP data structure */
681 SCIP_NLROW** nlrow /**< pointer to nonlinear row */
682 );
683
684/** changes left hand side of a nonlinear row
685 *
686 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
687 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
688 *
689 * @pre This method can be called if SCIP is in one of the following stages:
690 * - \ref SCIP_STAGE_PRESOLVED
691 * - \ref SCIP_STAGE_INITSOLVE
692 * - \ref SCIP_STAGE_SOLVING
693 */
694SCIP_EXPORT
696 SCIP* scip, /**< SCIP data structure */
697 SCIP_NLROW* nlrow, /**< NLP nonlinear row */
698 SCIP_Real lhs /**< new left hand side */
699 );
700
701/** changes right hand side of a nonlinear row
702 *
703 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
704 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
705 *
706 * @pre This method can be called if SCIP is in one of the following stages:
707 * - \ref SCIP_STAGE_PRESOLVED
708 * - \ref SCIP_STAGE_INITSOLVE
709 * - \ref SCIP_STAGE_SOLVING
710 */
711SCIP_EXPORT
713 SCIP* scip, /**< SCIP data structure */
714 SCIP_NLROW* nlrow, /**< NLP nonlinear row */
715 SCIP_Real rhs /**< new right hand side */
716 );
717
718/** changes constant of a nonlinear row
719 *
720 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
721 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
722 *
723 * @pre This method can be called if SCIP is in one of the following stages:
724 * - \ref SCIP_STAGE_PRESOLVED
725 * - \ref SCIP_STAGE_INITSOLVE
726 * - \ref SCIP_STAGE_SOLVING
727 */
728SCIP_EXPORT
730 SCIP* scip, /**< SCIP data structure */
731 SCIP_NLROW* nlrow, /**< NLP row */
732 SCIP_Real constant /**< new value for constant */
733 );
734
735/** set curvature of a nonlinear row */
736SCIP_EXPORT
738 SCIP* scip, /**< SCIP data structure */
739 SCIP_NLROW* nlrow, /**< NLP row */
740 SCIP_EXPRCURV curvature /**< curvature of NLP row */
741 );
742
743/** adds variable with a linear coefficient to a nonlinear row
744 *
745 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
746 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
747 *
748 * @pre This method can be called if SCIP is in one of the following stages:
749 * - \ref SCIP_STAGE_PRESOLVED
750 * - \ref SCIP_STAGE_INITSOLVE
751 * - \ref SCIP_STAGE_SOLVING
752 */
753SCIP_EXPORT
755 SCIP* scip, /**< SCIP data structure */
756 SCIP_NLROW* nlrow, /**< NLP row */
757 SCIP_VAR* var, /**< problem variable */
758 SCIP_Real val /**< value of coefficient in linear part of row */
759 );
760
761/** adds variables with linear coefficients to a row
762 *
763 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
764 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
765 *
766 * @pre This method can be called if SCIP is in one of the following stages:
767 * - \ref SCIP_STAGE_PRESOLVED
768 * - \ref SCIP_STAGE_INITSOLVE
769 * - \ref SCIP_STAGE_SOLVING
770 */
771SCIP_EXPORT
773 SCIP* scip, /**< SCIP data structure */
774 SCIP_NLROW* nlrow, /**< NLP row */
775 int nvars, /**< number of variables to add to the row */
776 SCIP_VAR** vars, /**< problem variables to add */
777 SCIP_Real* vals /**< values of coefficients in linear part of row */
778 );
779
780/** changes linear coefficient of a variables in a nonlinear row
781 *
782 * Setting the coefficient to 0.0 means that it is removed from the row.
783 * The variable does not need to exists before.
784 *
785 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
786 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
787 *
788 * @pre This method can be called if SCIP is in one of the following stages:
789 * - \ref SCIP_STAGE_PRESOLVED
790 * - \ref SCIP_STAGE_INITSOLVE
791 * - \ref SCIP_STAGE_SOLVING
792 */
793SCIP_EXPORT
795 SCIP* scip, /**< SCIP data structure */
796 SCIP_NLROW* nlrow, /**< NLP row */
797 SCIP_VAR* var, /**< variable */
798 SCIP_Real coef /**< new value of coefficient */
799 );
800
801/** sets or deletes expression in a nonlinear row
802 *
803 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
804 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
805 *
806 * @pre This method can be called if SCIP is in one of the following stages:
807 * - \ref SCIP_STAGE_PRESOLVED
808 * - \ref SCIP_STAGE_INITSOLVE
809 * - \ref SCIP_STAGE_SOLVING
810 */
811SCIP_EXPORT
813 SCIP* scip, /**< SCIP data structure */
814 SCIP_NLROW* nlrow, /**< NLP row */
815 SCIP_EXPR* expr /**< expression, or NULL */
816 );
817
818/** recalculates the activity of a nonlinear row in the last NLP solution
819 *
820 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
821 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
822 *
823 * @pre This method can be called if SCIP is in one of the following stages:
824 * - \ref SCIP_STAGE_PRESOLVED
825 * - \ref SCIP_STAGE_INITSOLVE
826 * - \ref SCIP_STAGE_SOLVING
827 */
828SCIP_EXPORT
830 SCIP* scip, /**< SCIP data structure */
831 SCIP_NLROW* nlrow /**< NLP nonlinear row */
832 );
833
834/** returns the activity of a nonlinear row in the last NLP solution
835 *
836 * If row cannot be evaluated at NLP solution, then activity is set to SCIP_INVALID.
837 *
838 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
839 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
840 *
841 * @pre This method can be called if SCIP is in one of the following stages:
842 * - \ref SCIP_STAGE_INITSOLVE
843 * - \ref SCIP_STAGE_SOLVING
844 */
845SCIP_EXPORT
847 SCIP* scip, /**< SCIP data structure */
848 SCIP_NLROW* nlrow, /**< NLP nonlinear row */
849 SCIP_Real* activity /**< pointer to store activity value */
850 );
851
852/** gives the feasibility of a nonlinear row in the last NLP solution: negative value means infeasibility
853 *
854 * If row cannot be evaluated at NLP solution, then feasibility is set to SCIP_INVALID.
855 *
856 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
857 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
858 *
859 * @pre This method can be called if SCIP is in one of the following stages:
860 * - \ref SCIP_STAGE_INITSOLVE
861 * - \ref SCIP_STAGE_SOLVING
862 */
863SCIP_EXPORT
865 SCIP* scip, /**< SCIP data structure */
866 SCIP_NLROW* nlrow, /**< NLP nonlinear row */
867 SCIP_Real* feasibility /**< pointer to store feasibility value */
868 );
869
870/** recalculates the activity of a nonlinear row for the current pseudo solution
871 *
872 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
873 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
874 *
875 * @pre This method can be called if SCIP is in one of the following stages:
876 * - \ref SCIP_STAGE_INITSOLVE
877 * - \ref SCIP_STAGE_SOLVING
878 */
879SCIP_EXPORT
881 SCIP* scip, /**< SCIP data structure */
882 SCIP_NLROW* nlrow /**< NLP nonlinear row */
883 );
884
885/** gives the activity of a nonlinear row for the current pseudo solution
886 *
887 * If row cannot be evaluated at pseudo solution, then activity is set to SCIP_INVALID.
888 *
889 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
890 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
891 *
892 * @pre This method can be called if SCIP is in one of the following stages:
893 * - \ref SCIP_STAGE_INITSOLVE
894 * - \ref SCIP_STAGE_SOLVING
895 */
896SCIP_EXPORT
898 SCIP* scip, /**< SCIP data structure */
899 SCIP_NLROW* nlrow, /**< NLP nonlinear row */
900 SCIP_Real* pseudoactivity /**< pointer to store pseudo activity value */
901 );
902
903/** gives the feasibility of a nonlinear row for the current pseudo solution: negative value means infeasibility
904 *
905 * If row cannot be evaluated at pseudo solution, then feasibility is set to SCIP_INVALID.
906 *
907 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
908 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
909 *
910 * @pre This method can be called if SCIP is in one of the following stages:
911 * - \ref SCIP_STAGE_INITSOLVE
912 * - \ref SCIP_STAGE_SOLVING
913 */
914SCIP_EXPORT
916 SCIP* scip, /**< SCIP data structure */
917 SCIP_NLROW* nlrow, /**< NLP nonlinear row */
918 SCIP_Real* pseudofeasibility /**< pointer to store pseudo feasibility value */
919 );
920
921/** recalculates the activity of a nonlinear row in the last NLP or pseudo solution
922 *
923 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
924 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
925 *
926 * @pre This method can be called if SCIP is in one of the following stages:
927 * - \ref SCIP_STAGE_INITSOLVE
928 * - \ref SCIP_STAGE_SOLVING
929 */
930SCIP_EXPORT
932 SCIP* scip, /**< SCIP data structure */
933 SCIP_NLROW* nlrow /**< NLP nonlinear row */
934 );
935
936/** gives the activity of a nonlinear row in the last NLP or pseudo solution
937 *
938 * If row cannot be evaluated, then activity is set to SCIP_INVALID.
939 *
940 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
941 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
942 *
943 * @pre This method can be called if SCIP is in one of the following stages:
944 * - \ref SCIP_STAGE_INITSOLVE
945 * - \ref SCIP_STAGE_SOLVING
946 */
947SCIP_EXPORT
949 SCIP* scip, /**< SCIP data structure */
950 SCIP_NLROW* nlrow, /**< NLP nonlinear row */
951 SCIP_Real* activity /**< pointer to store activity value */
952 );
953
954/** gives the feasibility of a nonlinear row in the last NLP or pseudo solution
955 *
956 * If row cannot be evaluated, then feasibility is set to SCIP_INVALID.
957 *
958 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
959 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
960 *
961 * @pre This method can be called if SCIP is in one of the following stages:
962 * - \ref SCIP_STAGE_INITSOLVE
963 * - \ref SCIP_STAGE_SOLVING
964 */
965SCIP_EXPORT
967 SCIP* scip, /**< SCIP data structure */
968 SCIP_NLROW* nlrow, /**< NLP nonlinear row */
969 SCIP_Real* feasibility /**< pointer to store feasibility value */
970 );
971
972/** gives the activity of a nonlinear row for the given primal solution or NLP solution or pseudo solution
973 *
974 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
975 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
976 *
977 * @pre This method can be called if SCIP is in one of the following stages:
978 * - \ref SCIP_STAGE_INITSOLVE
979 * - \ref SCIP_STAGE_SOLVING
980 */
981SCIP_EXPORT
983 SCIP* scip, /**< SCIP data structure */
984 SCIP_NLROW* nlrow, /**< NLP nonlinear row */
985 SCIP_SOL* sol, /**< primal CIP solution, or NULL for NLP solution of pseudo solution */
986 SCIP_Real* activity /**< pointer to store activity value */
987 );
988
989/** gives the feasibility of a nonlinear row for the given primal solution
990 *
991 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
992 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
993 *
994 * @pre This method can be called if SCIP is in one of the following stages:
995 * - \ref SCIP_STAGE_INITSOLVE
996 * - \ref SCIP_STAGE_SOLVING
997 */
998SCIP_EXPORT
1000 SCIP* scip, /**< SCIP data structure */
1001 SCIP_NLROW* nlrow, /**< NLP nonlinear row */
1002 SCIP_SOL* sol, /**< primal CIP solution */
1003 SCIP_Real* feasibility /**< pointer to store feasibility value */
1004 );
1005
1006/** gives the minimal and maximal activity of a nonlinear row w.r.t. the variable's bounds
1007 *
1008 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1009 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1010 *
1011 * @pre This method can be called if SCIP is in one of the following stages:
1012 * - \ref SCIP_STAGE_PRESOLVED
1013 * - \ref SCIP_STAGE_INITSOLVE
1014 * - \ref SCIP_STAGE_SOLVING
1015 */
1016SCIP_EXPORT
1018 SCIP* scip, /**< SCIP data structure */
1019 SCIP_NLROW* nlrow, /**< NLP row */
1020 SCIP_Real* minactivity, /**< buffer to store minimal activity, or NULL */
1021 SCIP_Real* maxactivity /**< buffer to store maximal activity, or NULL */
1022 );
1023
1024/** prints a nonlinear row to file stream
1025 *
1026 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1027 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1028 *
1029 * @pre This method can be called if SCIP is in one of the following stages:
1030 * - \ref SCIP_STAGE_PRESOLVED
1031 * - \ref SCIP_STAGE_INITSOLVE
1032 * - \ref SCIP_STAGE_SOLVING
1033 */
1034SCIP_EXPORT
1036 SCIP* scip, /**< SCIP data structure */
1037 SCIP_NLROW* nlrow, /**< NLP row */
1038 FILE* file /**< output file (or NULL for standard output) */
1039 );
1040
1041/**@} */
1042
1043#ifdef __cplusplus
1044}
1045#endif
1046
1047#endif
common defines and data types used in all packages of SCIP
#define SCIP_Bool
Definition: def.h:91
#define SCIP_Real
Definition: def.h:156
SCIP_RETCODE SCIPendDiveNLP(SCIP *scip)
Definition: scip_nlp.c:830
SCIP_RETCODE SCIPchgVarsBoundsDiveNLP(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_Real *lbs, SCIP_Real *ubs)
Definition: scip_nlp.c:917
SCIP_RETCODE SCIPstartDiveNLP(SCIP *scip)
Definition: scip_nlp.c:802
SCIP_RETCODE SCIPchgVarBoundsDiveNLP(SCIP *scip, SCIP_VAR *var, SCIP_Real lb, SCIP_Real ub)
Definition: scip_nlp.c:886
SCIP_RETCODE SCIPchgVarObjDiveNLP(SCIP *scip, SCIP_VAR *var, SCIP_Real coef)
Definition: scip_nlp.c:856
SCIP_RETCODE SCIPhasNLPContinuousNonlinearity(SCIP *scip, SCIP_Bool *result)
Definition: scip_nlp.c:125
SCIP_RETCODE SCIPdelNlRow(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:424
SCIP_RETCODE SCIPaddNlRow(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:396
SCIP_RETCODE SCIPflushNLP(SCIP *scip)
Definition: scip_nlp.c:448
SCIP_RETCODE SCIPwriteNLP(SCIP *scip, const char *filename)
Definition: scip_nlp.c:727
SCIP_Bool SCIPisNLPConstructed(SCIP *scip)
Definition: scip_nlp.c:110
SCIP_NLPSOLSTAT SCIPgetNLPSolstat(SCIP *scip)
Definition: scip_nlp.c:574
SCIP_RETCODE SCIPsetNLPInitialGuess(SCIP *scip, SCIP_Real *initialguess)
Definition: scip_nlp.c:474
SCIP_Real SCIPgetNLPObjval(SCIP *scip)
Definition: scip_nlp.c:645
SCIP_RETCODE SCIPsolveNLPParam(SCIP *scip, SCIP_NLPPARAM param)
Definition: scip_nlp.c:545
SCIP_RETCODE SCIPgetNLPI(SCIP *scip, SCIP_NLPI **nlpi, SCIP_NLPIPROBLEM **nlpiproblem)
Definition: scip_nlp.c:762
SCIP_RETCODE SCIPgetNLPFracVars(SCIP *scip, SCIP_VAR ***fracvars, SCIP_Real **fracvarssol, SCIP_Real **fracvarsfrac, int *nfracvars, int *npriofracvars)
Definition: scip_nlp.c:696
int SCIPgetNNLPVars(SCIP *scip)
Definition: scip_nlp.c:201
SCIP_Bool SCIPisNLPEnabled(SCIP *scip)
Definition: scip_nlp.c:74
SCIP_Real * SCIPgetNLPVarsUbDualsol(SCIP *scip)
Definition: scip_nlp.c:269
SCIP_RETCODE SCIPsetNLPInitialGuessSol(SCIP *scip, SCIP_SOL *sol)
Definition: scip_nlp.c:501
SCIP_RETCODE SCIPgetNLPVarsNonlinearity(SCIP *scip, int *nlcount)
Definition: scip_nlp.c:223
SCIP_RETCODE SCIPgetNLPNlRowsData(SCIP *scip, SCIP_NLROW ***nlrows, int *nnlrows)
Definition: scip_nlp.c:291
void SCIPenableNLP(SCIP *scip)
Definition: scip_nlp.c:95
int SCIPgetNNLPNlRows(SCIP *scip)
Definition: scip_nlp.c:341
SCIP_VAR ** SCIPgetNLPVars(SCIP *scip)
Definition: scip_nlp.c:179
SCIP_Bool SCIPhasNLPSolution(SCIP *scip)
Definition: scip_nlp.c:671
SCIP_RETCODE SCIPgetNLPNlRowsStat(SCIP *scip, int *nlinear, int *nconvexineq, int *nnonconvexineq, int *nnonlineareq)
Definition: scip_nlp.c:369
SCIP_NLROW ** SCIPgetNLPNlRows(SCIP *scip)
Definition: scip_nlp.c:319
SCIP_NLPTERMSTAT SCIPgetNLPTermstat(SCIP *scip)
Definition: scip_nlp.c:596
SCIP_RETCODE SCIPgetNLPVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars)
Definition: scip_nlp.c:149
SCIP_RETCODE SCIPgetNLPStatistics(SCIP *scip, SCIP_NLPSTATISTICS *statistics)
Definition: scip_nlp.c:621
SCIP_Real * SCIPgetNLPVarsLbDualsol(SCIP *scip)
Definition: scip_nlp.c:247
SCIP_RETCODE SCIPsetNlRowExpr(SCIP *scip, SCIP_NLROW *nlrow, SCIP_EXPR *expr)
Definition: scip_nlp.c:1248
SCIP_RETCODE SCIPgetNlRowActivityBounds(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *minactivity, SCIP_Real *maxactivity)
Definition: scip_nlp.c:1593
SCIP_RETCODE SCIPaddLinearCoefToNlRow(SCIP *scip, SCIP_NLROW *nlrow, SCIP_VAR *var, SCIP_Real val)
Definition: scip_nlp.c:1161
SCIP_RETCODE SCIPcaptureNlRow(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:1035
SCIP_RETCODE SCIPrecalcNlRowNLPActivity(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:1274
SCIP_RETCODE SCIPcreateEmptyNlRow(SCIP *scip, SCIP_NLROW **nlrow, const char *name, SCIP_Real lhs, SCIP_Real rhs)
Definition: scip_nlp.c:986
SCIP_RETCODE SCIPgetNlRowSolFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_SOL *sol, SCIP_Real *feasibility)
Definition: scip_nlp.c:1558
SCIP_RETCODE SCIPchgNlRowLinearCoef(SCIP *scip, SCIP_NLROW *nlrow, SCIP_VAR *var, SCIP_Real coef)
Definition: scip_nlp.c:1222
SCIP_RETCODE SCIPgetNlRowActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *activity)
Definition: scip_nlp.c:1460
SCIP_RETCODE SCIPgetNlRowNLPFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *feasibility)
Definition: scip_nlp.c:1333
SCIP_RETCODE SCIPgetNlRowPseudoActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *pseudoactivity)
Definition: scip_nlp.c:1384
SCIP_RETCODE SCIPchgNlRowRhs(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real rhs)
Definition: scip_nlp.c:1103
SCIP_RETCODE SCIPreleaseNlRow(SCIP *scip, SCIP_NLROW **nlrow)
Definition: scip_nlp.c:1058
SCIP_RETCODE SCIPgetNlRowFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *feasibility)
Definition: scip_nlp.c:1491
SCIP_RETCODE SCIPchgNlRowConstant(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real constant)
Definition: scip_nlp.c:1126
SCIP_RETCODE SCIPrecalcNlRowActivity(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:1430
SCIP_RETCODE SCIPchgNlRowLhs(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real lhs)
Definition: scip_nlp.c:1080
SCIP_RETCODE SCIPgetNlRowNLPActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *activity)
Definition: scip_nlp.c:1303
SCIP_RETCODE SCIPgetNlRowPseudoFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *pseudofeasibility)
Definition: scip_nlp.c:1408
SCIP_RETCODE SCIPprintNlRow(SCIP *scip, SCIP_NLROW *nlrow, FILE *file)
Definition: scip_nlp.c:1617
SCIP_RETCODE SCIPgetNlRowSolActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_SOL *sol, SCIP_Real *activity)
Definition: scip_nlp.c:1522
void SCIPsetNlRowCurvature(SCIP *scip, SCIP_NLROW *nlrow, SCIP_EXPRCURV curvature)
Definition: scip_nlp.c:1140
SCIP_RETCODE SCIPcreateNlRowFromRow(SCIP *scip, SCIP_NLROW **nlrow, SCIP_ROW *row)
Definition: scip_nlp.c:1012
SCIP_RETCODE SCIPcreateNlRow(SCIP *scip, SCIP_NLROW **nlrow, const char *name, SCIP_Real constant, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, SCIP_EXPR *expr, SCIP_Real lhs, SCIP_Real rhs, SCIP_EXPRCURV curvature)
Definition: scip_nlp.c:954
SCIP_RETCODE SCIPaddLinearCoefsToNlRow(SCIP *scip, SCIP_NLROW *nlrow, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
Definition: scip_nlp.c:1185
SCIP_RETCODE SCIPrecalcNlRowPseudoActivity(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:1361
public methods for NLP management
type and macro definitions related to algebraic expressions
SCIP_EXPRCURV
Definition: type_expr.h:61
type definitions for LP management
type definitions for NLP management
type definitions for NLP solver interfaces
enum SCIP_NlpSolStat SCIP_NLPSOLSTAT
Definition: type_nlpi.h:168
enum SCIP_NlpTermStat SCIP_NLPTERMSTAT
Definition: type_nlpi.h:184
type definitions for return codes for SCIP methods
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
type definitions for SCIP's main datastructure
type definitions for storing primal CIP solutions
type definitions for problem variables