Scippy

SCIP

Solving Constraint Integer Programs

lpi.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-2017 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not email to scip@zib.de. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file lpi.h
17  * @ingroup INTERNALAPI
18  * @brief interface methods for specific LP solvers
19  * @author Tobias Achterberg
20  * @author Marc Pfetsch
21  *
22  * This file specifies a generic LP solver interface used by SCIP to create, modify, and solve linear programs of the
23  * form
24  *
25  * min/max obj * x
26  * lhs <= A * x <= rhs
27  * lb <= x <= ub
28  *
29  * and query information about the solution. Although it includes a few SCIP header files, e.g., because it uses SCIP's
30  * return codes, it can be used independently of any SCIP instance.
31  *
32  * The basis status for (column) variables are as follows:
33  * - If x_j = lb, then j is at its lower bound (SCIP_BASESTAT_LOWER).
34  * - If x_j = ub, then j is at its lower bound (SCIP_BASESTAT_UPPER).
35  * - If x_j is in the basis, it has SCIP_BASESTAT_BASIC status.
36  * - If x_j is free and non-basic, it has SCIP_BASESTAT_ZERO status.
37  *
38  * The basis status for (row) slack variables are:
39  * - If (A * x)_i = lhs, then i is at its lower bound (SCIP_BASESTAT_LOWER).
40  * - If (A * x)_i = rhs, then i is at its upper bound (SCIP_BASESTAT_UPPER).
41  * - If the slack variable for row i is basic, it has SCIP_BASESTAT_BASIC status.
42  *
43  * If the solvers use their status differently, the have to be corrected.
44  *
45  * In the methods accessing information about the (inverse of the) basis matrix, the interface assumes the following
46  * column-oriented format: slack variables of rows have coefficient +1 and the basis matrix is a regular m times m
47  * submatrix of (A,I), where m is the number of rows and I is the identity matrix. This means that if, internally, the
48  * LP solver uses coefficients -1 for some of the slack variables, then rows associated with slacks variables whose
49  * coefficient is -1 should be negated in order to return the result in terms of the LP interface definition.
50  *
51  * The creation of a new LP should always be done in the following ways: Either one can use SCIPlpiLoadColLP() or one
52  * first adds empty columns or rows. Then the matrix entries can be added by adding columns and rows, respectively. It
53  * is an error, if matrix entries are added for rows or columns that have not been added before.
54  */
55 
56 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
57 
58 #ifndef __SCIP_LPI_H__
59 #define __SCIP_LPI_H__
60 
61 
62 #include "scip/def.h"
63 #include "blockmemshell/memory.h"
64 #include "scip/type_retcode.h"
65 #include "lpi/type_lpi.h"
66 
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70 
71 /*
72  * Miscellaneous Methods
73  */
74 
75 /**@name Miscellaneous Methods */
76 /**@{ */
77 
78 /** gets name and version of LP solver */
79 extern
80 const char* SCIPlpiGetSolverName(
81  void
82  );
83 
84 /** gets description of LP solver (developer, webpage, ...) */
85 extern
86 const char* SCIPlpiGetSolverDesc(
87  void
88  );
89 
90 /** gets pointer for LP solver - use only with great care
91  *
92  * The behavior of this function depends on the solver and its use is
93  * therefore only recommended if you really know what you are
94  * doing. In general, it returns a pointer to the LP solver object.
95  */
96 extern
98  SCIP_LPI* lpi /**< pointer to an LP interface structure */
99  );
100 
101 /** pass integrality information about variables to the solver */
102 extern
104  SCIP_LPI* lpi, /**< pointer to an LP interface structure */
105  int ncols, /**< length of integrality array */
106  int* intInfo /**< integrality array (0: continuous, 1: integer) */
107  );
108 
109 /**@} */
110 
111 
112 
113 
114 /*
115  * LPI Creation and Destruction Methods
116  */
117 
118 /**@name LPI Creation and Destruction Methods */
119 /**@{ */
120 
121 /** creates an LP problem object */
122 extern
124  SCIP_LPI** lpi, /**< pointer to an LP interface structure */
125  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler to use for printing messages, or NULL */
126  const char* name, /**< problem name */
127  SCIP_OBJSEN objsen /**< objective sense */
128  );
129 
130 /** deletes an LP problem object */
131 extern
133  SCIP_LPI** lpi /**< pointer to an LP interface structure */
134  );
135 
136 /**@} */
137 
138 
139 
140 
141 /*
142  * Modification Methods
143  */
144 
145 /**@name Modification Methods */
146 /**@{ */
147 
148 /** copies LP data with column matrix into LP solver */
149 extern
151  SCIP_LPI* lpi, /**< LP interface structure */
152  SCIP_OBJSEN objsen, /**< objective sense */
153  int ncols, /**< number of columns */
154  const SCIP_Real* obj, /**< objective function values of columns */
155  const SCIP_Real* lb, /**< lower bounds of columns */
156  const SCIP_Real* ub, /**< upper bounds of columns */
157  char** colnames, /**< column names, or NULL */
158  int nrows, /**< number of rows */
159  const SCIP_Real* lhs, /**< left hand sides of rows */
160  const SCIP_Real* rhs, /**< right hand sides of rows */
161  char** rownames, /**< row names, or NULL */
162  int nnonz, /**< number of nonzero elements in the constraint matrix */
163  const int* beg, /**< start index of each column in ind- and val-array */
164  const int* ind, /**< row indices of constraint matrix entries */
165  const SCIP_Real* val /**< values of constraint matrix entries */
166  );
167 
168 /** adds columns to the LP
169  *
170  * @note ind array is not checked for duplicates, problems may appear if indeces are added more than once
171  */
172 extern
174  SCIP_LPI* lpi, /**< LP interface structure */
175  int ncols, /**< number of columns to be added */
176  const SCIP_Real* obj, /**< objective function values of new columns */
177  const SCIP_Real* lb, /**< lower bounds of new columns */
178  const SCIP_Real* ub, /**< upper bounds of new columns */
179  char** colnames, /**< column names, or NULL */
180  int nnonz, /**< number of nonzero elements to be added to the constraint matrix */
181  const int* beg, /**< start index of each column in ind- and val-array, or NULL if nnonz == 0 */
182  const int* ind, /**< row indices of constraint matrix entries, or NULL if nnonz == 0 */
183  const SCIP_Real* val /**< values of constraint matrix entries, or NULL if nnonz == 0 */
184  );
185 
186 /** deletes all columns in the given range from LP */
187 extern
189  SCIP_LPI* lpi, /**< LP interface structure */
190  int firstcol, /**< first column to be deleted */
191  int lastcol /**< last column to be deleted */
192  );
193 
194 /** deletes columns from SCIP_LPI; the new position of a column must not be greater that its old position */
195 extern
197  SCIP_LPI* lpi, /**< LP interface structure */
198  int* dstat /**< deletion status of columns
199  * input: 1 if column should be deleted, 0 if not
200  * output: new position of column, -1 if column was deleted */
201  );
202 
203 /** adds rows to the LP
204  *
205  * @note ind array is not checked for duplicates, problems may appear if indeces are added more than once
206  */
207 extern
209  SCIP_LPI* lpi, /**< LP interface structure */
210  int nrows, /**< number of rows to be added */
211  const SCIP_Real* lhs, /**< left hand sides of new rows */
212  const SCIP_Real* rhs, /**< right hand sides of new rows */
213  char** rownames, /**< row names, or NULL */
214  int nnonz, /**< number of nonzero elements to be added to the constraint matrix */
215  const int* beg, /**< start index of each row in ind- and val-array, or NULL if nnonz == 0 */
216  const int* ind, /**< column indices of constraint matrix entries, or NULL if nnonz == 0 */
217  const SCIP_Real* val /**< values of constraint matrix entries, or NULL if nnonz == 0 */
218  );
219 
220 /** deletes all rows in the given range from LP */
221 extern
223  SCIP_LPI* lpi, /**< LP interface structure */
224  int firstrow, /**< first row to be deleted */
225  int lastrow /**< last row to be deleted */
226  );
227 
228 /** deletes rows from SCIP_LPI; the new position of a row must not be greater that its old position */
229 extern
231  SCIP_LPI* lpi, /**< LP interface structure */
232  int* dstat /**< deletion status of rows
233  * input: 1 if row should be deleted, 0 if not
234  * output: new position of row, -1 if row was deleted */
235  );
236 
237 /** clears the whole LP */
238 extern
240  SCIP_LPI* lpi /**< LP interface structure */
241  );
242 
243 /** changes lower and upper bounds of columns */
244 extern
246  SCIP_LPI* lpi, /**< LP interface structure */
247  int ncols, /**< number of columns to change bounds for */
248  const int* ind, /**< column indices */
249  const SCIP_Real* lb, /**< values for the new lower bounds */
250  const SCIP_Real* ub /**< values for the new upper bounds */
251  );
252 
253 /** changes left and right hand sides of rows */
254 extern
256  SCIP_LPI* lpi, /**< LP interface structure */
257  int nrows, /**< number of rows to change sides for */
258  const int* ind, /**< row indices */
259  const SCIP_Real* lhs, /**< new values for left hand sides */
260  const SCIP_Real* rhs /**< new values for right hand sides */
261  );
262 
263 /** changes a single coefficient */
264 extern
266  SCIP_LPI* lpi, /**< LP interface structure */
267  int row, /**< row number of coefficient to change */
268  int col, /**< column number of coefficient to change */
269  SCIP_Real newval /**< new value of coefficient */
270  );
271 
272 /** changes the objective sense */
273 extern
275  SCIP_LPI* lpi, /**< LP interface structure */
276  SCIP_OBJSEN objsen /**< new objective sense */
277  );
278 
279 /** changes objective values of columns in the LP */
280 extern
282  SCIP_LPI* lpi, /**< LP interface structure */
283  int ncols, /**< number of columns to change objective value for */
284  const int* ind, /**< column indices to change objective value for */
285  const SCIP_Real* obj /**< new objective values for columns */
286  );
287 
288 /** multiplies a row with a non-zero scalar; for negative scalars, the row's sense is switched accordingly */
289 extern
291  SCIP_LPI* lpi, /**< LP interface structure */
292  int row, /**< row number to scale */
293  SCIP_Real scaleval /**< scaling multiplier */
294  );
295 
296 /** multiplies a column with a non-zero scalar; the objective value is multiplied with the scalar, and the bounds
297  * are divided by the scalar; for negative scalars, the column's bounds are switched
298  */
299 extern
301  SCIP_LPI* lpi, /**< LP interface structure */
302  int col, /**< column number to scale */
303  SCIP_Real scaleval /**< scaling multiplier */
304  );
305 
306 /**@} */
307 
308 
309 
310 
311 /*
312  * Data Accessing Methods
313  */
314 
315 /**@name Data Accessing Methods */
316 /**@{ */
317 
318 /** gets the number of rows in the LP */
319 extern
321  SCIP_LPI* lpi, /**< LP interface structure */
322  int* nrows /**< pointer to store the number of rows */
323  );
324 
325 /** gets the number of columns in the LP */
326 extern
328  SCIP_LPI* lpi, /**< LP interface structure */
329  int* ncols /**< pointer to store the number of cols */
330  );
331 
332 /** gets the objective sense of the LP */
334  SCIP_LPI* lpi, /**< LP interface structure */
335  SCIP_OBJSEN* objsen /**< pointer to store objective sense */
336  );
337 
338 /** gets the number of nonzero elements in the LP constraint matrix */
339 extern
341  SCIP_LPI* lpi, /**< LP interface structure */
342  int* nnonz /**< pointer to store the number of nonzeros */
343  );
344 
345 /** gets columns from LP problem object; the arrays have to be large enough to store all values;
346  * Either both, lb and ub, have to be NULL, or both have to be non-NULL,
347  * either nnonz, beg, ind, and val have to be NULL, or all of them have to be non-NULL.
348  */
349 extern
351  SCIP_LPI* lpi, /**< LP interface structure */
352  int firstcol, /**< first column to get from LP */
353  int lastcol, /**< last column to get from LP */
354  SCIP_Real* lb, /**< buffer to store the lower bound vector, or NULL */
355  SCIP_Real* ub, /**< buffer to store the upper bound vector, or NULL */
356  int* nnonz, /**< pointer to store the number of nonzero elements returned, or NULL */
357  int* beg, /**< buffer to store start index of each column in ind- and val-array, or NULL */
358  int* ind, /**< buffer to store column indices of constraint matrix entries, or NULL */
359  SCIP_Real* val /**< buffer to store values of constraint matrix entries, or NULL */
360  );
361 
362 /** gets rows from LP problem object; the arrays have to be large enough to store all values.
363  * Either both, lhs and rhs, have to be NULL, or both have to be non-NULL,
364  * either nnonz, beg, ind, and val have to be NULL, or all of them have to be non-NULL.
365  */
366 extern
368  SCIP_LPI* lpi, /**< LP interface structure */
369  int firstrow, /**< first row to get from LP */
370  int lastrow, /**< last row to get from LP */
371  SCIP_Real* lhs, /**< buffer to store left hand side vector, or NULL */
372  SCIP_Real* rhs, /**< buffer to store right hand side vector, or NULL */
373  int* nnonz, /**< pointer to store the number of nonzero elements returned, or NULL */
374  int* beg, /**< buffer to store start index of each row in ind- and val-array, or NULL */
375  int* ind, /**< buffer to store row indices of constraint matrix entries, or NULL */
376  SCIP_Real* val /**< buffer to store values of constraint matrix entries, or NULL */
377  );
378 
379 /** gets column names */
380 extern
382  SCIP_LPI* lpi, /**< LP interface structure */
383  int firstcol, /**< first column to get name from LP */
384  int lastcol, /**< last column to get name from LP */
385  char** colnames, /**< pointers to column names (of size at least lastcol-firstcol+1) */
386  char* namestorage, /**< storage for col names */
387  int namestoragesize, /**< size of namestorage (if 0, -storageleft returns the storage needed) */
388  int* storageleft /**< amount of storage left (if < 0 the namestorage was not big enough) */
389  );
390 
391 /** gets row names */
392 extern
394  SCIP_LPI* lpi, /**< LP interface structure */
395  int firstrow, /**< first row to get name from LP */
396  int lastrow, /**< last row to get name from LP */
397  char** rownames, /**< pointers to row names (of size at least lastrow-firstrow+1) */
398  char* namestorage, /**< storage for row names */
399  int namestoragesize, /**< size of namestorage (if 0, -storageleft returns the storage needed) */
400  int* storageleft /**< amount of storage left (if < 0 the namestorage was not big enough) */
401  );
402 
403 /** gets objective coefficients from LP problem object */
404 extern
406  SCIP_LPI* lpi, /**< LP interface structure */
407  int firstcol, /**< first column to get objective coefficient for */
408  int lastcol, /**< last column to get objective coefficient for */
409  SCIP_Real* vals /**< array to store objective coefficients */
410  );
411 
412 /** gets current bounds from LP problem object */
413 extern
415  SCIP_LPI* lpi, /**< LP interface structure */
416  int firstcol, /**< first column to get bounds for */
417  int lastcol, /**< last column to get bounds for */
418  SCIP_Real* lbs, /**< array to store lower bound values, or NULL */
419  SCIP_Real* ubs /**< array to store upper bound values, or NULL */
420  );
421 
422 /** gets current row sides from LP problem object */
423 extern
425  SCIP_LPI* lpi, /**< LP interface structure */
426  int firstrow, /**< first row to get sides for */
427  int lastrow, /**< last row to get sides for */
428  SCIP_Real* lhss, /**< array to store left hand side values, or NULL */
429  SCIP_Real* rhss /**< array to store right hand side values, or NULL */
430  );
431 
432 /** gets a single coefficient */
433 extern
435  SCIP_LPI* lpi, /**< LP interface structure */
436  int row, /**< row number of coefficient */
437  int col, /**< column number of coefficient */
438  SCIP_Real* val /**< pointer to store the value of the coefficient */
439  );
440 
441 /**@} */
442 
443 
444 
445 
446 /*
447  * Solving Methods
448  */
449 
450 /**@name Solving Methods */
451 /**@{ */
452 
453 /** calls primal simplex to solve the LP */
454 extern
456  SCIP_LPI* lpi /**< LP interface structure */
457  );
458 
459 /** calls dual simplex to solve the LP */
460 extern
462  SCIP_LPI* lpi /**< LP interface structure */
463  );
464 
465 /** calls barrier or interior point algorithm to solve the LP with crossover to simplex basis */
466 extern
468  SCIP_LPI* lpi, /**< LP interface structure */
469  SCIP_Bool crossover /**< perform crossover */
470  );
471 
472 /** start strong branching - call before any strong branching */
473 extern
475  SCIP_LPI* lpi /**< LP interface structure */
476  );
477 
478 /** end strong branching - call after any strong branching */
479 extern
481  SCIP_LPI* lpi /**< LP interface structure */
482  );
483 
484 /** performs strong branching iterations on one @b fractional candidate */
485 extern
487  SCIP_LPI* lpi, /**< LP interface structure */
488  int col, /**< column to apply strong branching on */
489  SCIP_Real psol, /**< fractional current primal solution value of column */
490  int itlim, /**< iteration limit for strong branchings */
491  SCIP_Real* down, /**< stores dual bound after branching column down */
492  SCIP_Real* up, /**< stores dual bound after branching column up */
493  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound;
494  * otherwise, it can only be used as an estimate value */
495  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound;
496  * otherwise, it can only be used as an estimate value */
497  int* iter /**< stores total number of strong branching iterations, or -1; may be NULL */
498  );
499 
500 /** performs strong branching iterations on given @b fractional candidates */
501 extern
503  SCIP_LPI* lpi, /**< LP interface structure */
504  int* cols, /**< columns to apply strong branching on */
505  int ncols, /**< number of columns */
506  SCIP_Real* psols, /**< fractional current primal solution values of columns */
507  int itlim, /**< iteration limit for strong branchings */
508  SCIP_Real* down, /**< stores dual bounds after branching columns down */
509  SCIP_Real* up, /**< stores dual bounds after branching columns up */
510  SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds;
511  * otherwise, they can only be used as an estimate values */
512  SCIP_Bool* upvalid, /**< stores whether the returned up values are a valid dual bounds;
513  * otherwise, they can only be used as an estimate values */
514  int* iter /**< stores total number of strong branching iterations, or -1; may be NULL */
515  );
516 
517 /** performs strong branching iterations on one candidate with @b integral value */
518 extern
520  SCIP_LPI* lpi, /**< LP interface structure */
521  int col, /**< column to apply strong branching on */
522  SCIP_Real psol, /**< current integral primal solution value of column */
523  int itlim, /**< iteration limit for strong branchings */
524  SCIP_Real* down, /**< stores dual bound after branching column down */
525  SCIP_Real* up, /**< stores dual bound after branching column up */
526  SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound;
527  * otherwise, it can only be used as an estimate value */
528  SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound;
529  * otherwise, it can only be used as an estimate value */
530  int* iter /**< stores total number of strong branching iterations, or -1; may be NULL */
531  );
532 
533 /** performs strong branching iterations on given candidates with @b integral values */
534 extern
536  SCIP_LPI* lpi, /**< LP interface structure */
537  int* cols, /**< columns to apply strong branching on */
538  int ncols, /**< number of columns */
539  SCIP_Real* psols, /**< current integral primal solution values of columns */
540  int itlim, /**< iteration limit for strong branchings */
541  SCIP_Real* down, /**< stores dual bounds after branching columns down */
542  SCIP_Real* up, /**< stores dual bounds after branching columns up */
543  SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds;
544  * otherwise, they can only be used as an estimate values */
545  SCIP_Bool* upvalid, /**< stores whether the returned up values are a valid dual bounds;
546  * otherwise, they can only be used as an estimate values */
547  int* iter /**< stores total number of strong branching iterations, or -1; may be NULL */
548  );
549 /**@} */
550 
551 
552 
553 
554 /*
555  * Solution Information Methods
556  */
557 
558 /**@name Solution Information Methods */
559 /**@{ */
560 
561 /** returns whether a solve method was called after the last modification of the LP */
562 extern
564  SCIP_LPI* lpi /**< LP interface structure */
565  );
566 
567 /** gets information about primal and dual feasibility of the current LP solution */
568 extern
570  SCIP_LPI* lpi, /**< LP interface structure */
571  SCIP_Bool* primalfeasible, /**< stores primal feasibility status */
572  SCIP_Bool* dualfeasible /**< stores dual feasibility status */
573  );
574 
575 /** returns TRUE iff LP is proven to have a primal unbounded ray (but not necessary a primal feasible point);
576  * this does not necessarily mean, that the solver knows and can return the primal ray
577  */
578 extern
580  SCIP_LPI* lpi /**< LP interface structure */
581  );
582 
583 /** returns TRUE iff LP is proven to have a primal unbounded ray (but not necessary a primal feasible point),
584  * and the solver knows and can return the primal ray
585  */
586 extern
588  SCIP_LPI* lpi /**< LP interface structure */
589  );
590 
591 /** returns TRUE iff LP is proven to be primal unbounded */
592 extern
594  SCIP_LPI* lpi /**< LP interface structure */
595  );
596 
597 /** returns TRUE iff LP is proven to be primal infeasible */
598 extern
600  SCIP_LPI* lpi /**< LP interface structure */
601  );
602 
603 /** returns TRUE iff LP is proven to be primal feasible */
604 extern
606  SCIP_LPI* lpi /**< LP interface structure */
607  );
608 
609 /** returns TRUE iff LP is proven to have a dual unbounded ray (but not necessary a dual feasible point);
610  * this does not necessarily mean, that the solver knows and can return the dual ray
611  */
612 extern
614  SCIP_LPI* lpi /**< LP interface structure */
615  );
616 
617 /** returns TRUE iff LP is proven to have a dual unbounded ray (but not necessary a dual feasible point),
618  * and the solver knows and can return the dual ray
619  */
620 extern
622  SCIP_LPI* lpi /**< LP interface structure */
623  );
624 
625 /** returns TRUE iff LP is proven to be dual unbounded */
626 extern
628  SCIP_LPI* lpi /**< LP interface structure */
629  );
630 
631 /** returns TRUE iff LP is proven to be dual infeasible */
632 extern
634  SCIP_LPI* lpi /**< LP interface structure */
635  );
636 
637 /** returns TRUE iff LP is proven to be dual feasible */
638 extern
640  SCIP_LPI* lpi /**< LP interface structure */
641  );
642 
643 /** returns TRUE iff LP was solved to optimality */
644 extern
646  SCIP_LPI* lpi /**< LP interface structure */
647  );
648 
649 /** returns TRUE iff current LP basis is stable */
650 extern
652  SCIP_LPI* lpi /**< LP interface structure */
653  );
654 
655 /** returns TRUE iff the objective limit was reached */
656 extern
658  SCIP_LPI* lpi /**< LP interface structure */
659  );
660 
661 /** returns TRUE iff the iteration limit was reached */
662 extern
664  SCIP_LPI* lpi /**< LP interface structure */
665  );
666 
667 /** returns TRUE iff the time limit was reached */
668 extern
670  SCIP_LPI* lpi /**< LP interface structure */
671  );
672 
673 /** returns the internal solution status of the solver */
674 extern
676  SCIP_LPI* lpi /**< LP interface structure */
677  );
678 
679 /** tries to reset the internal status of the LP solver in order to ignore an instability of the last solving call */
680 extern
682  SCIP_LPI* lpi, /**< LP interface structure */
683  SCIP_Bool* success /**< pointer to store, whether the instability could be ignored */
684  );
685 
686 /** gets objective value of solution */
687 extern
689  SCIP_LPI* lpi, /**< LP interface structure */
690  SCIP_Real* objval /**< stores the objective value */
691  );
692 
693 /** gets primal and dual solution vectors for feasible LPs */
694 extern
696  SCIP_LPI* lpi, /**< LP interface structure */
697  SCIP_Real* objval, /**< stores the objective value, may be NULL if not needed */
698  SCIP_Real* primsol, /**< primal solution vector, may be NULL if not needed */
699  SCIP_Real* dualsol, /**< dual solution vector, may be NULL if not needed */
700  SCIP_Real* activity, /**< row activity vector, may be NULL if not needed */
701  SCIP_Real* redcost /**< reduced cost vector, may be NULL if not needed */
702  );
703 
704 /** gets primal ray for unbounded LPs */
705 extern
707  SCIP_LPI* lpi, /**< LP interface structure */
708  SCIP_Real* ray /**< primal ray */
709  );
710 
711 /** gets dual Farkas proof for infeasibility */
712 extern
714  SCIP_LPI* lpi, /**< LP interface structure */
715  SCIP_Real* dualfarkas /**< dual Farkas row multipliers */
716  );
717 
718 /** gets the number of LP iterations of the last solve call */
719 extern
721  SCIP_LPI* lpi, /**< LP interface structure */
722  int* iterations /**< pointer to store the number of iterations of the last solve call */
723  );
724 
725 /** gets information about the quality of an LP solution
726  *
727  * Such information is usually only available, if also a (maybe not optimal) solution is available.
728  * The LPI should return SCIP_INVALID for @p quality, if the requested quantity is not available.
729  */
730 extern
732  SCIP_LPI* lpi, /**< LP interface structure */
733  SCIP_LPSOLQUALITY qualityindicator, /**< indicates which quality should be returned */
734  SCIP_Real* quality /**< pointer to store quality number */
735  );
736 
737 /**@} */
738 
739 
740 
741 
742 /*
743  * LP Basis Methods
744  */
745 
746 /**@name LP Basis Methods */
747 /**@{ */
748 
749 /** gets current basis status for columns and rows; arrays must be large enough to store the basis status */
750 extern
752  SCIP_LPI* lpi, /**< LP interface structure */
753  int* cstat, /**< array to store column basis status, or NULL */
754  int* rstat /**< array to store row basis status, or NULL */
755  );
756 
757 /** sets current basis status for columns and rows */
758 extern
760  SCIP_LPI* lpi, /**< LP interface structure */
761  const int* cstat, /**< array with column basis status */
762  const int* rstat /**< array with row basis status */
763  );
764 
765 /** returns the indices of the basic columns and rows; basic column n gives value n, basic row m gives value -1-m */
766 extern
768  SCIP_LPI* lpi, /**< LP interface structure */
769  int* bind /**< pointer to store basis indices ready to keep number of rows entries */
770  );
771 
772 /** get dense row of inverse basis matrix B^-1
773  *
774  * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
775  * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
776  * see also the explanation in lpi.h.
777  */
778 extern
780  SCIP_LPI* lpi, /**< LP interface structure */
781  int r, /**< row number */
782  SCIP_Real* coef, /**< pointer to store the coefficients of the row */
783  int* inds, /**< array to store the non-zero indices, or NULL */
784  int* ninds /**< pointer to store the number of non-zero indices, or NULL
785  * (-1: if we do not store sparsity informations) */
786  );
787 
788 
789 /** get dense column of inverse basis matrix B^-1
790  *
791  * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
792  * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
793  * see also the explanation in lpi.h.
794  */
795 extern
797  SCIP_LPI* lpi, /**< LP interface structure */
798  int c, /**< column number of B^-1; this is NOT the number of the column in the LP;
799  * you have to call SCIPlpiGetBasisInd() to get the array which links the
800  * B^-1 column numbers to the row and column numbers of the LP!
801  * c must be between 0 and nrows-1, since the basis has the size
802  * nrows * nrows */
803  SCIP_Real* coef, /**< pointer to store the coefficients of the column */
804  int* inds, /**< array to store the non-zero indices, or NULL */
805  int* ninds /**< pointer to store the number of non-zero indices, or NULL
806  * (-1: if we do not store sparsity informations) */
807  );
808 
809 /** get dense row of inverse basis matrix times constraint matrix B^-1 * A
810  *
811  * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
812  * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
813  * see also the explanation in lpi.h.
814  */
815 extern
817  SCIP_LPI* lpi, /**< LP interface structure */
818  int r, /**< row number */
819  const SCIP_Real* binvrow, /**< row in (A_B)^-1 from prior call to SCIPlpiGetBInvRow(), or NULL */
820  SCIP_Real* coef, /**< vector to return coefficients */
821  int* inds, /**< array to store the non-zero indices, or NULL */
822  int* ninds /**< pointer to store the number of non-zero indices, or NULL
823  * (-1: if we do not store sparsity informations) */
824  );
825 
826 /** get dense column of inverse basis matrix times constraint matrix B^-1 * A
827  *
828  * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
829  * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
830  * see also the explanation in lpi.h.
831  */
832 extern
834  SCIP_LPI* lpi, /**< LP interface structure */
835  int c, /**< column number */
836  SCIP_Real* coef, /**< vector to return coefficients */
837  int* inds, /**< array to store the non-zero indices, or NULL */
838  int* ninds /**< pointer to store the number of non-zero indices, or NULL
839  * (-1: if we do not store sparsity informations) */
840  );
841 
842 /**@} */
843 
844 
845 
846 
847 /*
848  * LPi State Methods
849  */
850 
851 /**@name LPi State Methods */
852 /**@{ */
853 
854 /** stores LPi state (like basis information) into lpistate object */
855 extern
857  SCIP_LPI* lpi, /**< LP interface structure */
858  BMS_BLKMEM* blkmem, /**< block memory */
859  SCIP_LPISTATE** lpistate /**< pointer to LPi state information (like basis information) */
860  );
861 
862 /** loads LPi state (like basis information) into solver; note that the LP might have been extended with additional
863  * columns and rows since the state was stored with SCIPlpiGetState()
864  */
865 extern
867  SCIP_LPI* lpi, /**< LP interface structure */
868  BMS_BLKMEM* blkmem, /**< block memory */
869  const SCIP_LPISTATE* lpistate /**< LPi state information (like basis information) */
870  );
871 
872 /** clears current LPi state (like basis information) of the solver */
873 extern
875  SCIP_LPI* lpi /**< LP interface structure */
876  );
877 
878 /** frees LPi state information */
879 extern
881  SCIP_LPI* lpi, /**< LP interface structure */
882  BMS_BLKMEM* blkmem, /**< block memory */
883  SCIP_LPISTATE** lpistate /**< pointer to LPi state information (like basis information) */
884  );
885 
886 /** checks, whether the given LPi state contains simplex basis information */
887 extern
889  SCIP_LPI* lpi, /**< LP interface structure */
890  SCIP_LPISTATE* lpistate /**< LPi state information (like basis information) */
891  );
892 
893 /** reads LPi state (like basis information from a file */
894 extern
896  SCIP_LPI* lpi, /**< LP interface structure */
897  const char* fname /**< file name */
898  );
899 
900 /** writes LPi state (like basis information) to a file */
901 extern
903  SCIP_LPI* lpi, /**< LP interface structure */
904  const char* fname /**< file name */
905  );
906 
907 /**@} */
908 
909 
910 /*
911  * LPi Pricing Norms Methods
912  */
913 
914 /**@name LPi Pricing Norms Methods */
915 /**@{ */
916 
917 /** stores LPi pricing norms into lpinorms object */
918 extern
920  SCIP_LPI* lpi, /**< LP interface structure */
921  BMS_BLKMEM* blkmem, /**< block memory */
922  SCIP_LPINORMS** lpinorms /**< pointer to LPi pricing norms information */
923  );
924 
925 /** loads LPi pricing norms into solver; note that the LP might have been extended with additional
926  * columns and rows since the norms were stored with SCIPlpiGetNorms()
927  */
928 extern
930  SCIP_LPI* lpi, /**< LP interface structure */
931  BMS_BLKMEM* blkmem, /**< block memory */
932  const SCIP_LPINORMS* lpinorms /**< LPi pricing norms information */
933  );
934 
935 /** frees LPi pricing norms information */
936 extern
938  SCIP_LPI* lpi, /**< LP interface structure */
939  BMS_BLKMEM* blkmem, /**< block memory */
940  SCIP_LPINORMS** lpinorms /**< pointer to LPi pricing norms information */
941  );
942 
943 
944 /**@} */
945 
946 
947 
948 
949 /*
950  * Parameter Methods
951  */
952 
953 /**@name Parameter Methods */
954 /**@{ */
955 
956 /** gets integer parameter of LP */
957 extern
959  SCIP_LPI* lpi, /**< LP interface structure */
960  SCIP_LPPARAM type, /**< parameter number */
961  int* ival /**< buffer to store the parameter value */
962  );
963 
964 /** sets integer parameter of LP */
965 extern
967  SCIP_LPI* lpi, /**< LP interface structure */
968  SCIP_LPPARAM type, /**< parameter number */
969  int ival /**< parameter value */
970  );
971 
972 /** gets floating point parameter of LP */
973 extern
975  SCIP_LPI* lpi, /**< LP interface structure */
976  SCIP_LPPARAM type, /**< parameter number */
977  SCIP_Real* dval /**< buffer to store the parameter value */
978  );
979 
980 /** sets floating point parameter of LP */
981 extern
983  SCIP_LPI* lpi, /**< LP interface structure */
984  SCIP_LPPARAM type, /**< parameter number */
985  SCIP_Real dval /**< parameter value */
986  );
987 
988 /**@} */
989 
990 
991 
992 
993 /*
994  * Numerical Methods
995  */
996 
997 /**@name Numerical Methods */
998 /**@{ */
999 
1000 /** returns value treated as infinity in the LP solver */
1001 extern
1003  SCIP_LPI* lpi /**< LP interface structure */
1004  );
1005 
1006 /** checks if given value is treated as infinity in the LP solver */
1007 extern
1009  SCIP_LPI* lpi, /**< LP interface structure */
1010  SCIP_Real val /**< value to be checked for infinity */
1011  );
1012 
1013 /**@} */
1014 
1015 
1016 
1017 
1018 /*
1019  * File Interface Methods
1020  */
1021 
1022 /**@name File Interface Methods */
1023 /**@{ */
1024 
1025 /** reads LP from a file */
1026 extern
1028  SCIP_LPI* lpi, /**< LP interface structure */
1029  const char* fname /**< file name */
1030  );
1031 
1032 /** writes LP to a file */
1033 extern
1035  SCIP_LPI* lpi, /**< LP interface structure */
1036  const char* fname /**< file name */
1037  );
1038 
1039 /**@} */
1040 
1041 #ifdef __cplusplus
1042 }
1043 #endif
1044 
1045 #endif
enum SCIP_LPSolQuality SCIP_LPSOLQUALITY
Definition: type_lpi.h:94
SCIP_RETCODE SCIPlpiReadState(SCIP_LPI *lpi, const char *fname)
Definition: lpi_clp.cpp:3358
SCIP_Bool SCIPlpiIsDualFeasible(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2507
SCIP_RETCODE SCIPlpiSolveDual(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:1726
SCIP_RETCODE SCIPlpiFreeNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
Definition: lpi_clp.cpp:3441
SCIP_RETCODE SCIPlpiSetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, const SCIP_LPISTATE *lpistate)
Definition: lpi_clp.cpp:3261
SCIP_RETCODE SCIPlpiGetDualfarkas(SCIP_LPI *lpi, SCIP_Real *dualfarkas)
Definition: lpi_clp.cpp:2740
SCIP_RETCODE SCIPlpiGetBInvARow(SCIP_LPI *lpi, int r, const SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds)
Definition: lpi_clp.cpp:3146
SCIP_RETCODE SCIPlpiGetRealSolQuality(SCIP_LPI *lpi, SCIP_LPSOLQUALITY qualityindicator, SCIP_Real *quality)
Definition: lpi_clp.cpp:2790
void * SCIPlpiGetSolverPointer(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:449
SCIP_RETCODE SCIPlpiClear(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:933
SCIP_Bool SCIPlpiHasStateBasis(SCIP_LPI *lpi, SCIP_LPISTATE *lpistate)
Definition: lpi_clp.cpp:3349
enum SCIP_ObjSen SCIP_OBJSEN
Definition: type_lpi.h:36
SCIP_RETCODE SCIPlpiGetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real *dval)
Definition: lpi_clp.cpp:3612
SCIP_RETCODE SCIPlpiGetBInvCol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds)
Definition: lpi_clp.cpp:3108
SCIP_Bool SCIPlpiIsPrimalUnbounded(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2381
SCIP_RETCODE SCIPlpiStrongbranchesInt(SCIP_LPI *lpi, int *cols, int ncols, SCIP_Real *psols, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)
Definition: lpi_clp.cpp:2257
SCIP_RETCODE SCIPlpiLoadColLP(SCIP_LPI *lpi, SCIP_OBJSEN objsen, int ncols, const SCIP_Real *obj, const SCIP_Real *lb, const SCIP_Real *ub, char **colnames, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, char **rownames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)
Definition: lpi_clp.cpp:583
int SCIPlpiGetInternalStatus(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2639
SCIP_RETCODE SCIPlpiIgnoreInstability(SCIP_LPI *lpi, SCIP_Bool *success)
Definition: lpi_clp.cpp:1496
SCIP_RETCODE SCIPlpiGetBInvACol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds)
Definition: lpi_clp.cpp:3181
SCIP_RETCODE SCIPlpiAddCols(SCIP_LPI *lpi, int ncols, const SCIP_Real *obj, const SCIP_Real *lb, const SCIP_Real *ub, char **colnames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)
Definition: lpi_clp.cpp:649
SCIP_Bool SCIPlpiWasSolved(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2292
SCIP_RETCODE SCIPlpiGetObj(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *vals)
Definition: lpi_clp.cpp:1534
SCIP_RETCODE SCIPlpiEndStrongbranch(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:1851
SCIP_RETCODE SCIPlpiScaleRow(SCIP_LPI *lpi, int row, SCIP_Real scaleval)
Definition: lpi_clp.cpp:1126
SCIP_RETCODE SCIPlpiChgCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real newval)
Definition: lpi_clp.cpp:1056
SCIP_RETCODE SCIPlpiGetRowNames(SCIP_LPI *lpi, int firstrow, int lastrow, char **rownames, char *namestorage, int namestoragesize, int *storageleft)
Definition: lpi_clp.cpp:1480
SCIP_Bool SCIPlpiIsStable(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2539
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:53
SCIP_RETCODE SCIPlpiFree(SCIP_LPI **lpi)
Definition: lpi_clp.cpp:549
SCIP_RETCODE SCIPlpiChgObj(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *obj)
Definition: lpi_clp.cpp:1099
SCIP_RETCODE SCIPlpiGetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int *ival)
Definition: lpi_clp.cpp:3466
enum SCIP_LPParam SCIP_LPPARAM
Definition: type_lpi.h:63
SCIP_RETCODE SCIPlpiGetSides(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhss, SCIP_Real *rhss)
Definition: lpi_clp.cpp:1588
type definitions for return codes for SCIP methods
SCIP_Bool SCIPlpiIsObjlimExc(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2577
SCIP_RETCODE SCIPlpiGetNCols(SCIP_LPI *lpi, int *ncols)
Definition: lpi_clp.cpp:1294
SCIP_Bool SCIPlpiIsTimelimExc(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2623
SCIP_Bool SCIPlpiIsDualUnbounded(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2476
SCIP_RETCODE SCIPlpiGetNRows(SCIP_LPI *lpi, int *nrows)
Definition: lpi_clp.cpp:1276
SCIP_Bool SCIPlpiIsPrimalFeasible(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2414
SCIP_RETCODE SCIPlpiGetNNonz(SCIP_LPI *lpi, int *nnonz)
Definition: lpi_clp.cpp:1312
SCIP_RETCODE SCIPlpiGetBounds(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lbs, SCIP_Real *ubs)
Definition: lpi_clp.cpp:1557
SCIP_RETCODE SCIPlpiFreeState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
Definition: lpi_clp.cpp:3331
SCIP_RETCODE SCIPlpiStrongbranchFrac(SCIP_LPI *lpi, int col, SCIP_Real psol, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)
Definition: lpi_clp.cpp:2190
SCIP_Bool SCIPlpiHasDualRay(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2448
SCIP_RETCODE SCIPlpiGetObjsen(SCIP_LPI *lpi, SCIP_OBJSEN *objsen)
Definition: lpi_clp.cpp:1514
SCIP_Real SCIPlpiInfinity(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:3715
type definitions for specific LP solvers interface
SCIP_RETCODE SCIPlpiDelRows(SCIP_LPI *lpi, int firstrow, int lastrow)
Definition: lpi_clp.cpp:855
SCIP_RETCODE SCIPlpiChgSides(SCIP_LPI *lpi, int nrows, const int *ind, const SCIP_Real *lhs, const SCIP_Real *rhs)
Definition: lpi_clp.cpp:1028
SCIP_RETCODE SCIPlpiStartStrongbranch(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:1842
SCIP_RETCODE SCIPlpiGetObjval(SCIP_LPI *lpi, SCIP_Real *objval)
Definition: lpi_clp.cpp:2653
const char * SCIPlpiGetSolverName(void)
Definition: lpi_clp.cpp:432
SCIP_Bool SCIPlpiIsOptimal(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2521
SCIP_Bool SCIPlpiIsPrimalInfeasible(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2395
SCIP_RETCODE SCIPlpiDelRowset(SCIP_LPI *lpi, int *dstat)
Definition: lpi_clp.cpp:887
SCIP_RETCODE SCIPlpiGetSol(SCIP_LPI *lpi, SCIP_Real *objval, SCIP_Real *primsol, SCIP_Real *dualsol, SCIP_Real *activity, SCIP_Real *redcost)
Definition: lpi_clp.cpp:2671
SCIP_Bool SCIPlpiExistsDualRay(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2430
SCIP_Bool SCIPlpiIsInfinity(SCIP_LPI *lpi, SCIP_Real val)
Definition: lpi_clp.cpp:3726
SCIP_RETCODE SCIPlpiScaleCol(SCIP_LPI *lpi, int col, SCIP_Real scaleval)
Definition: lpi_clp.cpp:1199
#define SCIP_Bool
Definition: def.h:61
SCIP_RETCODE SCIPlpiSetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int ival)
Definition: lpi_clp.cpp:3510
SCIP_RETCODE SCIPlpiGetPrimalRay(SCIP_LPI *lpi, SCIP_Real *ray)
Definition: lpi_clp.cpp:2715
SCIP_RETCODE SCIPlpiReadLP(SCIP_LPI *lpi, const char *fname)
Definition: lpi_clp.cpp:3766
SCIP_RETCODE SCIPlpiSetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real dval)
Definition: lpi_clp.cpp:3658
SCIP_RETCODE SCIPlpiSetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, const SCIP_LPINORMS *lpinorms)
Definition: lpi_clp.cpp:3428
SCIP_RETCODE SCIPlpiStrongbranchesFrac(SCIP_LPI *lpi, int *cols, int ncols, SCIP_Real *psols, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)
Definition: lpi_clp.cpp:2211
SCIP_RETCODE SCIPlpiGetBase(SCIP_LPI *lpi, int *cstat, int *rstat)
Definition: lpi_clp.cpp:2817
SCIP_RETCODE SCIPlpiSolvePrimal(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:1653
SCIP_RETCODE SCIPlpiDelColset(SCIP_LPI *lpi, int *dstat)
Definition: lpi_clp.cpp:747
SCIP_Bool SCIPlpiIsDualInfeasible(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2493
SCIP_RETCODE SCIPlpiAddRows(SCIP_LPI *lpi, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, char **rownames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)
Definition: lpi_clp.cpp:793
SCIP_RETCODE SCIPlpiWriteLP(SCIP_LPI *lpi, const char *fname)
Definition: lpi_clp.cpp:3794
SCIP_Bool SCIPlpiExistsPrimalRay(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2347
SCIP_RETCODE SCIPlpiGetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
Definition: lpi_clp.cpp:3412
SCIP_RETCODE SCIPlpiGetRows(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhs, SCIP_Real *rhs, int *nnonz, int *beg, int *ind, SCIP_Real *val)
Definition: lpi_clp.cpp:1400
SCIP_RETCODE SCIPlpiSetIntegralityInformation(SCIP_LPI *lpi, int ncols, int *intInfo)
Definition: lpi_clp.cpp:457
SCIP_RETCODE SCIPlpiChgBounds(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *lb, const SCIP_Real *ub)
Definition: lpi_clp.cpp:952
SCIP_Bool SCIPlpiIsIterlimExc(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2607
SCIP_RETCODE SCIPlpiGetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
Definition: lpi_clp.cpp:3221
SCIP_RETCODE SCIPlpiSetBase(SCIP_LPI *lpi, const int *cstat, const int *rstat)
Definition: lpi_clp.cpp:2905
SCIP_RETCODE SCIPlpiCreate(SCIP_LPI **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen)
Definition: lpi_clp.cpp:480
SCIP_RETCODE SCIPlpiChgObjsen(SCIP_LPI *lpi, SCIP_OBJSEN objsen)
Definition: lpi_clp.cpp:1079
#define SCIP_Real
Definition: def.h:135
SCIP_RETCODE SCIPlpiGetSolFeasibility(SCIP_LPI *lpi, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
Definition: lpi_clp.cpp:2302
SCIP_RETCODE SCIPlpiGetCols(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lb, SCIP_Real *ub, int *nnonz, int *beg, int *ind, SCIP_Real *val)
Definition: lpi_clp.cpp:1333
SCIP_RETCODE SCIPlpiStrongbranchInt(SCIP_LPI *lpi, int col, SCIP_Real psol, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)
Definition: lpi_clp.cpp:2236
SCIP_RETCODE SCIPlpiGetIterations(SCIP_LPI *lpi, int *iterations)
Definition: lpi_clp.cpp:2772
SCIP_RETCODE SCIPlpiGetBInvRow(SCIP_LPI *lpi, int r, SCIP_Real *coef, int *inds, int *ninds)
Definition: lpi_clp.cpp:3073
SCIP_RETCODE SCIPlpiDelCols(SCIP_LPI *lpi, int firstcol, int lastcol)
Definition: lpi_clp.cpp:716
SCIP_Bool SCIPlpiHasPrimalRay(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:2365
SCIP_RETCODE SCIPlpiClearState(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:3315
SCIP_RETCODE SCIPlpiWriteState(SCIP_LPI *lpi, const char *fname)
Definition: lpi_clp.cpp:3375
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPlpiGetCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real *val)
Definition: lpi_clp.cpp:1619
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:392
const char * SCIPlpiGetSolverDesc(void)
Definition: lpi_clp.cpp:441
SCIP_RETCODE SCIPlpiGetBasisInd(SCIP_LPI *lpi, int *bind)
Definition: lpi_clp.cpp:3021
SCIP_RETCODE SCIPlpiGetColNames(SCIP_LPI *lpi, int firstcol, int lastcol, char **colnames, char *namestorage, int namestoragesize, int *storageleft)
Definition: lpi_clp.cpp:1464
SCIP_RETCODE SCIPlpiSolveBarrier(SCIP_LPI *lpi, SCIP_Bool crossover)
Definition: lpi_clp.cpp:1801
memory allocation routines