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-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 scip_nlp.h
17  * @ingroup PUBLICCOREAPI
18  * @brief public methods for nonlinear relaxations
19  * @author Tobias Achterberg
20  * @author Timo Berthold
21  * @author Thorsten Koch
22  * @author Alexander Martin
23  * @author Marc Pfetsch
24  * @author Kati Wolter
25  * @author Gregor Hendel
26  * @author Robert Lion Gottwald
27  */
28 
29 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
30 
31 #ifndef __SCIP_SCIP_NLP_H__
32 #define __SCIP_SCIP_NLP_H__
33 
34 
35 #include "nlpi/type_expr.h"
36 #include "nlpi/type_nlpi.h"
37 #include "scip/def.h"
38 #include "scip/type_lp.h"
39 #include "scip/type_nlp.h"
40 #include "scip/type_retcode.h"
41 #include "scip/type_scip.h"
42 #include "scip/type_sol.h"
43 #include "scip/type_var.h"
44 
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
48 
49 /**@addtogroup PublicNLPInterfaceMethods
50  *
51  * @{
52  */
53 
54 /** includes an NLPI in SCIP */
57  SCIP* scip, /**< SCIP data structure */
58  SCIP_NLPI* nlpi /**< NLPI data structure */
59  );
60 
61 /** returns the NLPI of the given name, or NULL if not existing */
64  SCIP* scip, /**< SCIP data structure */
65  const char* name /**< name of NLPI */
66  );
67 
68 /** returns the array of currently available NLPIs (sorted by priority) */
71  SCIP* scip /**< SCIP data structure */
72  );
73 
74 /** returns the number of currently available NLPIs */
76 int SCIPgetNNlpis(
77  SCIP* scip /**< SCIP data structure */
78  );
79 
80 /** sets the priority of an NLPI */
83  SCIP* scip, /**< SCIP data structure */
84  SCIP_NLPI* nlpi, /**< NLPI */
85  int priority /**< new priority of the NLPI */
86  );
87 
88 /* @} */
89 
90 /**@addtogroup PublicNLPMethods
91  *
92  * @{
93  */
94 
95 /** returns whether the NLP relaxation has been enabled
96  *
97  * If the NLP relaxation is enabled, then SCIP will construct the NLP relaxation when the solving process is about to begin.
98  * To check whether an NLP is existing, use SCIPisNLPConstructed().
99  *
100  * @pre This method can be called if SCIP is in one of the following stages:
101  * - \ref SCIP_STAGE_INITPRESOLVE
102  * - \ref SCIP_STAGE_PRESOLVING
103  * - \ref SCIP_STAGE_EXITPRESOLVE
104  * - \ref SCIP_STAGE_PRESOLVED
105  * - \ref SCIP_STAGE_INITSOLVE
106  * - \ref SCIP_STAGE_SOLVING
107  *
108  * @see SCIPenableNLP
109  */
112  SCIP* scip /**< SCIP data structure */
113  );
114 
115 /** marks that there are constraints that are representable by nonlinear rows
116  *
117  * This method should be called by a constraint handler if it has constraints that have a representation as nonlinear rows.
118  *
119  * The function should be called before the branch-and-bound process is initialized, e.g., when presolve is exiting.
120  *
121  * @pre This method can be called if SCIP is in one of the following stages:
122  * - \ref SCIP_STAGE_INITPRESOLVE
123  * - \ref SCIP_STAGE_PRESOLVING
124  * - \ref SCIP_STAGE_EXITPRESOLVE
125  * - \ref SCIP_STAGE_PRESOLVED
126  * - \ref SCIP_STAGE_INITSOLVE
127  * - \ref SCIP_STAGE_SOLVING
128  */
130 void SCIPenableNLP(
131  SCIP* scip /**< SCIP data structure */
132  );
133 
134 /** returns, whether an NLP has been constructed
135  *
136  * @pre This method can be called if SCIP is in one of the following stages:
137  * - \ref SCIP_STAGE_INITSOLVE
138  * - \ref SCIP_STAGE_SOLVING
139  */
142  SCIP* scip /**< SCIP data structure */
143  );
144 
145 /** returns whether the NLP has a continuous variable in a nonlinear term
146  *
147  * @pre This method can be called if SCIP is in one of the following stages:
148  * - \ref SCIP_STAGE_INITSOLVE
149  * - \ref SCIP_STAGE_SOLVING
150  */
153  SCIP* scip /**< SCIP data structure */
154  );
155 
156 /** gets current NLP variables along with the current number of NLP variables
157  *
158  * @pre This method can be called if SCIP is in one of the following stages:
159  * - \ref SCIP_STAGE_INITSOLVE
160  * - \ref SCIP_STAGE_SOLVING
161  */
164  SCIP* scip, /**< SCIP data structure */
165  SCIP_VAR*** vars, /**< pointer to store the array of NLP variables, or NULL */
166  int* nvars /**< pointer to store the number of NLP variables, or NULL */
167  );
168 
169 /** gets array with variables of the NLP
170  *
171  * @pre This method can be called if SCIP is in one of the following stages:
172  * - \ref SCIP_STAGE_INITSOLVE
173  * - \ref SCIP_STAGE_SOLVING
174  */
177  SCIP* scip /**< SCIP data structure */
178  );
179 
180 /** gets current number of variables in NLP
181  *
182  * @pre This method can be called if SCIP is in one of the following stages:
183  * - \ref SCIP_STAGE_INITSOLVE
184  * - \ref SCIP_STAGE_SOLVING
185  */
187 int SCIPgetNNLPVars(
188  SCIP* scip /**< SCIP data structure */
189  );
190 
191 /** computes for each variables the number of NLP rows in which the variable appears in a nonlinear var
192  *
193  * @pre This method can be called if SCIP is in one of the following stages:
194  * - \ref SCIP_STAGE_INITSOLVE
195  * - \ref SCIP_STAGE_SOLVING
196  */
199  SCIP* scip, /**< SCIP data structure */
200  int* nlcount /**< an array of length at least SCIPnlpGetNVars() to store nonlinearity counts of variables */
201  );
202 
203 /** returns dual solution values associated with lower bounds of NLP variables
204  *
205  * @pre This method can be called if SCIP is in one of the following stages:
206  * - \ref SCIP_STAGE_INITSOLVE
207  * - \ref SCIP_STAGE_SOLVING
208  */
211  SCIP* scip /**< SCIP data structure */
212  );
213 
214 /** returns dual solution values associated with upper bounds of NLP variables
215  *
216  * @pre This method can be called if SCIP is in one of the following stages:
217  * - \ref SCIP_STAGE_INITSOLVE
218  * - \ref SCIP_STAGE_SOLVING
219  */
222  SCIP* scip /**< SCIP data structure */
223  );
224 
225 /** gets current NLP nonlinear rows along with the current number of NLP nonlinear rows
226  *
227  * @pre This method can be called if SCIP is in one of the following stages:
228  * - \ref SCIP_STAGE_INITSOLVE
229  * - \ref SCIP_STAGE_SOLVING
230  */
233  SCIP* scip, /**< SCIP data structure */
234  SCIP_NLROW*** nlrows, /**< pointer to store the array of NLP nonlinear rows, or NULL */
235  int* nnlrows /**< pointer to store the number of NLP nonlinear rows, or NULL */
236  );
237 
238 /** gets array with nonlinear rows of the NLP
239  *
240  * @pre This method can be called if SCIP is in one of the following stages:
241  * - \ref SCIP_STAGE_INITSOLVE
242  * - \ref SCIP_STAGE_SOLVING
243  */
246  SCIP* scip /**< SCIP data structure */
247  );
248 
249 /** gets current number of nonlinear rows in NLP
250  *
251  * @pre This method can be called if SCIP is in one of the following stages:
252  * - \ref SCIP_STAGE_INITSOLVE
253  * - \ref SCIP_STAGE_SOLVING
254  */
257  SCIP* scip /**< SCIP data structure */
258  );
259 
260 /** adds a nonlinear row to the NLP. This row is captured by the NLP.
261  *
262  * @pre This method can be called if SCIP is in one of the following stages:
263  * - \ref SCIP_STAGE_INITSOLVE
264  * - \ref SCIP_STAGE_SOLVING
265  */
268  SCIP* scip, /**< SCIP data structure */
269  SCIP_NLROW* nlrow /**< nonlinear row to add to NLP */
270  );
271 
272 /** makes sure that the NLP of the current node is flushed
273  *
274  * @pre This method can be called if SCIP is in one of the following stages:
275  * - \ref SCIP_STAGE_INITSOLVE
276  * - \ref SCIP_STAGE_SOLVING
277  */
280  SCIP* scip /**< SCIP data structure */
281  );
282 
283 /** sets or clears initial primal guess for NLP solution (start point for NLP solver)
284  *
285  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
286  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
287  *
288  * @pre This method can be called if SCIP is in one of the following stages:
289  * - \ref SCIP_STAGE_INITSOLVE
290  * - \ref SCIP_STAGE_SOLVING
291  */
294  SCIP* scip, /**< SCIP data structure */
295  SCIP_Real* initialguess /**< values of initial guess (corresponding to variables from SCIPgetNLPVarsData), or NULL to use no start point */
296  );
297 
298 /** sets initial primal guess for NLP solution (start point for NLP solver)
299  *
300  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
301  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
302  *
303  * @pre This method can be called if SCIP is in one of the following stages:
304  * - \ref SCIP_STAGE_INITSOLVE
305  * - \ref SCIP_STAGE_SOLVING
306  */
309  SCIP* scip, /**< SCIP data structure */
310  SCIP_SOL* sol /**< solution which values should be taken as initial guess, or NULL for LP solution */
311  );
312 
313 /** solves the current NLP
314  *
315  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
316  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
317  *
318  * @pre This method can be called if SCIP is in one of the following stages:
319  * - \ref SCIP_STAGE_INITSOLVE
320  * - \ref SCIP_STAGE_SOLVING
321  */
324  SCIP* scip /**< SCIP data structure */
325  );
326 
327 /** gets solution status of current NLP
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  */
335  SCIP* scip /**< SCIP data structure */
336  );
337 
338 /** gets termination status of last NLP solve
339  *
340  * @pre This method can be called if SCIP is in one of the following stages:
341  * - \ref SCIP_STAGE_INITSOLVE
342  * - \ref SCIP_STAGE_SOLVING
343  */
346  SCIP* scip /**< SCIP data structure */
347  );
348 
349 /** gives statistics (number of iterations, solving time, ...) of last NLP solve
350  *
351  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
352  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
353  *
354  * @pre This method can be called if SCIP is in one of the following stages:
355  * - \ref SCIP_STAGE_INITSOLVE
356  * - \ref SCIP_STAGE_SOLVING
357  */
360  SCIP* scip, /**< SCIP data structure */
361  SCIP_NLPSTATISTICS* statistics /**< pointer to store statistics */
362  );
363 
364 /** gets objective value of current NLP
365  *
366  * @pre This method can be called if SCIP is in one of the following stages:
367  * - \ref SCIP_STAGE_INITSOLVE
368  * - \ref SCIP_STAGE_SOLVING
369  */
372  SCIP* scip /**< SCIP data structure */
373  );
374 
375 /** indicates whether a feasible solution for the current NLP is available
376  * thus, returns whether the solution status <= feasible
377  *
378  * @pre This method can be called if SCIP is in one of the following stages:
379  * - \ref SCIP_STAGE_INITSOLVE
380  * - \ref SCIP_STAGE_SOLVING
381  */
384  SCIP* scip /**< SCIP data structure */
385  );
386 
387 /** gets fractional variables of last NLP solution along with solution values and fractionalities
388  *
389  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
390  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
391  *
392  * @pre This method can be called if SCIP is in one of the following stages:
393  * - \ref SCIP_STAGE_INITSOLVE
394  * - \ref SCIP_STAGE_SOLVING
395  */
398  SCIP* scip, /**< SCIP data structure */
399  SCIP_VAR*** fracvars, /**< pointer to store the array of NLP fractional variables, or NULL */
400  SCIP_Real** fracvarssol, /**< pointer to store the array of NLP fractional variables solution values, or NULL */
401  SCIP_Real** fracvarsfrac, /**< pointer to store the array of NLP fractional variables fractionalities, or NULL */
402  int* nfracvars, /**< pointer to store the number of NLP fractional variables , or NULL */
403  int* npriofracvars /**< pointer to store the number of NLP fractional variables with maximal branching priority, or NULL */
404  );
405 
406 /** gets integer parameter of NLP
407  *
408  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
409  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
410  *
411  * @pre This method can be called if SCIP is in one of the following stages:
412  * - \ref SCIP_STAGE_INITSOLVE
413  * - \ref SCIP_STAGE_SOLVING
414  */
417  SCIP* scip, /**< SCIP data structure */
418  SCIP_NLPPARAM type, /**< parameter number */
419  int* ival /**< pointer to store the parameter value */
420  );
421 
422 /** sets integer parameter of NLP
423  *
424  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
425  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
426  *
427  * @pre This method can be called if SCIP is in one of the following stages:
428  * - \ref SCIP_STAGE_INITSOLVE
429  * - \ref SCIP_STAGE_SOLVING
430  */
433  SCIP* scip, /**< SCIP data structure */
434  SCIP_NLPPARAM type, /**< parameter number */
435  int ival /**< parameter value */
436  );
437 
438 /** gets floating point parameter of NLP
439  *
440  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
441  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
442  *
443  * @pre This method can be called if SCIP is in one of the following stages:
444  * - \ref SCIP_STAGE_INITSOLVE
445  * - \ref SCIP_STAGE_SOLVING
446  */
449  SCIP* scip, /**< SCIP data structure */
450  SCIP_NLPPARAM type, /**< parameter number */
451  SCIP_Real* dval /**< pointer to store the parameter value */
452  );
453 
454 /** sets floating point parameter of NLP
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  */
465  SCIP* scip, /**< SCIP data structure */
466  SCIP_NLPPARAM type, /**< parameter number */
467  SCIP_Real dval /**< parameter value */
468  );
469 
470 /** gets string parameter of NLP
471  *
472  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
473  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
474  *
475  * @pre This method can be called if SCIP is in one of the following stages:
476  * - \ref SCIP_STAGE_INITSOLVE
477  * - \ref SCIP_STAGE_SOLVING
478  */
481  SCIP* scip, /**< SCIP data structure */
482  SCIP_NLPPARAM type, /**< parameter number */
483  const char** sval /**< pointer to store the parameter value */
484  );
485 
486 /** sets string parameter of NLP
487  *
488  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
489  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
490  *
491  * @pre This method can be called if SCIP is in one of the following stages:
492  * - \ref SCIP_STAGE_INITSOLVE
493  * - \ref SCIP_STAGE_SOLVING
494  */
497  SCIP* scip, /**< SCIP data structure */
498  SCIP_NLPPARAM type, /**< parameter number */
499  const char* sval /**< parameter value */
500  );
501 
502 /** writes current NLP to a file
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  */
513  SCIP* scip, /**< SCIP data structure */
514  const char* filename /**< file name */
515  );
516 
517 /** gets the NLP interface and problem used by the SCIP NLP;
518  * with the NLPI and its problem you can use all of the methods defined in nlpi/nlpi.h;
519  *
520  * @warning You have to make sure, that the full internal state of the NLPI does not change or is recovered completely
521  * after the end of the method that uses the NLPI. In particular, if you manipulate the NLP or its solution
522  * (e.g. by calling one of the SCIPnlpiAdd...() or the SCIPnlpiSolve() method), you have to check in advance
523  * whether the NLP is currently solved. If this is the case, you have to make sure, the internal solution
524  * status is recovered completely at the end of your method. Additionally you have to resolve the NLP with
525  * SCIPnlpiSolve() in order to reinstall the internal solution status.
526  *
527  * @warning Make also sure, that all parameter values that you have changed are set back to their original values.
528  *
529  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
530  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
531  *
532  * @pre This method can be called if SCIP is in one of the following stages:
533  * - \ref SCIP_STAGE_INITSOLVE
534  * - \ref SCIP_STAGE_SOLVING
535  */
538  SCIP* scip, /**< SCIP data structure */
539  SCIP_NLPI** nlpi, /**< pointer to store the NLP solver interface */
540  SCIP_NLPIPROBLEM** nlpiproblem /**< pointer to store the NLP solver interface problem */
541  );
542 
543 /**@} */
544 
545 /**@addtogroup PublicNLPDiveMethods
546  *
547  * @{ */
548 
549 /** initiates NLP diving making methods SCIPchgVarObjDiveNLP(), SCIPchgVarBoundsDiveNLP(), SCIPchgVarsBoundsDiveNLP(), and SCIPsolveDiveNLP() available
550  *
551  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
552  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
553  *
554  * @pre This method can be called if SCIP is in one of the following stages:
555  * - \ref SCIP_STAGE_INITSOLVE
556  * - \ref SCIP_STAGE_SOLVING
557  */
560  SCIP* scip /**< SCIP data structure */
561  );
562 
563 /** ends NLP diving
564  *
565  * Resets changes made by SCIPchgVarObjDiveNLP(), SCIPchgVarBoundsDiveNLP(), and SCIPchgVarsBoundsDiveNLP().
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  */
576  SCIP* scip /**< SCIP data structure */
577  );
578 
579 /** changes linear objective coefficient of a variable in diving NLP
580  *
581  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
582  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
583  *
584  * @pre This method can be called if SCIP is in one of the following stages:
585  * - \ref SCIP_STAGE_INITSOLVE
586  * - \ref SCIP_STAGE_SOLVING
587  */
590  SCIP* scip, /**< SCIP data structure */
591  SCIP_VAR* var, /**< variable which coefficient to change */
592  SCIP_Real coef /**< new value for coefficient */
593  );
594 
595 /** changes bounds of a variable in diving NLP
596  *
597  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
598  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
599  *
600  * @pre This method can be called if SCIP is in one of the following stages:
601  * - \ref SCIP_STAGE_INITSOLVE
602  * - \ref SCIP_STAGE_SOLVING
603  */
606  SCIP* scip, /**< SCIP data structure */
607  SCIP_VAR* var, /**< variable which bounds to change */
608  SCIP_Real lb, /**< new lower bound */
609  SCIP_Real ub /**< new upper bound */
610  );
611 
612 /** changes bounds of a set of variables in diving NLP
613  *
614  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
615  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
616  *
617  * @pre This method can be called if SCIP is in one of the following stages:
618  * - \ref SCIP_STAGE_INITSOLVE
619  * - \ref SCIP_STAGE_SOLVING
620  */
623  SCIP* scip, /**< SCIP data structure */
624  int nvars, /**< number of variables which bounds to changes */
625  SCIP_VAR** vars, /**< variables which bounds to change */
626  SCIP_Real* lbs, /**< new lower bounds */
627  SCIP_Real* ubs /**< new upper bounds */
628  );
629 
630 /** solves diving NLP
631  *
632  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
633  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
634  *
635  * @pre This method can be called if SCIP is in one of the following stages:
636  * - \ref SCIP_STAGE_INITSOLVE
637  * - \ref SCIP_STAGE_SOLVING
638  */
641  SCIP* scip /**< SCIP data structure */
642  );
643 
644 /**@} */
645 
646 /**@addtogroup PublicNLRowMethods
647  *
648  * @{
649  */
650 
651 /** creates and captures an NLP 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  */
663  SCIP* scip, /**< SCIP data structure */
664  SCIP_NLROW** nlrow, /**< buffer to store pointer to nonlinear row */
665  const char* name, /**< name of nonlinear row */
666  SCIP_Real constant, /**< constant */
667  int nlinvars, /**< number of linear variables */
668  SCIP_VAR** linvars, /**< linear variables, or NULL if nlinvars == 0 */
669  SCIP_Real* lincoefs, /**< linear coefficients, or NULL if nlinvars == 0 */
670  int nquadvars, /**< number of variables in quadratic term */
671  SCIP_VAR** quadvars, /**< variables in quadratic terms, or NULL if nquadvars == 0 */
672  int nquadelems, /**< number of elements in quadratic term */
673  SCIP_QUADELEM* quadelems, /**< elements (i.e., monomials) in quadratic term, or NULL if nquadelems == 0 */
674  SCIP_EXPRTREE* expression, /**< nonlinear expression, or NULL */
675  SCIP_Real lhs, /**< left hand side */
676  SCIP_Real rhs, /**< right hand side */
677  SCIP_EXPRCURV curvature /**< curvature of the nonlinear row */
678  );
679 
680 /** creates and captures an NLP nonlinear row without any coefficients
681  *
682  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
683  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
684  *
685  * @pre This method can be called if SCIP is in one of the following stages:
686  * - \ref SCIP_STAGE_PRESOLVED
687  * - \ref SCIP_STAGE_INITSOLVE
688  * - \ref SCIP_STAGE_SOLVING
689  */
692  SCIP* scip, /**< SCIP data structure */
693  SCIP_NLROW** nlrow, /**< pointer to nonlinear row */
694  const char* name, /**< name of nonlinear row */
695  SCIP_Real lhs, /**< left hand side */
696  SCIP_Real rhs /**< right hand side */
697  );
698 
699 /** creates and captures an NLP row from a linear row
700  *
701  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
702  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
703  *
704  * @pre This method can be called if SCIP is in one of the following stages:
705  * - \ref SCIP_STAGE_PRESOLVED
706  * - \ref SCIP_STAGE_INITSOLVE
707  * - \ref SCIP_STAGE_SOLVING
708  */
711  SCIP* scip, /**< SCIP data structure */
712  SCIP_NLROW** nlrow, /**< pointer to nonlinear row */
713  SCIP_ROW* row /**< the linear row to copy */
714  );
715 
716 /** increases usage counter of NLP nonlinear row
717  *
718  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
719  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
720  *
721  * @pre This method can be called if SCIP is in one of the following stages:
722  * - \ref SCIP_STAGE_PRESOLVED
723  * - \ref SCIP_STAGE_INITSOLVE
724  * - \ref SCIP_STAGE_SOLVING
725  */
728  SCIP* scip, /**< SCIP data structure */
729  SCIP_NLROW* nlrow /**< nonlinear row to capture */
730  );
731 
732 /** decreases usage counter of NLP nonlinear row, and frees memory if necessary
733  *
734  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
735  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
736  *
737  * @pre This method can be called if SCIP is in one of the following stages:
738  * - \ref SCIP_STAGE_PRESOLVED
739  * - \ref SCIP_STAGE_INITSOLVE
740  * - \ref SCIP_STAGE_SOLVING
741  * - \ref SCIP_STAGE_EXITSOLVE
742  */
745  SCIP* scip, /**< SCIP data structure */
746  SCIP_NLROW** nlrow /**< pointer to nonlinear row */
747  );
748 
749 /** changes left hand side of NLP nonlinear row
750  *
751  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
752  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
753  *
754  * @pre This method can be called if SCIP is in one of the following stages:
755  * - \ref SCIP_STAGE_PRESOLVED
756  * - \ref SCIP_STAGE_INITSOLVE
757  * - \ref SCIP_STAGE_SOLVING
758  */
761  SCIP* scip, /**< SCIP data structure */
762  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
763  SCIP_Real lhs /**< new left hand side */
764  );
765 
766 /** changes right hand side of NLP nonlinear row
767  *
768  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
769  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
770  *
771  * @pre This method can be called if SCIP is in one of the following stages:
772  * - \ref SCIP_STAGE_PRESOLVED
773  * - \ref SCIP_STAGE_INITSOLVE
774  * - \ref SCIP_STAGE_SOLVING
775  */
778  SCIP* scip, /**< SCIP data structure */
779  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
780  SCIP_Real rhs /**< new right hand side */
781  );
782 
783 /** changes constant of NLP nonlinear row
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  */
795  SCIP* scip, /**< SCIP data structure */
796  SCIP_NLROW* nlrow, /**< NLP row */
797  SCIP_Real constant /**< new value for constant */
798  );
799 
800 /** adds variable with a linear coefficient to the nonlinear row
801  *
802  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
803  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
804  *
805  * @pre This method can be called if SCIP is in one of the following stages:
806  * - \ref SCIP_STAGE_PRESOLVED
807  * - \ref SCIP_STAGE_INITSOLVE
808  * - \ref SCIP_STAGE_SOLVING
809  */
812  SCIP* scip, /**< SCIP data structure */
813  SCIP_NLROW* nlrow, /**< NLP row */
814  SCIP_VAR* var, /**< problem variable */
815  SCIP_Real val /**< value of coefficient in linear part of row */
816  );
817 
818 /** adds variables with linear coefficients to the row
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  */
830  SCIP* scip, /**< SCIP data structure */
831  SCIP_NLROW* nlrow, /**< NLP row */
832  int nvars, /**< number of variables to add to the row */
833  SCIP_VAR** vars, /**< problem variables to add */
834  SCIP_Real* vals /**< values of coefficients in linear part of row */
835  );
836 
837 /** changes linear coefficient of a variables in a row
838  *
839  * Setting the coefficient to 0.0 means that it is removed from the row
840  * the variable does not need to exists before.
841  *
842  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
843  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
844  *
845  * @pre This method can be called if SCIP is in one of the following stages:
846  * - \ref SCIP_STAGE_PRESOLVED
847  * - \ref SCIP_STAGE_INITSOLVE
848  * - \ref SCIP_STAGE_SOLVING
849  */
852  SCIP* scip, /**< SCIP data structure */
853  SCIP_NLROW* nlrow, /**< NLP row */
854  SCIP_VAR* var, /**< variable */
855  SCIP_Real coef /**< new value of coefficient */
856  );
857 
858 /** adds quadratic variable to the nonlinear row
859  *
860  * After adding a quadratic variable, it can be used to add quadratic elements.
861  *
862  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
863  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
864  *
865  * @pre This method can be called if SCIP is in one of the following stages:
866  * - \ref SCIP_STAGE_PRESOLVED
867  * - \ref SCIP_STAGE_INITSOLVE
868  * - \ref SCIP_STAGE_SOLVING
869  */
872  SCIP* scip, /**< SCIP data structure */
873  SCIP_NLROW* nlrow, /**< NLP row */
874  SCIP_VAR* var /**< problem variable */
875  );
876 
877 /** adds quadratic variables to the nonlinear row
878  *
879  * After adding quadratic variables, they can be used to add quadratic elements.
880  *
881  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
882  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
883  *
884  * @pre This method can be called if SCIP is in one of the following stages:
885  * - \ref SCIP_STAGE_PRESOLVED
886  * - \ref SCIP_STAGE_INITSOLVE
887  * - \ref SCIP_STAGE_SOLVING
888  */
891  SCIP* scip, /**< SCIP data structure */
892  SCIP_NLROW* nlrow, /**< NLP row */
893  int nvars, /**< number of problem variables */
894  SCIP_VAR** vars /**< problem variables */
895  );
896 
897 /** add a quadratic element to the nonlinear row
898  *
899  * Variable indices of the quadratic element need to be relative to quadratic variables array of row.
900  *
901  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
902  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
903  *
904  * @pre This method can be called if SCIP is in one of the following stages:
905  * - \ref SCIP_STAGE_PRESOLVED
906  * - \ref SCIP_STAGE_INITSOLVE
907  * - \ref SCIP_STAGE_SOLVING
908  */
911  SCIP* scip, /**< SCIP data structure */
912  SCIP_NLROW* nlrow, /**< NLP row */
913  SCIP_QUADELEM quadelem /**< quadratic element */
914  );
915 
916 /** adds quadratic elements to the nonlinear row
917  *
918  * Variable indices of the quadratic elements need to be relative to quadratic variables array of row.
919  *
920  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
921  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
922  *
923  * @pre This method can be called if SCIP is in one of the following stages:
924  * - \ref SCIP_STAGE_PRESOLVED
925  * - \ref SCIP_STAGE_INITSOLVE
926  * - \ref SCIP_STAGE_SOLVING
927  */
930  SCIP* scip, /**< SCIP data structure */
931  SCIP_NLROW* nlrow, /**< NLP row */
932  int nquadelems, /**< number of quadratic elements */
933  SCIP_QUADELEM* quadelems /**< quadratic elements */
934  );
935 
936 /** changes coefficient in quadratic part of a row
937  *
938  * Setting the coefficient in the quadelement to 0.0 means that it is removed from the row
939  * the element does not need to exists before.
940  *
941  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
942  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
943  *
944  * @pre This method can be called if SCIP is in one of the following stages:
945  * - \ref SCIP_STAGE_PRESOLVED
946  * - \ref SCIP_STAGE_INITSOLVE
947  * - \ref SCIP_STAGE_SOLVING
948  */
951  SCIP* scip, /**< SCIP data structure */
952  SCIP_NLROW* nlrow, /**< NLP row */
953  SCIP_QUADELEM quadelement /**< new quadratic element, or update for existing one */
954  );
955 
956 /** sets or deletes expression tree in the nonlinear row
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_PRESOLVED
963  * - \ref SCIP_STAGE_INITSOLVE
964  * - \ref SCIP_STAGE_SOLVING
965  */
968  SCIP* scip, /**< SCIP data structure */
969  SCIP_NLROW* nlrow, /**< NLP row */
970  SCIP_EXPRTREE* exprtree /**< expression tree, or NULL */
971  );
972 
973 /** sets a parameter of expression tree in the nonlinear row
974  *
975  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
976  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
977  *
978  * @pre This method can be called if SCIP is in one of the following stages:
979  * - \ref SCIP_STAGE_PRESOLVED
980  * - \ref SCIP_STAGE_INITSOLVE
981  * - \ref SCIP_STAGE_SOLVING
982  */
985  SCIP* scip, /**< SCIP data structure */
986  SCIP_NLROW* nlrow, /**< NLP row */
987  int paramidx, /**< index of parameter in expression tree */
988  SCIP_Real paramval /**< new value of parameter in expression tree */
989  );
990 
991 /** sets parameters of expression tree in the nonlinear row
992  *
993  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
994  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
995  *
996  * @pre This method can be called if SCIP is in one of the following stages:
997  * - \ref SCIP_STAGE_PRESOLVED
998  * - \ref SCIP_STAGE_INITSOLVE
999  * - \ref SCIP_STAGE_SOLVING
1000  */
1003  SCIP* scip, /**< SCIP data structure */
1004  SCIP_NLROW* nlrow, /**< NLP row */
1005  SCIP_Real* paramvals /**< new values of parameter in expression tree */
1006  );
1007 
1008 /** recalculates the activity of a nonlinear row in the last NLP solution
1009  *
1010  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1011  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1012  *
1013  * @pre This method can be called if SCIP is in one of the following stages:
1014  * - \ref SCIP_STAGE_PRESOLVED
1015  * - \ref SCIP_STAGE_INITSOLVE
1016  * - \ref SCIP_STAGE_SOLVING
1017  */
1020  SCIP* scip, /**< SCIP data structure */
1021  SCIP_NLROW* nlrow /**< NLP nonlinear row */
1022  );
1023 
1024 /** returns the activity of a nonlinear row in the last NLP solution
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_INITSOLVE
1031  * - \ref SCIP_STAGE_SOLVING
1032  */
1035  SCIP* scip, /**< SCIP data structure */
1036  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
1037  SCIP_Real* activity /**< pointer to store activity value */
1038  );
1039 
1040 /** gives the feasibility of a nonlinear row in the last NLP solution: negative value means infeasibility
1041  *
1042  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1043  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1044  *
1045  * @pre This method can be called if SCIP is in one of the following stages:
1046  * - \ref SCIP_STAGE_INITSOLVE
1047  * - \ref SCIP_STAGE_SOLVING
1048  */
1051  SCIP* scip, /**< SCIP data structure */
1052  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
1053  SCIP_Real* feasibility /**< pointer to store feasibility value */
1054  );
1055 
1056 /** recalculates the activity of a nonlinear row for the current pseudo solution
1057  *
1058  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1059  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1060  *
1061  * @pre This method can be called if SCIP is in one of the following stages:
1062  * - \ref SCIP_STAGE_INITSOLVE
1063  * - \ref SCIP_STAGE_SOLVING
1064  */
1067  SCIP* scip, /**< SCIP data structure */
1068  SCIP_NLROW* nlrow /**< NLP nonlinear row */
1069  );
1070 
1071 /** gives the activity of a nonlinear row for the current pseudo solution
1072  *
1073  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1074  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1075  *
1076  * @pre This method can be called if SCIP is in one of the following stages:
1077  * - \ref SCIP_STAGE_INITSOLVE
1078  * - \ref SCIP_STAGE_SOLVING
1079  */
1082  SCIP* scip, /**< SCIP data structure */
1083  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
1084  SCIP_Real* pseudoactivity /**< pointer to store pseudo activity value */
1085  );
1086 
1087 /** gives the feasibility of a nonlinear row for the current pseudo solution: negative value means infeasibility
1088  *
1089  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1090  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1091  *
1092  * @pre This method can be called if SCIP is in one of the following stages:
1093  * - \ref SCIP_STAGE_INITSOLVE
1094  * - \ref SCIP_STAGE_SOLVING
1095  */
1098  SCIP* scip, /**< SCIP data structure */
1099  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
1100  SCIP_Real* pseudofeasibility /**< pointer to store pseudo feasibility value */
1101  );
1102 
1103 /** recalculates the activity of a nonlinear row in the last NLP or pseudo solution
1104  *
1105  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1106  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1107  *
1108  * @pre This method can be called if SCIP is in one of the following stages:
1109  * - \ref SCIP_STAGE_INITSOLVE
1110  * - \ref SCIP_STAGE_SOLVING
1111  */
1114  SCIP* scip, /**< SCIP data structure */
1115  SCIP_NLROW* nlrow /**< NLP nonlinear row */
1116  );
1117 
1118 /** gives the activity of a nonlinear row in the last NLP or pseudo solution
1119  *
1120  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1121  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1122  *
1123  * @pre This method can be called if SCIP is in one of the following stages:
1124  * - \ref SCIP_STAGE_INITSOLVE
1125  * - \ref SCIP_STAGE_SOLVING
1126  */
1129  SCIP* scip, /**< SCIP data structure */
1130  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
1131  SCIP_Real* activity /**< pointer to store activity value */
1132  );
1133 
1134 /** gives the feasibility of a nonlinear row in the last NLP or pseudo solution
1135  *
1136  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1137  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1138  *
1139  * @pre This method can be called if SCIP is in one of the following stages:
1140  * - \ref SCIP_STAGE_INITSOLVE
1141  * - \ref SCIP_STAGE_SOLVING
1142  */
1145  SCIP* scip, /**< SCIP data structure */
1146  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
1147  SCIP_Real* feasibility /**< pointer to store feasibility value */
1148  );
1149 
1150 /** gives the activity of a nonlinear row for the given primal solution or NLP solution or pseudo solution
1151  *
1152  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1153  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1154  *
1155  * @pre This method can be called if SCIP is in one of the following stages:
1156  * - \ref SCIP_STAGE_INITSOLVE
1157  * - \ref SCIP_STAGE_SOLVING
1158  */
1161  SCIP* scip, /**< SCIP data structure */
1162  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
1163  SCIP_SOL* sol, /**< primal CIP solution, or NULL for NLP solution of pseudo solution */
1164  SCIP_Real* activity /**< pointer to store activity value */
1165  );
1166 
1167 /** gives the feasibility of a nonlinear row for the given primal solution
1168  *
1169  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1170  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1171  *
1172  * @pre This method can be called if SCIP is in one of the following stages:
1173  * - \ref SCIP_STAGE_INITSOLVE
1174  * - \ref SCIP_STAGE_SOLVING
1175  */
1178  SCIP* scip, /**< SCIP data structure */
1179  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
1180  SCIP_SOL* sol, /**< primal CIP solution */
1181  SCIP_Real* feasibility /**< pointer to store feasibility value */
1182  );
1183 
1184 /** gives the minimal and maximal activity of a nonlinear row w.r.t. the variable's bounds
1185  *
1186  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1187  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1188  *
1189  * @pre This method can be called if SCIP is in one of the following stages:
1190  * - \ref SCIP_STAGE_PRESOLVED
1191  * - \ref SCIP_STAGE_INITSOLVE
1192  * - \ref SCIP_STAGE_SOLVING
1193  */
1196  SCIP* scip, /**< SCIP data structure */
1197  SCIP_NLROW* nlrow, /**< NLP row */
1198  SCIP_Real* minactivity, /**< buffer to store minimal activity, or NULL */
1199  SCIP_Real* maxactivity /**< buffer to store maximal activity, or NULL */
1200  );
1201 
1202 /** output nonlinear row to file stream
1203  *
1204  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
1205  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
1206  *
1207  * @pre This method can be called if SCIP is in one of the following stages:
1208  * - \ref SCIP_STAGE_PRESOLVED
1209  * - \ref SCIP_STAGE_INITSOLVE
1210  * - \ref SCIP_STAGE_SOLVING
1211  */
1214  SCIP* scip, /**< SCIP data structure */
1215  SCIP_NLROW* nlrow, /**< NLP row */
1216  FILE* file /**< output file (or NULL for standard output) */
1217  );
1218 
1219 /**@} */
1220 
1221 #ifdef __cplusplus
1222 }
1223 #endif
1224 
1225 #endif
enum SCIP_NlpTermStat SCIP_NLPTERMSTAT
Definition: type_nlpi.h:84
SCIP_EXPORT SCIP_Real SCIPgetNLPObjval(SCIP *scip)
Definition: scip_nlp.c:663
SCIP_EXPORT SCIP_RETCODE SCIPsolveDiveNLP(SCIP *scip)
Definition: scip_nlp.c:1133
SCIP_EXPORT SCIP_RETCODE SCIPaddQuadVarsToNlRow(SCIP *scip, SCIP_NLROW *nlrow, int nvars, SCIP_VAR **vars)
Definition: scip_nlp.c:1480
SCIP_EXPORT SCIP_RETCODE SCIPaddLinearCoefsToNlRow(SCIP *scip, SCIP_NLROW *nlrow, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
Definition: scip_nlp.c:1390
type definitions for NLP management
SCIP_EXPORT SCIP_RETCODE SCIPgetNLPNlRowsData(SCIP *scip, SCIP_NLROW ***nlrows, int *nnlrows)
Definition: scip_nlp.c:388
SCIP_EXPORT SCIP_NLPI ** SCIPgetNlpis(SCIP *scip)
Definition: scip_nlp.c:118
SCIP_EXPORT SCIP_RETCODE SCIPprintNlRow(SCIP *scip, SCIP_NLROW *nlrow, FILE *file)
Definition: scip_nlp.c:2004
SCIP_EXPORT SCIP_RETCODE SCIPcreateNlRow(SCIP *scip, SCIP_NLROW **nlrow, const char *name, SCIP_Real constant, int nlinvars, SCIP_VAR **linvars, SCIP_Real *lincoefs, int nquadvars, SCIP_VAR **quadvars, int nquadelems, SCIP_QUADELEM *quadelems, SCIP_EXPRTREE *expression, SCIP_Real lhs, SCIP_Real rhs, SCIP_EXPRCURV curvature)
Definition: scip_nlp.c:1167
SCIP_EXPORT SCIP_RETCODE SCIPflushNLP(SCIP *scip)
Definition: scip_nlp.c:484
SCIP_EXPORT SCIP_Bool SCIPisNLPEnabled(SCIP *scip)
Definition: scip_nlp.c:171
SCIP_EXPORT SCIP_RETCODE SCIPgetNLPStatistics(SCIP *scip, SCIP_NLPSTATISTICS *statistics)
Definition: scip_nlp.c:639
#define SCIP_EXPORT
Definition: def.h:98
SCIP_EXPORT SCIP_RETCODE SCIPcreateNlRowFromRow(SCIP *scip, SCIP_NLROW **nlrow, SCIP_ROW *row)
Definition: scip_nlp.c:1229
SCIP_EXPORT SCIP_RETCODE SCIPchgNlRowQuadElement(SCIP *scip, SCIP_NLROW *nlrow, SCIP_QUADELEM quadelement)
Definition: scip_nlp.c:1581
SCIP_EXPORT SCIP_RETCODE SCIPaddQuadElementToNlRow(SCIP *scip, SCIP_NLROW *nlrow, SCIP_QUADELEM quadelem)
Definition: scip_nlp.c:1514
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
SCIP_EXPORT SCIP_RETCODE SCIPgetNLPVarsNonlinearity(SCIP *scip, int *nlcount)
Definition: scip_nlp.c:320
SCIP_EXPORT SCIP_RETCODE SCIPgetNlRowPseudoActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *pseudoactivity)
Definition: scip_nlp.c:1781
SCIP_EXPORT SCIP_RETCODE SCIPrecalcNlRowNLPActivity(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:1677
SCIP_EXPORT SCIP_RETCODE SCIPchgVarsBoundsDiveNLP(SCIP *scip, int nvars, SCIP_VAR **vars, SCIP_Real *lbs, SCIP_Real *ubs)
Definition: scip_nlp.c:1103
type definitions for return codes for SCIP methods
SCIP_EXPORT SCIP_RETCODE SCIPgetNlRowActivityBounds(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *minactivity, SCIP_Real *maxactivity)
Definition: scip_nlp.c:1980
SCIP_EXPORT SCIP_RETCODE SCIPaddQuadElementsToNlRow(SCIP *scip, SCIP_NLROW *nlrow, int nquadelems, SCIP_QUADELEM *quadelems)
Definition: scip_nlp.c:1543
enum SCIP_NlpParam SCIP_NLPPARAM
Definition: type_nlpi.h:56
SCIP_EXPORT SCIP_RETCODE SCIPgetNlRowActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *activity)
Definition: scip_nlp.c:1853
SCIP_EXPORT SCIP_RETCODE SCIPrecalcNlRowActivity(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:1825
SCIP_EXPORT SCIP_RETCODE SCIPstartDiveNLP(SCIP *scip)
Definition: scip_nlp.c:988
SCIP_EXPORT SCIP_RETCODE SCIPwriteNLP(SCIP *scip, const char *filename)
Definition: scip_nlp.c:911
SCIP_EXPORT SCIP_RETCODE SCIPgetNLPFracVars(SCIP *scip, SCIP_VAR ***fracvars, SCIP_Real **fracvarssol, SCIP_Real **fracvarsfrac, int *nfracvars, int *npriofracvars)
Definition: scip_nlp.c:712
SCIP_EXPORT SCIP_RETCODE SCIPsolveNLP(SCIP *scip)
Definition: scip_nlp.c:569
type definitions for LP management
SCIP_EXPORT SCIP_RETCODE SCIPcaptureNlRow(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:1252
SCIP_EXPORT SCIP_RETCODE SCIPreleaseNlRow(SCIP *scip, SCIP_NLROW **nlrow)
Definition: scip_nlp.c:1275
SCIP_EXPORT SCIP_Bool SCIPhasNLPSolution(SCIP *scip)
Definition: scip_nlp.c:687
SCIP_EXPORT SCIP_RETCODE SCIPendDiveNLP(SCIP *scip)
Definition: scip_nlp.c:1016
SCIP_EXPORT SCIP_NLROW ** SCIPgetNLPNlRows(SCIP *scip)
Definition: scip_nlp.c:416
SCIP_EXPORT SCIP_NLPI * SCIPfindNlpi(SCIP *scip, const char *name)
Definition: scip_nlp.c:105
SCIP_EXPORT SCIP_RETCODE SCIPgetNLPVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars)
Definition: scip_nlp.c:246
enum SCIP_NlpSolStat SCIP_NLPSOLSTAT
Definition: type_nlpi.h:69
type definitions for SCIP&#39;s main datastructure
SCIP_EXPORT SCIP_RETCODE SCIPgetNlRowFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *feasibility)
Definition: scip_nlp.c:1882
SCIP_EXPORT SCIP_RETCODE SCIPgetNLPIntPar(SCIP *scip, SCIP_NLPPARAM type, int *ival)
Definition: scip_nlp.c:743
SCIP_EXPORT SCIP_RETCODE SCIPchgVarObjDiveNLP(SCIP *scip, SCIP_VAR *var, SCIP_Real coef)
Definition: scip_nlp.c:1042
SCIP_EXPORT int SCIPgetNNLPNlRows(SCIP *scip)
Definition: scip_nlp.c:438
SCIP_EXPORT SCIP_RETCODE SCIPsetNlRowExprtreeParam(SCIP *scip, SCIP_NLROW *nlrow, int paramidx, SCIP_Real paramval)
Definition: scip_nlp.c:1630
type definitions for problem variables
SCIP_EXPORT SCIP_RETCODE SCIPgetNlRowNLPActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *activity)
Definition: scip_nlp.c:1704
SCIP_EXPORT SCIP_RETCODE SCIPchgNlRowLinearCoef(SCIP *scip, SCIP_NLROW *nlrow, SCIP_VAR *var, SCIP_Real coef)
Definition: scip_nlp.c:1427
SCIP_EXPORT SCIP_Real * SCIPgetNLPVarsLbDualsol(SCIP *scip)
Definition: scip_nlp.c:344
SCIP_EXPORT SCIP_RETCODE SCIPincludeNlpi(SCIP *scip, SCIP_NLPI *nlpi)
Definition: scip_nlp.c:69
SCIP_EXPORT SCIP_RETCODE SCIPsetNLPIntPar(SCIP *scip, SCIP_NLPPARAM type, int ival)
Definition: scip_nlp.c:771
SCIP_EXPORT SCIP_Bool SCIPhasNLPContinuousNonlinearity(SCIP *scip)
Definition: scip_nlp.c:224
SCIP_EXPORT SCIP_RETCODE SCIPaddLinearCoefToNlRow(SCIP *scip, SCIP_NLROW *nlrow, SCIP_VAR *var, SCIP_Real val)
Definition: scip_nlp.c:1366
SCIP_EXPORT SCIP_Real * SCIPgetNLPVarsUbDualsol(SCIP *scip)
Definition: scip_nlp.c:366
#define SCIP_Bool
Definition: def.h:70
SCIP_EXPORT SCIP_RETCODE SCIPgetNlRowSolFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_SOL *sol, SCIP_Real *feasibility)
Definition: scip_nlp.c:1945
SCIP_EXPORT SCIP_VAR ** SCIPgetNLPVars(SCIP *scip)
Definition: scip_nlp.c:276
SCIP_EXPORT SCIP_Bool SCIPisNLPConstructed(SCIP *scip)
Definition: scip_nlp.c:209
SCIP_EXPORT int SCIPgetNNlpis(SCIP *scip)
Definition: scip_nlp.c:131
SCIP_EXPORT SCIP_RETCODE SCIPsetNlpiPriority(SCIP *scip, SCIP_NLPI *nlpi, int priority)
Definition: scip_nlp.c:142
SCIP_EXPORT SCIP_NLPSOLSTAT SCIPgetNLPSolstat(SCIP *scip)
Definition: scip_nlp.c:592
SCIP_EXPORT SCIP_RETCODE SCIPgetNLPStringPar(SCIP *scip, SCIP_NLPPARAM type, const char **sval)
Definition: scip_nlp.c:855
SCIP_EXPORT SCIP_RETCODE SCIPgetNlRowNLPFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *feasibility)
Definition: scip_nlp.c:1732
SCIP_EXPORT SCIP_RETCODE SCIPgetNlRowPseudoFeasibility(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *pseudofeasibility)
Definition: scip_nlp.c:1803
type definitions for storing primal CIP solutions
SCIP_EXPORT SCIP_RETCODE SCIPchgNlRowRhs(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real rhs)
Definition: scip_nlp.c:1320
SCIP_EXPORT SCIP_NLPTERMSTAT SCIPgetNLPTermstat(SCIP *scip)
Definition: scip_nlp.c:614
enum SCIP_ExprCurv SCIP_EXPRCURV
Definition: type_expr.h:95
SCIP_EXPORT SCIP_RETCODE SCIPchgVarBoundsDiveNLP(SCIP *scip, SCIP_VAR *var, SCIP_Real lb, SCIP_Real ub)
Definition: scip_nlp.c:1072
SCIP_EXPORT SCIP_RETCODE SCIPcreateEmptyNlRow(SCIP *scip, SCIP_NLROW **nlrow, const char *name, SCIP_Real lhs, SCIP_Real rhs)
Definition: scip_nlp.c:1203
SCIP_EXPORT SCIP_RETCODE SCIPsetNLPStringPar(SCIP *scip, SCIP_NLPPARAM type, const char *sval)
Definition: scip_nlp.c:883
SCIP_EXPORT void SCIPenableNLP(SCIP *scip)
Definition: scip_nlp.c:194
SCIP_EXPORT SCIP_RETCODE SCIPsetNLPRealPar(SCIP *scip, SCIP_NLPPARAM type, SCIP_Real dval)
Definition: scip_nlp.c:827
type definitions for expressions and expression trees
SCIP_EXPORT SCIP_RETCODE SCIPchgNlRowLhs(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real lhs)
Definition: scip_nlp.c:1297
SCIP_EXPORT SCIP_RETCODE SCIPrecalcNlRowPseudoActivity(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:1760
SCIP_EXPORT SCIP_RETCODE SCIPaddQuadVarToNlRow(SCIP *scip, SCIP_NLROW *nlrow, SCIP_VAR *var)
Definition: scip_nlp.c:1455
#define SCIP_Real
Definition: def.h:164
SCIP_EXPORT SCIP_RETCODE SCIPaddNlRow(SCIP *scip, SCIP_NLROW *nlrow)
Definition: scip_nlp.c:460
SCIP_EXPORT SCIP_RETCODE SCIPgetNLPI(SCIP *scip, SCIP_NLPI **nlpi, SCIP_NLPIPROBLEM **nlpiproblem)
Definition: scip_nlp.c:948
SCIP_EXPORT SCIP_RETCODE SCIPgetNLPRealPar(SCIP *scip, SCIP_NLPPARAM type, SCIP_Real *dval)
Definition: scip_nlp.c:799
SCIP_EXPORT SCIP_RETCODE SCIPsetNLPInitialGuess(SCIP *scip, SCIP_Real *initialguess)
Definition: scip_nlp.c:510
common defines and data types used in all packages of SCIP
SCIP_EXPORT SCIP_RETCODE SCIPsetNlRowExprtree(SCIP *scip, SCIP_NLROW *nlrow, SCIP_EXPRTREE *exprtree)
Definition: scip_nlp.c:1604
SCIP_EXPORT SCIP_RETCODE SCIPsetNlRowExprtreeParams(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real *paramvals)
Definition: scip_nlp.c:1654
SCIP_EXPORT SCIP_RETCODE SCIPchgNlRowConstant(SCIP *scip, SCIP_NLROW *nlrow, SCIP_Real constant)
Definition: scip_nlp.c:1343
SCIP_EXPORT SCIP_RETCODE SCIPsetNLPInitialGuessSol(SCIP *scip, SCIP_SOL *sol)
Definition: scip_nlp.c:537
SCIP_EXPORT SCIP_RETCODE SCIPgetNlRowSolActivity(SCIP *scip, SCIP_NLROW *nlrow, SCIP_SOL *sol, SCIP_Real *activity)
Definition: scip_nlp.c:1911
SCIP_EXPORT int SCIPgetNNLPVars(SCIP *scip)
Definition: scip_nlp.c:298
type definitions for specific NLP solver interfaces