SCIP-SDP  2.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sdpi.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of SCIPSDP - a solving framework for mixed-integer */
4 /* semidefinite programms based on SCIP. */
5 /* */
6 /* Copyright (C) 2011-2013 Discrete Optimization, TU Darmstadt */
7 /* EDOM, FAU Erlangen-Nürnberg */
8 /* 2014-2015 Discrete Optimization, TU Darmstadt */
9 /* */
10 /* */
11 /* This program is free software; you can redistribute it and/or */
12 /* modify it under the terms of the GNU Lesser General Public License */
13 /* as published by the Free Software Foundation; either version 3 */
14 /* of the License, or (at your option) any later version. */
15 /* */
16 /* This program is distributed in the hope that it will be useful, */
17 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
18 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
19 /* GNU Lesser General Public License for more details. */
20 /* */
21 /* You should have received a copy of the GNU Lesser General Public License */
22 /* along with this program; if not, write to the Free Software */
23 /* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.*/
24 /* */
25 /* */
26 /* Based on SCIP - Solving Constraint Integer Programs */
27 /* Copyright (C) 2002-2015 Zuse Institute Berlin */
28 /* SCIP is distributed under the terms of the SCIP Academic Licence, */
29 /* see file COPYING in the SCIP distribution. */
30 /* */
31 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
32 
54 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
55 
56 #ifndef __SCIP_SDPI_H__
57 #define __SCIP_SDPI_H__
58 
59 
60 #include "scip/def.h"
61 #include "blockmemshell/memory.h"
62 #include "scip/type_retcode.h"
63 #include "sdpi/type_sdpi.h"
64 
65 #ifdef __cplusplus
66 extern "C" {
67 #endif
68 
69 /*
70  * Miscellaneous Methods
71  */
72 
77 EXTERN
78 const char* SCIPsdpiGetSolverName(
79  void
80  );
81 
83 EXTERN
84 const char* SCIPsdpiGetSolverDesc(
85  void
86  );
87 
94 EXTERN
96  SCIP_SDPI* sdpi
97  );
98 
104 /*
105  * SDPI Creation and Destruction Methods
106  */
107 
112 EXTERN
113 SCIP_RETCODE SCIPsdpiCreate(
114  SCIP_SDPI** sdpi,
115  SCIP_MESSAGEHDLR* messagehdlr,
116  BMS_BLKMEM* blkmem
117  );
118 
120 EXTERN
121 SCIP_RETCODE SCIPsdpiFree(
122  SCIP_SDPI** sdpi
123  );
124 
127 EXTERN
128 SCIP_RETCODE SCIPsdpiClone(
129  SCIP_SDPI* oldsdpi,
130  SCIP_SDPI* newsdpi
131  );
132 
138 /*
139  * Modification Methods
140  */
141 
150 EXTERN
151 SCIP_RETCODE SCIPsdpiLoadSDP(
152  SCIP_SDPI* sdpi,
153  int nvars,
154  SCIP_Real* obj,
155  SCIP_Real* lb,
156  SCIP_Real* ub,
157  int nsdpblocks,
158  int* sdpblocksizes,
159  int* sdpnblockvars,
160  int sdpconstnnonz,
161  int* sdpconstnblocknonz,
163  int** sdpconstrow,
164  int** sdpconstcol,
165  SCIP_Real** sdpconstval,
166  int sdpnnonz,
167  int** sdpnblockvarnonz,
169  int** sdpvar,
171  int*** sdprow,
174  int*** sdpcol,
175  SCIP_Real*** sdpval,
176  int nlpcons,
177  SCIP_Real* lplhs,
178  SCIP_Real* lprhs,
179  int lpnnonz,
180  int* lprow,
181  int* lpcol,
182  SCIP_Real* lpval
183  );
184 
189 EXTERN
190 SCIP_RETCODE SCIPsdpiAddLPRows(
191  SCIP_SDPI* sdpi,
192  int nrows,
193  const SCIP_Real* lhs,
194  const SCIP_Real* rhs,
195  int nnonz,
196  const int* row,
198  const int* col,
199  const SCIP_Real* val
200  );
201 
203 EXTERN
204 SCIP_RETCODE SCIPsdpiDelLPRows(
205  SCIP_SDPI* sdpi,
206  int firstrow,
207  int lastrow
208  );
209 
211 EXTERN
212 SCIP_RETCODE SCIPsdpiDelLPRowset(
213  SCIP_SDPI* sdpi,
214  int* dstat
217  );
218 
220 EXTERN
221 SCIP_RETCODE SCIPsdpiClear(
222  SCIP_SDPI* sdpi
223  );
224 
226 EXTERN
227 SCIP_RETCODE SCIPsdpiChgBounds(
228  SCIP_SDPI* sdpi,
229  int nvars,
230  const int* ind,
231  const SCIP_Real* lb,
232  const SCIP_Real* ub
233  );
234 
236 SCIP_RETCODE SCIPsdpiChgLPLhRhSides(
237  SCIP_SDPI* sdpi,
238  int nrows,
239  const int* ind,
240  const SCIP_Real* lhs,
241  const SCIP_Real* rhs
242  );
243 
244 
245 /*
246  * Data Accessing Methods
247  */
248 
253 EXTERN
254 SCIP_RETCODE SCIPsdpiGetNLPRows(
255  SCIP_SDPI* sdpi,
256  int* nlprows
257  );
258 
260 EXTERN
261 SCIP_RETCODE SCIPsdpiGetNSDPBlocks(
262  SCIP_SDPI* sdpi,
263  int* nsdpblocks
264  );
265 
267 EXTERN
268 SCIP_RETCODE SCIPsdpiGetNVars(
269  SCIP_SDPI* sdpi,
270  int* nvars
271  );
272 
274 EXTERN
275 SCIP_RETCODE SCIPsdpiGetSDPNNonz(
276  SCIP_SDPI* sdpi,
277  int* nnonz
278  );
279 
281 EXTERN
282 SCIP_RETCODE SCIPsdpiGetConstNNonz(
283  SCIP_SDPI* sdpi,
284  int* nnonz
285  );
286 
288 EXTERN
289 SCIP_RETCODE SCIPsdpiGetLPNNonz(
290  SCIP_SDPI* sdpi,
291  int* nnonz
292  );
293 
295 EXTERN
296 SCIP_RETCODE SCIPsdpiGetObj(
297  SCIP_SDPI* sdpi,
298  int firstvar,
299  int lastvar,
300  SCIP_Real* vals
301  );
302 
304 EXTERN
305 SCIP_RETCODE SCIPsdpiGetBounds(
306  SCIP_SDPI* sdpi,
307  int firstvar,
308  int lastvar,
309  SCIP_Real* lbs,
310  SCIP_Real* ubs
311  );
312 
314 EXTERN
315 SCIP_RETCODE SCIPsdpiGetLhSides(
316  SCIP_SDPI* sdpi,
317  int firstrow,
318  int lastrow,
319  SCIP_Real* lhss
320  );
321 
323 EXTERN
324 SCIP_RETCODE SCIPsdpiGetRhSides(
325  SCIP_SDPI* sdpi,
326  int firstrow,
327  int lastrow,
328  SCIP_Real* rhss
329  );
330 
331 
337 /*
338  * Solving Methods
339  */
340 
345 EXTERN
346 SCIP_RETCODE SCIPsdpiSolve(
347  SCIP_SDPI* sdpi,
348  SCIP_Real* start,
349  int* totalsdpiterations,
350  SCIP_Bool enforceslatercheck
352  );
353 
359 /*
360  * Solution Information Methods
361  */
362 
367 EXTERN
368 SCIP_Bool SCIPsdpiWasSolved(
369  SCIP_SDPI* sdpi
370  );
371 
373 EXTERN
374 SCIP_Bool SCIPsdpiSolvedOrig(
375  SCIP_SDPI* sdpi
376  );
377 
381 EXTERN
382 SCIP_Bool SCIPsdpiFeasibilityKnown(
383  SCIP_SDPI* sdpi
384  );
385 
387 EXTERN
388 SCIP_RETCODE SCIPsdpiGetSolFeasibility(
389  SCIP_SDPI* sdpi,
390  SCIP_Bool* primalfeasible,
391  SCIP_Bool* dualfeasible
392  );
393 
396 EXTERN
397 SCIP_Bool SCIPsdpiIsPrimalUnbounded(
398  SCIP_SDPI* sdpi
399  );
400 
403 EXTERN
405  SCIP_SDPI* sdpi
406  );
407 
410 EXTERN
411 SCIP_Bool SCIPsdpiIsPrimalFeasible(
412  SCIP_SDPI* sdpi
413  );
414 
417 EXTERN
418 SCIP_Bool SCIPsdpiIsDualUnbounded(
419  SCIP_SDPI* sdpi
420  );
421 
424 EXTERN
425 SCIP_Bool SCIPsdpiIsDualInfeasible(
426  SCIP_SDPI* sdpi
427  );
428 
431 EXTERN
432 SCIP_Bool SCIPsdpiIsDualFeasible(
433  SCIP_SDPI* sdpi
434  );
435 
437 EXTERN
438 SCIP_Bool SCIPsdpiIsConverged(
439  SCIP_SDPI* sdpi
440  );
441 
443 EXTERN
444 SCIP_Bool SCIPsdpiIsObjlimExc(
445  SCIP_SDPI* sdpi
446  );
447 
449 EXTERN
450 SCIP_Bool SCIPsdpiIsIterlimExc(
451  SCIP_SDPI* sdpi
452  );
453 
455 EXTERN
456 SCIP_Bool SCIPsdpiIsTimelimExc(
457  SCIP_SDPI* sdpi
458  );
459 
470 EXTERN
472  SCIP_SDPI* sdpi
473  );
474 
476 EXTERN
477 SCIP_Bool SCIPsdpiIsOptimal(
478  SCIP_SDPI* sdpi
479  );
480 
483 EXTERN
484 SCIP_Bool SCIPsdpiIsAcceptable(
485  SCIP_SDPI* sdpi
486  );
487 
489 EXTERN
490 SCIP_RETCODE SCIPsdpiGetObjval(
491  SCIP_SDPI* sdpi,
492  SCIP_Real* objval
493  );
494 
497 EXTERN
498 SCIP_RETCODE SCIPsdpiGetSol(
499  SCIP_SDPI* sdpi,
500  SCIP_Real* objval,
501  SCIP_Real* dualsol,
502  int* dualsollength
504  );
505 
509 EXTERN
510 SCIP_RETCODE SCIPsdpiGetPrimalBoundVars(
511  SCIP_SDPI* sdpi,
512  SCIP_Real* lbvars,
513  SCIP_Real* ubvars,
514  int* arraylength
516  );
517 
519 EXTERN
520 SCIP_RETCODE SCIPsdpiGetIterations(
521  SCIP_SDPI* sdpi,
522  int* iterations
523  );
524 
530 /*
531  * SDPi State Methods
532  */
533 
534 
535 
536 /*
537  * Numerical Methods
538  */
539 
544 EXTERN
545 SCIP_Real SCIPsdpiInfinity(
546  SCIP_SDPI* sdpi
547  );
548 
550 EXTERN
551 SCIP_Bool SCIPsdpiIsInfinity(
552  SCIP_SDPI* sdpi,
553  SCIP_Real val
554  );
555 
557 EXTERN
558 SCIP_Real SCIPsdpiMaxPenParam(
559  SCIP_SDPI* sdpi
560  );
561 
563 EXTERN
564 SCIP_Bool SCIPsdpiIsGEMaxPenParam(
565  SCIP_SDPI* sdpi,
566  SCIP_Real val
567  );
568 
570 EXTERN
571 SCIP_RETCODE SCIPsdpiGetRealpar(
572  SCIP_SDPI* sdpi,
573  SCIP_SDPPARAM type,
574  SCIP_Real* dval
575  );
576 
578 EXTERN
579 SCIP_RETCODE SCIPsdpiSetRealpar(
580  SCIP_SDPI* sdpi,
581  SCIP_SDPPARAM type,
582  SCIP_Real dval
583  );
584 
586 EXTERN
587 SCIP_RETCODE SCIPsdpiGetIntpar(
588  SCIP_SDPI* sdpi,
589  SCIP_SDPPARAM type,
590  int* ival
591  );
592 
594 EXTERN
595 SCIP_RETCODE SCIPsdpiSetIntpar(
596  SCIP_SDPI* sdpi,
597  SCIP_SDPPARAM type,
598  int ival
599  );
600 
606 /*
607  * File Interface Methods
608  */
609 
614 EXTERN
615 SCIP_RETCODE SCIPsdpiReadSDP(
616  SCIP_SDPI* sdpi,
617  const char* fname
618  );
619 
621 EXTERN
622 SCIP_RETCODE SCIPsdpiWriteSDP(
623  SCIP_SDPI* sdpi,
624  const char* fname
625  );
626 
629 #ifdef __cplusplus
630 }
631 #endif
632 
633 #endif
EXTERN SCIP_RETCODE SCIPsdpiGetNLPRows(SCIP_SDPI *sdpi, int *nlprows)
Definition: sdpi.c:1598
EXTERN SCIP_RETCODE SCIPsdpiGetSolFeasibility(SCIP_SDPI *sdpi, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
Definition: sdpi.c:2098
EXTERN SCIP_Bool SCIPsdpiIsPrimalInfeasible(SCIP_SDPI *sdpi)
Definition: sdpi.c:2139
EXTERN SCIP_RETCODE SCIPsdpiGetPrimalBoundVars(SCIP_SDPI *sdpi, SCIP_Real *lbvars, SCIP_Real *ubvars, int *arraylength)
Definition: sdpi.c:2410
EXTERN SCIP_Bool SCIPsdpiIsInfinity(SCIP_SDPI *sdpi, SCIP_Real val)
Definition: sdpi.c:2480
EXTERN SCIP_RETCODE SCIPsdpiAddLPRows(SCIP_SDPI *sdpi, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, int nnonz, const int *row, const int *col, const SCIP_Real *val)
Definition: sdpi.c:1306
EXTERN SCIP_Real SCIPsdpiMaxPenParam(SCIP_SDPI *sdpi)
Definition: sdpi.c:2491
EXTERN SCIP_RETCODE SCIPsdpiGetSol(SCIP_SDPI *sdpi, SCIP_Real *objval, SCIP_Real *dualsol, int *dualsollength)
Definition: sdpi.c:2383
EXTERN const char * SCIPsdpiGetSolverName(void)
Definition: sdpi.c:813
EXTERN SCIP_RETCODE SCIPsdpiGetIterations(SCIP_SDPI *sdpi, int *iterations)
Definition: sdpi.c:2437
EXTERN SCIP_RETCODE SCIPsdpiCreate(SCIP_SDPI **sdpi, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem)
Definition: sdpi.c:852
EXTERN SCIP_Real SCIPsdpiInfinity(SCIP_SDPI *sdpi)
Definition: sdpi.c:2470
EXTERN SCIP_RETCODE SCIPsdpiChgBounds(SCIP_SDPI *sdpi, int nvars, const int *ind, const SCIP_Real *lb, const SCIP_Real *ub)
Definition: sdpi.c:1528
EXTERN SCIP_Bool SCIPsdpiIsPrimalFeasible(SCIP_SDPI *sdpi)
Definition: sdpi.c:2157
SCIP_RETCODE SCIPsdpiChgLPLhRhSides(SCIP_SDPI *sdpi, int nrows, const int *ind, const SCIP_Real *lhs, const SCIP_Real *rhs)
Definition: sdpi.c:1558
EXTERN SCIP_RETCODE SCIPsdpiGetConstNNonz(SCIP_SDPI *sdpi, int *nnonz)
Definition: sdpi.c:1648
EXTERN SCIP_RETCODE SCIPsdpiGetRealpar(SCIP_SDPI *sdpi, SCIP_SDPPARAM type, SCIP_Real *dval)
Definition: sdpi.c:2512
EXTERN SCIP_RETCODE SCIPsdpiGetLPNNonz(SCIP_SDPI *sdpi, int *nnonz)
Definition: sdpi.c:1661
EXTERN SCIP_RETCODE SCIPsdpiGetRhSides(SCIP_SDPI *sdpi, int firstrow, int lastrow, SCIP_Real *rhss)
Definition: sdpi.c:1746
EXTERN SCIP_RETCODE SCIPsdpiGetNVars(SCIP_SDPI *sdpi, int *nvars)
Definition: sdpi.c:1624
EXTERN SCIP_Bool SCIPsdpiIsDualInfeasible(SCIP_SDPI *sdpi)
Definition: sdpi.c:2193
EXTERN void * SCIPsdpiGetSolverPointer(SCIP_SDPI *sdpi)
Definition: sdpi.c:834
EXTERN SCIP_Bool SCIPsdpiIsIterlimExc(SCIP_SDPI *sdpi)
Definition: sdpi.c:2262
EXTERN SCIP_RETCODE SCIPsdpiSetIntpar(SCIP_SDPI *sdpi, SCIP_SDPPARAM type, int ival)
Definition: sdpi.c:2629
EXTERN SCIP_Bool SCIPsdpiIsPrimalUnbounded(SCIP_SDPI *sdpi)
Definition: sdpi.c:2121
EXTERN SCIP_Bool SCIPsdpiWasSolved(SCIP_SDPI *sdpi)
Definition: sdpi.c:2062
type definitions for specific SDP solver interfaces
EXTERN SCIP_RETCODE SCIPsdpiLoadSDP(SCIP_SDPI *sdpi, int nvars, SCIP_Real *obj, SCIP_Real *lb, SCIP_Real *ub, int nsdpblocks, int *sdpblocksizes, int *sdpnblockvars, int sdpconstnnonz, int *sdpconstnblocknonz, int **sdpconstrow, int **sdpconstcol, SCIP_Real **sdpconstval, int sdpnnonz, int **sdpnblockvarnonz, int **sdpvar, int ***sdprow, int ***sdpcol, SCIP_Real ***sdpval, int nlpcons, SCIP_Real *lplhs, SCIP_Real *lprhs, int lpnnonz, int *lprow, int *lpcol, SCIP_Real *lpval)
Definition: sdpi.c:1089
EXTERN SCIP_RETCODE SCIPsdpiSetRealpar(SCIP_SDPI *sdpi, SCIP_SDPPARAM type, SCIP_Real dval)
Definition: sdpi.c:2549
EXTERN SCIP_RETCODE SCIPsdpiGetObj(SCIP_SDPI *sdpi, int firstvar, int lastvar, SCIP_Real *vals)
Definition: sdpi.c:1674
EXTERN SCIP_Bool SCIPsdpiSolvedOrig(SCIP_SDPI *sdpi)
Definition: sdpi.c:2072
EXTERN SCIP_RETCODE SCIPsdpiClear(SCIP_SDPI *sdpi)
Definition: sdpi.c:1512
EXTERN SCIP_RETCODE SCIPsdpiGetNSDPBlocks(SCIP_SDPI *sdpi, int *nsdpblocks)
Definition: sdpi.c:1611
EXTERN SCIP_RETCODE SCIPsdpiGetIntpar(SCIP_SDPI *sdpi, SCIP_SDPPARAM type, int *ival)
Definition: sdpi.c:2587
EXTERN SCIP_RETCODE SCIPsdpiSolve(SCIP_SDPI *sdpi, SCIP_Real *start, int *totalsdpiterations, SCIP_Bool enforceslatercheck)
Definition: sdpi.c:1780
EXTERN SCIP_Bool SCIPsdpiIsConverged(SCIP_SDPI *sdpi)
Definition: sdpi.c:2228
EXTERN SCIP_RETCODE SCIPsdpiDelLPRowset(SCIP_SDPI *sdpi, int *dstat)
Definition: sdpi.c:1473
EXTERN SCIP_RETCODE SCIPsdpiWriteSDP(SCIP_SDPI *sdpi, const char *fname)
Definition: sdpi.c:2694
EXTERN const char * SCIPsdpiGetSolverDesc(void)
Definition: sdpi.c:821
EXTERN SCIP_RETCODE SCIPsdpiGetSDPNNonz(SCIP_SDPI *sdpi, int *nnonz)
Definition: sdpi.c:1635
EXTERN SCIP_Bool SCIPsdpiFeasibilityKnown(SCIP_SDPI *sdpi)
Definition: sdpi.c:2084
EXTERN SCIP_Bool SCIPsdpiIsAcceptable(SCIP_SDPI *sdpi)
Definition: sdpi.c:2344
EXTERN SCIP_RETCODE SCIPsdpiDelLPRows(SCIP_SDPI *sdpi, int firstrow, int lastrow)
Definition: sdpi.c:1369
EXTERN SCIP_RETCODE SCIPsdpiGetLhSides(SCIP_SDPI *sdpi, int firstrow, int lastrow, SCIP_Real *lhss)
Definition: sdpi.c:1724
EXTERN SCIP_RETCODE SCIPsdpiFree(SCIP_SDPI **sdpi)
Definition: sdpi.c:908
struct SCIP_SDPi SCIP_SDPI
Definition: type_sdpi.h:65
EXTERN SCIP_Bool SCIPsdpiIsOptimal(SCIP_SDPI *sdpi)
Definition: sdpi.c:2326
EXTERN SCIP_RETCODE SCIPsdpiReadSDP(SCIP_SDPI *sdpi, const char *fname)
Definition: sdpi.c:2684
EXTERN SCIP_Bool SCIPsdpiIsObjlimExc(SCIP_SDPI *sdpi)
Definition: sdpi.c:2245
EXTERN int SCIPsdpiGetInternalStatus(SCIP_SDPI *sdpi)
Definition: sdpi.c:2305
EXTERN SCIP_Bool SCIPsdpiIsTimelimExc(SCIP_SDPI *sdpi)
Definition: sdpi.c:2279
enum SCIP_SDPParam SCIP_SDPPARAM
Definition: type_sdpi.h:63
EXTERN SCIP_RETCODE SCIPsdpiGetBounds(SCIP_SDPI *sdpi, int firstvar, int lastvar, SCIP_Real *lbs, SCIP_Real *ubs)
Definition: sdpi.c:1696
EXTERN SCIP_RETCODE SCIPsdpiGetObjval(SCIP_SDPI *sdpi, SCIP_Real *objval)
Definition: sdpi.c:2361
EXTERN SCIP_Bool SCIPsdpiIsDualFeasible(SCIP_SDPI *sdpi)
Definition: sdpi.c:2211
EXTERN SCIP_Bool SCIPsdpiIsDualUnbounded(SCIP_SDPI *sdpi)
Definition: sdpi.c:2175
EXTERN SCIP_RETCODE SCIPsdpiClone(SCIP_SDPI *oldsdpi, SCIP_SDPI *newsdpi)
Definition: sdpi.c:971
EXTERN SCIP_Bool SCIPsdpiIsGEMaxPenParam(SCIP_SDPI *sdpi, SCIP_Real val)
Definition: sdpi.c:2501