Scippy

SCIP

Solving Constraint Integer Programs

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 nlp.h
17  * @ingroup INTERNALAPI
18  * @brief internal methods for NLP management
19  * @author Thorsten Gellermann
20  * @author Stefan Vigerske
21  */
22 
23 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
24 
25 #ifndef __SCIP_NLP_H__
26 #define __SCIP_NLP_H__
27 
28 
29 #include <stdio.h>
30 
31 #include "scip/def.h"
32 #include "blockmemshell/memory.h"
33 #include "scip/type_set.h"
34 #include "scip/type_stat.h"
35 #include "scip/type_misc.h"
36 #include "scip/type_lp.h"
37 #include "scip/type_var.h"
38 #include "scip/type_prob.h"
39 #include "scip/type_sol.h"
40 #include "scip/type_primal.h"
41 #include "scip/pub_nlp.h"
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 /**@name Expressions and Expression tree methods */
48 /**@{ */
49 
50 /** removes fixed variables from an expression tree, so that at exit all variables are active */
51 extern
53  SCIP_EXPRTREE* tree, /**< expression tree */
54  SCIP_SET* set, /**< global SCIP settings */
55  SCIP_Bool* changed, /**< buffer to store whether the tree was changed, i.e., whether there was a fixed variable */
56  int* varpos, /**< array of length at least tree->nvars to store new indices of previously existing variables in expression tree, or -1 if variable was removed; set to NULL if not of interest */
57  int* newvarsstart /**< buffer to store index in tree->vars array where new variables begin, or NULL if not of interest */
58  );
59 
60 /**@} */
61 
62 /**@name Nonlinear row methods */
63 /**@{ */
64 
65 /** create a new nonlinear row
66  * the new row is already captured
67  */
68 extern
70  SCIP_NLROW** nlrow, /**< buffer to store pointer to nonlinear row */
71  BMS_BLKMEM* blkmem, /**< block memory */
72  SCIP_SET* set, /**< global SCIP settings */
73  const char* name, /**< name of nonlinear row */
74  SCIP_Real constant, /**< constant */
75  int nlinvars, /**< number of linear variables */
76  SCIP_VAR** linvars, /**< linear variables, or NULL if nlinvars == 0 */
77  SCIP_Real* lincoefs, /**< linear coefficients, or NULL if nlinvars == 0 */
78  int nquadvars, /**< number variables in quadratic terms */
79  SCIP_VAR** quadvars, /**< variables in quadratic terms, or NULL if nquadvars == 0 */
80  int nquadelems, /**< number of entries in quadratic term matrix */
81  SCIP_QUADELEM* quadelems, /**< elements of quadratic term matrix, or NULL if nquadelems == 0 */
82  SCIP_EXPRTREE* exprtree, /**< expression tree, or NULL */
83  SCIP_Real lhs, /**< left hand side */
84  SCIP_Real rhs, /**< right hand side */
85  SCIP_EXPRCURV curvature /**< curvature of the nonlinear row */
86  );
87 
88 /** create a nonlinear row that is a copy of a given row
89  * the new row is already captured
90  */
91 extern
93  SCIP_NLROW** nlrow, /**< buffer to store pointer to nonlinear row */
94  BMS_BLKMEM* blkmem, /**< block memory */
95  SCIP_SET* set, /**< global SCIP settings */
96  SCIP_NLROW* sourcenlrow /**< nonlinear row to copy */
97  );
98 
99 /** create a new nonlinear row from a linear row
100  * the new row is already captured
101  */
102 extern
104  SCIP_NLROW** nlrow, /**< buffer to store pointer to nonlinear row */
105  BMS_BLKMEM* blkmem, /**< block memory */
106  SCIP_SET* set, /**< global SCIP settings */
107  SCIP_ROW* row /**< the linear row to copy */
108  );
109 
110 /** frees a nonlinear row */
111 extern
113  SCIP_NLROW** nlrow, /**< pointer to NLP row */
114  BMS_BLKMEM* blkmem /**< block memory */
115  );
116 
117 /** output nonlinear row to file stream */
118 extern
120  SCIP_NLROW* nlrow, /**< NLP row */
121  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
122  FILE* file /**< output file (or NULL for standard output) */
123  );
124 
125 /** increases usage counter of NLP nonlinear row */
126 extern
127 void SCIPnlrowCapture(
128  SCIP_NLROW* nlrow /**< nonlinear row to capture */
129  );
130 
131 /** decreases usage counter of NLP nonlinear row */
132 extern
134  SCIP_NLROW** nlrow, /**< nonlinear row to free */
135  BMS_BLKMEM* blkmem, /**< block memory */
136  SCIP_SET* set /**< global SCIP settings */
137  );
138 
139 /** ensures, that linear coefficient array of nonlinear row can store at least num entries */
140 extern
142  SCIP_NLROW* nlrow, /**< NLP row */
143  BMS_BLKMEM* blkmem, /**< block memory */
144  SCIP_SET* set, /**< global SCIP settings */
145  int num /**< minimum number of entries to store */
146  );
147 
148 /** adds a previously non existing linear coefficient to an NLP nonlinear row */
149 extern
151  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
152  BMS_BLKMEM* blkmem, /**< block memory */
153  SCIP_SET* set, /**< global SCIP settings */
154  SCIP_STAT* stat, /**< problem statistics data */
155  SCIP_NLP* nlp, /**< current NLP data */
156  SCIP_VAR* var, /**< variable */
157  SCIP_Real val /**< value of coefficient */
158  );
159 
160 /** deletes linear coefficient from nonlinear row */
161 extern
163  SCIP_NLROW* nlrow, /**< nonlinear row to be changed */
164  SCIP_SET* set, /**< global SCIP settings */
165  SCIP_STAT* stat, /**< problem statistics data */
166  SCIP_NLP* nlp, /**< current NLP data */
167  SCIP_VAR* var /**< coefficient to be deleted */
168  );
169 
170 /** changes or adds a linear coefficient to a nonlinear row */
171 extern
173  SCIP_NLROW* nlrow, /**< nonlinear row */
174  BMS_BLKMEM* blkmem, /**< block memory */
175  SCIP_SET* set, /**< global SCIP settings */
176  SCIP_STAT* stat, /**< problem statistics data */
177  SCIP_NLP* nlp, /**< current NLP data */
178  SCIP_VAR* var, /**< variable */
179  SCIP_Real coef /**< new value of coefficient */
180  );
181 
182 /** ensures, that quadratic variables array of nonlinear row can store at least num entries */
183 extern
185  SCIP_NLROW* nlrow, /**< NLP row */
186  BMS_BLKMEM* blkmem, /**< block memory */
187  SCIP_SET* set, /**< global SCIP settings */
188  int num /**< minimum number of entries to store */
189  );
190 
191 /** adds variable to quadvars array of row */
192 extern
194  SCIP_NLROW* nlrow, /**< nonlinear row */
195  BMS_BLKMEM* blkmem, /**< block memory */
196  SCIP_SET* set, /**< global SCIP settings */
197  SCIP_VAR* var /**< variable to search for */
198  );
199 
200 /** ensures, that quadratic elements array of nonlinear row can store at least num entries */
201 extern
203  SCIP_NLROW* nlrow, /**< NLP row */
204  BMS_BLKMEM* blkmem, /**< block memory */
205  SCIP_SET* set, /**< global SCIP settings */
206  int num /**< minimum number of entries to store */
207  );
208 
209 /** adds a previously non existing quadratic element to an NLP nonlinear row */
210 extern
212  SCIP_NLROW* nlrow, /**< NLP nonlinear row */
213  BMS_BLKMEM* blkmem, /**< block memory */
214  SCIP_SET* set, /**< global SCIP settings */
215  SCIP_STAT* stat, /**< problem statistics data */
216  SCIP_NLP* nlp, /**< current NLP data */
217  SCIP_QUADELEM elem /**< quadratic element to add */
218  );
219 
220 /** deletes quadratic element from nonlinear row */
221 extern
223  SCIP_NLROW* nlrow, /**< nonlinear row to be changed */
224  SCIP_SET* set, /**< global SCIP settings */
225  SCIP_STAT* stat, /**< problem statistics data */
226  SCIP_NLP* nlp, /**< current NLP data */
227  int idx1, /**< index of first variable in element */
228  int idx2 /**< index of second variable in element */
229  );
230 
231 /** changes or adds a quadratic element to a nonlinear row */
232 extern
234  SCIP_NLROW* nlrow, /**< nonlinear row */
235  BMS_BLKMEM* blkmem, /**< block memory */
236  SCIP_SET* set, /**< global SCIP settings */
237  SCIP_STAT* stat, /**< problem statistics data */
238  SCIP_NLP* nlp, /**< current NLP data */
239  SCIP_QUADELEM elem /**< new quadratic element */
240  );
241 
242 /** replaces or deletes an expression tree in nonlinear row */
243 extern
245  SCIP_NLROW* nlrow, /**< nonlinear row */
246  BMS_BLKMEM* blkmem, /**< block memory */
247  SCIP_SET* set, /**< global SCIP settings */
248  SCIP_STAT* stat, /**< problem statistics data */
249  SCIP_NLP* nlp, /**< current NLP data */
250  SCIP_EXPRTREE* exprtree /**< new expression tree, or NULL to delete current one */
251  );
252 
253 /** changes a parameter in an expression of a nonlinear row */
254 extern
256  SCIP_NLROW* nlrow, /**< nonlinear row */
257  BMS_BLKMEM* blkmem, /**< block memory */
258  SCIP_SET* set, /**< global SCIP settings */
259  SCIP_STAT* stat, /**< problem statistics data */
260  SCIP_NLP* nlp, /**< current NLP data */
261  int paramidx, /**< index of parameter in expression tree's parameter array */
262  SCIP_Real paramval /**< new value of parameter */
263  );
264 
265 /** changes all parameters in an expression of a nonlinear row */
266 extern
268  SCIP_NLROW* nlrow, /**< nonlinear row */
269  BMS_BLKMEM* blkmem, /**< block memory */
270  SCIP_SET* set, /**< global SCIP settings */
271  SCIP_STAT* stat, /**< problem statistics data */
272  SCIP_NLP* nlp, /**< current NLP data */
273  SCIP_Real* paramvals /**< new values of parameters */
274  );
275 
276 /** changes constant of nonlinear row */
277 extern
279  SCIP_NLROW* nlrow, /**< nonlinear row */
280  SCIP_SET* set, /**< global SCIP settings */
281  SCIP_STAT* stat, /**< problem statistics data */
282  SCIP_NLP* nlp, /**< current NLP data */
283  SCIP_Real constant /**< new constant */
284  );
285 
286 /** changes left hand side of nonlinear row */
287 extern
289  SCIP_NLROW* nlrow, /**< nonlinear row */
290  SCIP_SET* set, /**< global SCIP settings */
291  SCIP_STAT* stat, /**< problem statistics data */
292  SCIP_NLP* nlp, /**< current NLP data */
293  SCIP_Real lhs /**< new left hand side */
294  );
295 
296 /** changes right hand side of nonlinear row */
297 extern
299  SCIP_NLROW* nlrow, /**< nonlinear row */
300  SCIP_SET* set, /**< global SCIP settings */
301  SCIP_STAT* stat, /**< problem statistics data */
302  SCIP_NLP* nlp, /**< current NLP data */
303  SCIP_Real rhs /**< new right hand side */
304  );
305 
306 /** removes (or substitutes) all fixed, negated, aggregated, multi-aggregated variables from the linear, quadratic, and nonquadratic terms of a nonlinear row */
307 extern
309  SCIP_NLROW* nlrow, /**< nonlinear row */
310  BMS_BLKMEM* blkmem, /**< block memory */
311  SCIP_SET* set, /**< global SCIP settings */
312  SCIP_STAT* stat, /**< problem statistics data */
313  SCIP_NLP* nlp /**< current NLP data */
314  );
315 
316 /** recalculates the current activity of a nonlinear row in the current NLP solution */
317 extern
319  SCIP_NLROW* nlrow, /**< nonlinear row */
320  SCIP_SET* set, /**< global SCIP settings */
321  SCIP_STAT* stat, /**< problem statistics */
322  SCIP_NLP* nlp /**< current NLP data */
323  );
324 
325 /** gives the activity of a nonlinear row in the current NLP solution */
326 extern
328  SCIP_NLROW* nlrow, /**< nonlinear row */
329  SCIP_SET* set, /**< global SCIP settings */
330  SCIP_STAT* stat, /**< problem statistics */
331  SCIP_NLP* nlp, /**< current NLP data */
332  SCIP_Real* activity /**< buffer to store activity value */
333  );
334 
335 /** gives the feasibility of a nonlinear row in the current NLP solution: negative value means infeasibility */
336 extern
338  SCIP_NLROW* nlrow, /**< nonlinear row */
339  SCIP_SET* set, /**< global SCIP settings */
340  SCIP_STAT* stat, /**< problem statistics */
341  SCIP_NLP* nlp, /**< current NLP data */
342  SCIP_Real* feasibility /**< buffer to store feasibility value */
343  );
344 
345 /** calculates the current pseudo activity of a nonlinear row */
346 extern
348  SCIP_NLROW* nlrow, /**< nonlinear row */
349  SCIP_SET* set, /**< global SCIP settings */
350  SCIP_STAT* stat /**< problem statistics */
351  );
352 
353 /** returns the pseudo activity of a nonlinear row in the current pseudo solution */
354 extern
356  SCIP_NLROW* nlrow, /**< nonlinear row */
357  SCIP_SET* set, /**< global SCIP settings */
358  SCIP_STAT* stat, /**< problem statistics */
359  SCIP_Real* pseudoactivity /**< buffer to store pseudo activity value */
360  );
361 
362 /** returns the pseudo feasibility of a nonlinear row in the current pseudo solution: negative value means infeasibility */
363 extern
365  SCIP_NLROW* nlrow, /**< nonlinear row */
366  SCIP_SET* set, /**< global SCIP settings */
367  SCIP_STAT* stat, /**< problem statistics */
368  SCIP_Real* pseudofeasibility /**< buffer to store pseudo feasibility value */
369  );
370 
371 /** returns the activity of a nonlinear row for a given solution */
372 extern
374  SCIP_NLROW* nlrow, /**< nonlinear row */
375  SCIP_SET* set, /**< global SCIP settings */
376  SCIP_STAT* stat, /**< problem statistics data */
377  SCIP_SOL* sol, /**< primal CIP solution */
378  SCIP_Real* activity /**< buffer to store activity value */
379  );
380 
381 /** returns the feasibility of a nonlinear row for the given solution */
382 extern
384  SCIP_NLROW* nlrow, /**< nonlinear row */
385  SCIP_SET* set, /**< global SCIP settings */
386  SCIP_STAT* stat, /**< problem statistics data */
387  SCIP_SOL* sol, /**< primal CIP solution */
388  SCIP_Real* feasibility /**< buffer to store feasibility value */
389  );
390 
391 /** returns the minimal activity of a nonlinear row w.r.t. the variables' bounds */
392 extern
394  SCIP_NLROW* nlrow, /**< nonlinear row */
395  SCIP_SET* set, /**< global SCIP settings */
396  SCIP_STAT* stat, /**< problem statistics data */
397  SCIP_Real* minactivity, /**< buffer to store minimal activity, or NULL */
398  SCIP_Real* maxactivity /**< buffer to store maximal activity, or NULL */
399  );
400 
401 /** returns whether the nonlinear row is redundant w.r.t. the variables' bounds */
402 extern
404  SCIP_NLROW* nlrow, /**< nonlinear row */
405  SCIP_SET* set, /**< global SCIP settings */
406  SCIP_STAT* stat, /**< problem statistics data */
407  SCIP_Bool* isredundant /**< buffer to store whether row is redundant */
408  );
409 
410 /**@} */
411 
412 /**@name NLP methods */
413 /**@{ */
414 
415 /** includes event handler that is used by NLP */
417  SCIP_SET* set, /**< global SCIP settings */
418  BMS_BLKMEM* blkmem /**< block memory */
419  );
420 
421 /** construct a new empty NLP */
423  SCIP_NLP** nlp, /**< NLP handler, call by reference */
424  BMS_BLKMEM* blkmem, /**< block memory */
425  SCIP_SET* set, /**< global SCIP settings */
426  SCIP_STAT* stat, /**< problem statistics */
427  const char* name, /**< problem name */
428  int nvars_estimate /**< an estimate on the number of variables that may be added to the NLP later */
429  );
430 
431 /** frees NLP data object */
432 extern
434  SCIP_NLP** nlp, /**< pointer to NLP data object */
435  BMS_BLKMEM* blkmem, /**< block memory */
436  SCIP_SET* set, /**< global SCIP settings */
437  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
438  SCIP_LP* lp /**< SCIP LP, needed for releasing variables */
439  );
440 
441 /** resets the NLP to the empty NLP by removing all variables and rows from NLP,
442  * releasing all rows, and flushing the changes to the NLP solver
443  */
444 extern
446  SCIP_NLP* nlp, /**< NLP data */
447  BMS_BLKMEM* blkmem, /**< block memory */
448  SCIP_SET* set, /**< global SCIP settings */
449  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
450  SCIP_LP* lp /**< SCIP LP, needed for releasing variables */
451  );
452 
453 /** currently a dummy function that always returns TRUE */
454 extern
456  SCIP_NLP* nlp /**< NLP data */
457  );
458 
459 /** ensures, that variables array of NLP can store at least num entries */
460 extern
462  SCIP_NLP* nlp, /**< NLP data */
463  BMS_BLKMEM* blkmem, /**< block memory */
464  SCIP_SET* set, /**< global SCIP settings */
465  int num /**< minimum number of entries to store */
466  );
467 
468 /** adds a variable to the NLP and captures the variable */
469 extern
471  SCIP_NLP* nlp, /**< NLP data */
472  BMS_BLKMEM* blkmem, /**< block memory */
473  SCIP_SET* set, /**< global SCIP settings */
474  SCIP_VAR* var /**< variable */
475  );
476 
477 /** adds a set of variables to the NLP and captures the variables */
478 extern
480  SCIP_NLP* nlp, /**< NLP data */
481  BMS_BLKMEM* blkmem, /**< block memory */
482  SCIP_SET* set, /**< global SCIP settings */
483  int nvars, /**< number of variables to add */
484  SCIP_VAR** vars /**< variables to add */
485  );
486 
487 /** deletes a variable from the NLP and releases the variable */
488 extern
490  SCIP_NLP* nlp, /**< NLP data */
491  BMS_BLKMEM* blkmem, /**< block memory */
492  SCIP_SET* set, /**< global SCIP settings */
493  SCIP_EVENTQUEUE* eventqueue, /**< event queue */
494  SCIP_LP* lp, /**< SCIP LP, needed to release variable */
495  SCIP_VAR* var /**< variable */
496  );
497 
498 /** ensures, that nonlinear rows array of NLP can store at least num entries */
499 extern
501  SCIP_NLP* nlp, /**< NLP data */
502  BMS_BLKMEM* blkmem, /**< block memory */
503  SCIP_SET* set, /**< global SCIP settings */
504  int num /**< minimum number of entries to store */
505  );
506 
507 /** adds a nonlinear row to the NLP and captures it
508  * all variables of the row need to be present in the NLP */
509 extern
511  SCIP_NLP* nlp, /**< NLP data */
512  BMS_BLKMEM* blkmem, /**< block memory */
513  SCIP_SET* set, /**< global SCIP settings */
514  SCIP_STAT* stat, /**< problem statistics data */
515  SCIP_NLROW* nlrow /**< nonlinear row */
516  );
517 
518 /** adds nonlinear rows to the NLP and captures them
519  * all variables of the row need to be present in the NLP */
520 extern
522  SCIP_NLP* nlp, /**< NLP data */
523  BMS_BLKMEM* blkmem, /**< block memory */
524  SCIP_SET* set, /**< global SCIP settings */
525  SCIP_STAT* stat, /**< problem statistics data */
526  int nnlrows, /**< number of rows to add */
527  SCIP_NLROW** nlrows /**< rows to add */
528  );
529 
530 /** deletes a nonlinear row from the NLP
531  * does nothing if nonlinear row is not in NLP */
532 extern
534  SCIP_NLP* nlp, /**< NLP data */
535  BMS_BLKMEM* blkmem, /**< block memory */
536  SCIP_SET* set, /**< global SCIP settings */
537  SCIP_NLROW* nlrow /**< nonlinear row */
538  );
539 
540 /** applies all cached changes to the NLP solver */
541 extern
543  SCIP_NLP* nlp, /**< current NLP data */
544  BMS_BLKMEM* blkmem, /**< block memory */
545  SCIP_SET* set /**< global SCIP settings */
546  );
547 
548 /** solves the NLP */
549 extern
551  SCIP_NLP* nlp, /**< NLP data */
552  BMS_BLKMEM* blkmem, /**< block memory buffers */
553  SCIP_SET* set, /**< global SCIP settings */
554  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
555  SCIP_STAT* stat /**< problem statistics */
556  );
557 
558 /** gets objective value of current NLP */
559 extern
561  SCIP_NLP* nlp /**< current NLP data */
562  );
563 
564 /** gives current pseudo objective value */
565 extern
567  SCIP_NLP* nlp, /**< current NLP data */
568  SCIP_SET* set, /**< global SCIP settings */
569  SCIP_STAT* stat, /**< problem statistics */
570  SCIP_Real* pseudoobjval /**< buffer to store pseudo objective value */
571  );
572 
573 /** gets fractional variables of last NLP solution along with solution values and fractionalities
574  */
575 extern
577  SCIP_NLP* nlp, /**< NLP data structure */
578  BMS_BLKMEM* blkmem, /**< block memory */
579  SCIP_SET* set, /**< global SCIP settings */
580  SCIP_STAT* stat, /**< problem statistics */
581  SCIP_VAR*** fracvars, /**< pointer to store the array of NLP fractional variables, or NULL */
582  SCIP_Real** fracvarssol, /**< pointer to store the array of NLP fractional variables solution values, or NULL */
583  SCIP_Real** fracvarsfrac, /**< pointer to store the array of NLP fractional variables fractionalities, or NULL */
584  int* nfracvars, /**< pointer to store the number of NLP fractional variables , or NULL */
585  int* npriofracvars /**< pointer to store the number of NLP fractional variables with maximal branching priority, or NULL */
586  );
587 
588 /** removes all redundant nonlinear rows */
589 extern
591  SCIP_NLP* nlp, /**< current NLP data */
592  BMS_BLKMEM* blkmem, /**< block memory buffers */
593  SCIP_SET* set, /**< global SCIP settings */
594  SCIP_STAT* stat /**< problem statistics */
595  );
596 
597 /** set initial guess (approximate primal solution) for next solve
598  *
599  * array initguess must be NULL or have length at least SCIPnlpGetNVars()
600  */
601 extern
603  SCIP_NLP* nlp, /**< current NLP data */
604  BMS_BLKMEM* blkmem, /**< block memory buffers */
605  SCIP_Real* initguess /**< new initial guess, or NULL to clear previous one */
606  );
607 
608 /** writes NLP to a file */
609 extern
611  SCIP_NLP* nlp, /**< current NLP data */
612  SCIP_SET* set, /**< global SCIP settings */
613  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
614  const char* fname /**< file name */
615  );
616 
617 /*
618  * NLP diving methods
619  */
620 
621 /** signals start of diving */
622 extern
624  SCIP_NLP* nlp, /**< current NLP data */
625  BMS_BLKMEM* blkmem, /**< block memory buffers */
626  SCIP_SET* set /**< global SCIP settings */
627  );
628 
629 /** resets the bound and objective changes made during diving and disables diving mode */
630 extern
632  SCIP_NLP* nlp, /**< current NLP data */
633  BMS_BLKMEM* blkmem, /**< block memory buffers */
634  SCIP_SET* set /**< global SCIP settings */
635  );
636 
637 /** changes coefficient of variable in diving NLP */
638 extern
640  SCIP_NLP* nlp, /**< current NLP data */
641  BMS_BLKMEM* blkmem, /**< block memory */
642  SCIP_SET* set, /**< global SCIP settings */
643  SCIP_STAT* stat, /**< problem statistics data */
644  SCIP_VAR* var, /**< variable which coefficient to change */
645  SCIP_Real coef /**< new linear coefficient of variable in objective */
646  );
647 
648 /** changes bounds of variable in diving NLP */
649 extern
651  SCIP_NLP* nlp, /**< current NLP data */
652  SCIP_VAR* var, /**< variable which bounds to change */
653  SCIP_Real lb, /**< new lower bound of variable */
654  SCIP_Real ub /**< new upper bound of variable */
655  );
656 
657 /** changes bounds of a set of variables in diving NLP */
658 extern
660  SCIP_NLP* nlp, /**< current NLP data */
661  SCIP_SET* set, /**< global SCIP settings */
662  int nvars, /**< number of variables which bounds to change */
663  SCIP_VAR** vars, /**< variables which bounds to change */
664  SCIP_Real* lbs, /**< new lower bounds of variables */
665  SCIP_Real* ubs /**< new upper bounds of variables */
666  );
667 
668 /** returns whether the objective function has been changed during diving */
669 extern
671  SCIP_NLP* nlp /**< current NLP data */
672  );
673 
674 /** solves diving NLP */
675 extern
677  SCIP_NLP* nlp, /**< current NLP data */
678  BMS_BLKMEM* blkmem, /**< block memory buffers */
679  SCIP_SET* set, /**< global SCIP settings */
680  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
681  SCIP_STAT* stat /**< problem statistics */
682  );
683 
684 /** gets array with variables of the NLP */
685 extern
687  SCIP_NLP* nlp /**< current NLP data */
688  );
689 
690 /** gets current number of variables in NLP */
691 extern
692 int SCIPnlpGetNVars(
693  SCIP_NLP* nlp /**< current NLP data */
694  );
695 
696 /** computes for each variables the number of NLP rows in which the variable appears in a nonlinear var */
697 extern
699  SCIP_NLP* nlp, /**< current NLP data */
700  int* nlcount /**< an array of length at least SCIPnlpGetNVars() to store nonlinearity counts of variables */
701  );
702 
703 /** indicates whether there exists a row that contains a continuous variable in a nonlinear term
704  *
705  * @note The method may have to touch every row and nonlinear term to compute its result.
706  */
707 extern
709  SCIP_NLP* nlp /**< current NLP data */
710  );
711 
712 /** gives dual solution values associated with lower bounds of NLP variables */
713 extern
715  SCIP_NLP* nlp /**< current NLP data */
716  );
717 
718 /** gives dual solution values associated with upper bounds of NLP variables */
719 extern
721  SCIP_NLP* nlp /**< current NLP data */
722  );
723 
724 /** gets array with nonlinear rows of the NLP */
725 extern
727  SCIP_NLP* nlp /**< current NLP data */
728  );
729 
730 /** gets current number of nonlinear rows in NLP */
731 extern
733  SCIP_NLP* nlp /**< current NLP data */
734  );
735 
736 /** gets the NLP solver interface */
737 extern
739  SCIP_NLP* nlp /**< current NLP data */
740  );
741 
742 /** gets the NLP problem in the solver interface */
743 extern
745  SCIP_NLP* nlp /**< current NLP data */
746  );
747 
748 /** indicates whether NLP is currently in diving mode */
749 extern
751  SCIP_NLP* nlp /**< current NLP data */
752  );
753 
754 /** gets solution status of current NLP */
755 extern
757  SCIP_NLP* nlp /**< current NLP data */
758  );
759 
760 /** gets termination status of last NLP solve */
761 extern
763  SCIP_NLP* nlp /**< current NLP data */
764  );
765 
766 /** gives statistics (number of iterations, solving time, ...) of last NLP solve */
767 extern
769  SCIP_NLP* nlp, /**< pointer to NLP datastructure */
770  SCIP_NLPSTATISTICS* statistics /**< pointer to store statistics */
771  );
772 
773 /** indicates whether a feasible solution for the current NLP is available
774  * thus, returns whether the solution status <= feasible */
775 extern
777  SCIP_NLP* nlp /**< current NLP data */
778  );
779 
780 /** gets integer parameter of NLP */
781 extern
783  SCIP_NLP* nlp, /**< pointer to NLP datastructure */
784  SCIP_NLPPARAM type, /**< parameter number */
785  int* ival /**< pointer to store the parameter value */
786  );
787 
788 /** sets integer parameter of NLP */
789 extern
791  SCIP_NLP* nlp, /**< pointer to NLP datastructure */
792  SCIP_NLPPARAM type, /**< parameter number */
793  int ival /**< parameter value */
794  );
795 
796 /** gets floating point parameter of NLP */
797 extern
799  SCIP_NLP* nlp, /**< pointer to NLP datastructure */
800  SCIP_NLPPARAM type, /**< parameter number */
801  SCIP_Real* dval /**< pointer to store the parameter value */
802  );
803 
804 /** sets floating point parameter of NLP */
805 extern
807  SCIP_NLP* nlp, /**< pointer to NLP datastructure */
808  SCIP_NLPPARAM type, /**< parameter number */
809  SCIP_Real dval /**< parameter value */
810  );
811 
812 /** gets string parameter of NLP */
813 extern
815  SCIP_NLP* nlp, /**< pointer to NLP datastructure */
816  SCIP_NLPPARAM type, /**< parameter number */
817  const char** sval /**< pointer to store the parameter value */
818  );
819 
820 /** sets string parameter of NLP */
821 extern
823  SCIP_NLP* nlp, /**< pointer to NLP datastructure */
824  SCIP_NLPPARAM type, /**< parameter number */
825  const char* sval /**< parameter value */
826  );
827 
828 /**@} */
829 
830 #ifdef __cplusplus
831 }
832 #endif
833 
834 #endif /* __SCIP_NLP_H__ */
SCIP_RETCODE SCIPnlpDelVar(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_VAR *var)
Definition: nlp.c:5379
SCIP_RETCODE SCIPnlpFree(SCIP_NLP **nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
Definition: nlp.c:5186
SCIP_RETCODE SCIPnlrowEnsureQuadVarsSize(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
Definition: nlp.c:2525
SCIP_RETCODE SCIPnlpSetStringPar(SCIP_NLP *nlp, SCIP_NLPPARAM type, const char *sval)
Definition: nlp.c:6112
enum SCIP_NlpTermStat SCIP_NLPTERMSTAT
Definition: type_nlpi.h:84
int SCIPnlpGetNVars(SCIP_NLP *nlp)
Definition: nlp.c:5803
SCIP_RETCODE SCIPnlpEndDive(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: nlp.c:6162
type definitions for miscellaneous datastructures
SCIP_RETCODE SCIPnlrowFree(SCIP_NLROW **nlrow, BMS_BLKMEM *blkmem)
Definition: nlp.c:2253
SCIP_NLPTERMSTAT SCIPnlpGetTermstat(SCIP_NLP *nlp)
Definition: nlp.c:5992
SCIP_RETCODE SCIPnlrowChgConstant(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_Real constant)
Definition: nlp.c:2773
SCIP_RETCODE SCIPnlrowChgExprtreeParam(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, int paramidx, SCIP_Real paramval)
Definition: nlp.c:2728
int SCIPnlpGetNNlRows(SCIP_NLP *nlp)
Definition: nlp.c:5942
SCIP_RETCODE SCIPnlrowGetSolFeasibility(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Real *feasibility)
Definition: nlp.c:3159
SCIP_RETCODE SCIPnlrowAddQuadVar(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR *var)
Definition: nlp.c:2549
SCIP_RETCODE SCIPnlrowCreateCopy(SCIP_NLROW **nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_NLROW *sourcenlrow)
Definition: nlp.c:2150
SCIP_NLPI * SCIPnlpGetNLPI(SCIP_NLP *nlp)
Definition: nlp.c:5952
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
SCIP_RETCODE SCIPnlpEnsureVarsSize(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
Definition: nlp.c:5294
type definitions for global SCIP settings
SCIP_Bool SCIPnlpIsDiving(SCIP_NLP *nlp)
Definition: nlp.c:5972
SCIP_RETCODE SCIPnlpAddVar(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_VAR *var)
Definition: nlp.c:5328
SCIP_Real SCIPnlpGetObjval(SCIP_NLP *nlp)
Definition: nlp.c:5590
SCIP_RETCODE SCIPnlpChgVarObjDive(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, SCIP_Real coef)
Definition: nlp.c:6223
SCIP_RETCODE SCIPnlrowDelQuadElement(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, int idx1, int idx2)
Definition: nlp.c:2623
SCIP_RETCODE SCIPnlrowRecalcNLPActivity(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp)
Definition: nlp.c:2849
SCIP_RETCODE SCIPnlpGetRealPar(SCIP_NLP *nlp, SCIP_NLPPARAM type, SCIP_Real *dval)
Definition: nlp.c:6062
SCIP_RETCODE SCIPnlpAddVars(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, int nvars, SCIP_VAR **vars)
Definition: nlp.c:5354
SCIP_RETCODE SCIPnlpChgVarBoundsDive(SCIP_NLP *nlp, SCIP_VAR *var, SCIP_Real lb, SCIP_Real ub)
Definition: nlp.c:6283
enum SCIP_NlpParam SCIP_NLPPARAM
Definition: type_nlpi.h:56
SCIP_Real * SCIPnlpGetVarsLbDualsol(SCIP_NLP *nlp)
Definition: nlp.c:5912
SCIP_NLPIPROBLEM * SCIPnlpGetNLPIProblem(SCIP_NLP *nlp)
Definition: nlp.c:5962
SCIP_RETCODE SCIPnlrowCreateFromRow(SCIP_NLROW **nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_ROW *row)
Definition: nlp.c:2185
SCIP_RETCODE SCIPnlrowPrint(SCIP_NLROW *nlrow, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
Definition: nlp.c:2290
void SCIPnlrowCapture(SCIP_NLROW *nlrow)
Definition: nlp.c:2345
type definitions for problem statistics
SCIP_RETCODE SCIPexprtreeRemoveFixedVars(SCIP_EXPRTREE *tree, SCIP_SET *set, SCIP_Bool *changed, int *varpos, int *newvarsstart)
Definition: nlp.c:224
type definitions for LP management
SCIP_RETCODE SCIPnlpWrite(SCIP_NLP *nlp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *fname)
Definition: nlp.c:5742
SCIP_RETCODE SCIPnlrowGetActivityBounds(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *minactivity, SCIP_Real *maxactivity)
Definition: nlp.c:3180
SCIP_RETCODE SCIPnlrowCreate(SCIP_NLROW **nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, 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 *exprtree, SCIP_Real lhs, SCIP_Real rhs, SCIP_EXPRCURV curvature)
Definition: nlp.c:2001
SCIP_RETCODE SCIPnlrowEnsureQuadElementsSize(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
Definition: nlp.c:2584
SCIP_RETCODE SCIPnlpSetRealPar(SCIP_NLP *nlp, SCIP_NLPPARAM type, SCIP_Real dval)
Definition: nlp.c:6079
enum SCIP_NlpSolStat SCIP_NLPSOLSTAT
Definition: type_nlpi.h:69
SCIP_RETCODE SCIPnlpReset(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
Definition: nlp.c:5245
SCIP_RETCODE SCIPnlrowIsRedundant(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *isredundant)
Definition: nlp.c:3211
SCIP_RETCODE SCIPnlrowChgExprtreeParams(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_Real *paramvals)
Definition: nlp.c:2751
SCIP_RETCODE SCIPnlrowChgRhs(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_Real rhs)
Definition: nlp.c:2813
SCIP_RETCODE SCIPnlrowGetNLPFeasibility(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_Real *feasibility)
Definition: nlp.c:2953
SCIP_RETCODE SCIPnlpGetVarsNonlinearity(SCIP_NLP *nlp, int *nlcount)
Definition: nlp.c:5813
SCIP_RETCODE SCIPnlpInclude(SCIP_SET *set, BMS_BLKMEM *blkmem)
Definition: nlp.c:5040
SCIP_RETCODE SCIPnlpRemoveRedundantNlRows(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: nlp.c:5663
SCIP_RETCODE SCIPnlrowAddLinearCoef(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_VAR *var, SCIP_Real val)
Definition: nlp.c:2406
SCIP_RETCODE SCIPnlpCreate(SCIP_NLP **nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, const char *name, int nvars_estimate)
Definition: nlp.c:5065
type definitions for problem variables
SCIP_RETCODE SCIPnlrowRecalcPseudoActivity(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat)
Definition: nlp.c:2973
SCIP_RETCODE SCIPnlpStartDive(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: nlp.c:6132
SCIP_Bool SCIPnlpHasContinuousNonlinearity(SCIP_NLP *nlp)
Definition: nlp.c:5874
public methods for NLP management
SCIP_Bool SCIPnlpIsDivingObjChanged(SCIP_NLP *nlp)
Definition: nlp.c:6355
SCIP_RETCODE SCIPnlrowDelLinearCoef(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_VAR *var)
Definition: nlp.c:2454
#define SCIP_Bool
Definition: def.h:69
SCIP_RETCODE SCIPnlpGetIntPar(SCIP_NLP *nlp, SCIP_NLPPARAM type, int *ival)
Definition: nlp.c:6029
SCIP_RETCODE SCIPnlpSolveDive(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat)
Definition: nlp.c:6363
SCIP_Real * SCIPnlpGetVarsUbDualsol(SCIP_NLP *nlp)
Definition: nlp.c:5922
SCIP_RETCODE SCIPnlrowAddQuadElement(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_QUADELEM elem)
Definition: nlp.c:2608
SCIP_RETCODE SCIPnlrowGetPseudoActivity(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *pseudoactivity)
Definition: nlp.c:3028
SCIP_NLROW ** SCIPnlpGetNlRows(SCIP_NLP *nlp)
Definition: nlp.c:5932
SCIP_RETCODE SCIPnlpGetStringPar(SCIP_NLP *nlp, SCIP_NLPPARAM type, const char **sval)
Definition: nlp.c:6095
SCIP_RETCODE SCIPnlrowGetPseudoFeasibility(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *pseudofeasibility)
Definition: nlp.c:3054
SCIP_RETCODE SCIPnlrowChgLhs(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_Real lhs)
Definition: nlp.c:2793
SCIP_RETCODE SCIPnlrowRelease(SCIP_NLROW **nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: nlp.c:2357
type definitions for storing primal CIP solutions
type definitions for storing and manipulating the main problem
SCIP_RETCODE SCIPnlrowChgQuadElem(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_QUADELEM elem)
Definition: nlp.c:2657
enum SCIP_ExprCurv SCIP_EXPRCURV
Definition: type_expr.h:95
SCIP_RETCODE SCIPnlpEnsureNlRowsSize(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
Definition: nlp.c:5415
SCIP_RETCODE SCIPnlpDelNlRow(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_NLROW *nlrow)
Definition: nlp.c:5495
SCIP_RETCODE SCIPnlpFlush(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set)
Definition: nlp.c:5526
SCIP_RETCODE SCIPnlpChgVarsBoundsDive(SCIP_NLP *nlp, SCIP_SET *set, int nvars, SCIP_VAR **vars, SCIP_Real *lbs, SCIP_Real *ubs)
Definition: nlp.c:6311
SCIP_RETCODE SCIPnlpSetInitialGuess(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_Real *initguess)
Definition: nlp.c:5709
#define SCIP_Real
Definition: def.h:157
SCIP_Bool SCIPnlpHasSolution(SCIP_NLP *nlp)
Definition: nlp.c:6019
SCIP_RETCODE SCIPnlrowChgLinearCoef(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_VAR *var, SCIP_Real coef)
Definition: nlp.c:2487
SCIP_RETCODE SCIPnlpSetIntPar(SCIP_NLP *nlp, SCIP_NLPPARAM type, int ival)
Definition: nlp.c:6046
SCIP_NLPSOLSTAT SCIPnlpGetSolstat(SCIP_NLP *nlp)
Definition: nlp.c:5982
SCIP_RETCODE SCIPnlpGetStatistics(SCIP_NLP *nlp, SCIP_NLPSTATISTICS *statistics)
Definition: nlp.c:6002
SCIP_RETCODE SCIPnlpSolve(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat)
Definition: nlp.c:5563
SCIP_RETCODE SCIPnlrowRemoveFixedVars(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp)
Definition: nlp.c:2833
type definitions for collecting primal CIP solutions and primal informations
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPnlrowEnsureLinearSize(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
Definition: nlp.c:2381
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:426
SCIP_RETCODE SCIPnlpGetFracVars(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR ***fracvars, SCIP_Real **fracvarssol, SCIP_Real **fracvarsfrac, int *nfracvars, int *npriofracvars)
Definition: nlp.c:5629
SCIP_RETCODE SCIPnlrowChgExprtree(SCIP_NLROW *nlrow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_EXPRTREE *exprtree)
Definition: nlp.c:2689
SCIP_RETCODE SCIPnlpGetPseudoObjval(SCIP_NLP *nlp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *pseudoobjval)
Definition: nlp.c:5600
SCIP_RETCODE SCIPnlrowGetNLPActivity(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLP *nlp, SCIP_Real *activity)
Definition: nlp.c:2926
SCIP_Bool SCIPnlpHasCurrentNodeNLP(SCIP_NLP *nlp)
Definition: nlp.c:5286
SCIP_RETCODE SCIPnlpAddNlRows(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, int nnlrows, SCIP_NLROW **nlrows)
Definition: nlp.c:5467
SCIP_RETCODE SCIPnlrowGetSolActivity(SCIP_NLROW *nlrow, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Real *activity)
Definition: nlp.c:3074
SCIP_RETCODE SCIPnlpAddNlRow(SCIP_NLP *nlp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_NLROW *nlrow)
Definition: nlp.c:5443
SCIP_VAR ** SCIPnlpGetVars(SCIP_NLP *nlp)
Definition: nlp.c:5793
memory allocation routines