SCIP-SDP  2.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sdpisolver.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 
56 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
57 
58 #ifndef __SCIP_SDPISOLVER_H__
59 #define __SCIP_SDPISOLVER_H__
60 
61 
62 #include "scip/def.h"
63 #include "blockmemshell/memory.h"
64 #include "scip/type_retcode.h"
65 #include "sdpi/type_sdpi.h"
66 
67 #ifdef __cplusplus
68 extern "C" {
69 #endif
70 
71 typedef struct SCIP_SDPiSolver SCIP_SDPISOLVER;
73 /*
74  * Miscellaneous Methods
75  */
76 
81 EXTERN
82 const char* SCIPsdpiSolverGetSolverName(
83  void
84  );
85 
87 EXTERN
88 const char* SCIPsdpiSolverGetSolverDesc(
89  void
90  );
91 
98 EXTERN
100  SCIP_SDPISOLVER* sdpisolver
101  );
102 
108 /*
109  * SDPI Creation and Destruction Methods
110  */
111 
116 EXTERN
117 SCIP_RETCODE SCIPsdpiSolverCreate(
118  SCIP_SDPISOLVER** sdpisolver,
119  SCIP_MESSAGEHDLR* messagehdlr,
120  BMS_BLKMEM* blkmem
121  );
122 
124 EXTERN
125 SCIP_RETCODE SCIPsdpiSolverFree(
126  SCIP_SDPISOLVER** sdpisolver
127  );
128 
130 EXTERN
131 SCIP_RETCODE SCIPsdpiSolverIncreaseCounter(
132  SCIP_SDPISOLVER* sdpisolver
133  );
134 
136 EXTERN
137 SCIP_RETCODE SCIPsdpiSolverResetCounter(
138  SCIP_SDPISOLVER* sdpisolver
139  );
140 
143 /*
144  * Solving Methods
145  */
146 
162 EXTERN
163 SCIP_RETCODE SCIPsdpiSolverLoadAndSolve(
164  SCIP_SDPISOLVER* sdpisolver,
165  int nvars,
166  SCIP_Real* obj,
167  SCIP_Real* lb,
168  SCIP_Real* ub,
169  int nsdpblocks,
170  int* sdpblocksizes,
171  int* sdpnblockvars,
172  int sdpconstnnonz,
173  int* sdpconstnblocknonz,
175  int** sdpconstrow,
176  int** sdpconstcol,
177  SCIP_Real** sdpconstval,
178  int sdpnnonz,
179  int** sdpnblockvarnonz,
181  int** sdpvar,
183  int*** sdprow,
184  int*** sdpcol,
185  SCIP_Real*** sdpval,
186  int** indchanges,
188  int* nremovedinds,
189  int* blockindchanges,
190  int nremovedblocks,
191  int nlpcons,
192  int noldlpcons,
193  SCIP_Real* lplhs,
194  SCIP_Real* lprhs,
195  int* rownactivevars,
196  int lpnnonz,
197  int* lprow,
198  int* lpcol,
199  SCIP_Real* lpval,
200  SCIP_Real* start
201 );/* TODO: start needs to include X,y,Z for SDPA */
202 
222 EXTERN
224  SCIP_SDPISOLVER* sdpisolver,
225  SCIP_Real penaltyparam,
226  SCIP_Bool withobj,
227  SCIP_Bool rbound,
228  int nvars,
229  SCIP_Real* obj,
230  SCIP_Real* lb,
231  SCIP_Real* ub,
232  int nsdpblocks,
233  int* sdpblocksizes,
234  int* sdpnblockvars,
235  int sdpconstnnonz,
236  int* sdpconstnblocknonz,
238  int** sdpconstrow,
239  int** sdpconstcol,
240  SCIP_Real** sdpconstval,
241  int sdpnnonz,
242  int** sdpnblockvarnonz,
244  int** sdpvar,
246  int*** sdprow,
247  int*** sdpcol,
248  SCIP_Real*** sdpval,
249  int** indchanges,
251  int* nremovedinds,
252  int* blockindchanges,
253  int nremovedblocks,
254  int nlpcons,
255  int noldlpcons,
256  SCIP_Real* lplhs,
257  SCIP_Real* lprhs,
258  int* rownactivevars,
259  int lpnnonz,
260  int* lprow,
261  int* lpcol,
262  SCIP_Real* lpval,
263  SCIP_Real* start,
264  SCIP_Bool* feasorig
266 );/*TODO: start needs to include X,y,Z for SDPA*/
267 
268 
269 
275 /*
276  * Solution Information Methods
277  */
278 
283 EXTERN
284 SCIP_Bool SCIPsdpiSolverWasSolved(
285  SCIP_SDPISOLVER* sdpisolver
286  );
287 
294 EXTERN
296  SCIP_SDPISOLVER* sdpisolver
297  );
298 
300 EXTERN
302  SCIP_SDPISOLVER* sdpisolver,
303  SCIP_Bool* primalfeasible,
304  SCIP_Bool* dualfeasible
305  );
306 
309 EXTERN
311  SCIP_SDPISOLVER* sdpisolver
312  );
313 
316 EXTERN
318  SCIP_SDPISOLVER* sdpisolver
319  );
320 
323 EXTERN
325  SCIP_SDPISOLVER* sdpisolver
326  );
327 
330 EXTERN
332  SCIP_SDPISOLVER* sdpisolver
333  );
334 
337 EXTERN
339  SCIP_SDPISOLVER* sdpisolver
340  );
341 
344 EXTERN
346  SCIP_SDPISOLVER* sdpisolver
347  );
348 
350 EXTERN
351 SCIP_Bool SCIPsdpiSolverIsConverged(
352  SCIP_SDPISOLVER* sdpisolver
353  );
354 
356 EXTERN
357 SCIP_Bool SCIPsdpiSolverIsObjlimExc(
358  SCIP_SDPISOLVER* sdpisolver
359  );
360 
362 EXTERN
364  SCIP_SDPISOLVER* sdpisolver
365  );
366 
368 EXTERN
370  SCIP_SDPISOLVER* sdpisolver
371  );
372 
383 EXTERN
385  SCIP_SDPISOLVER* sdpisolver
386  );
387 
389 EXTERN
390 SCIP_Bool SCIPsdpiSolverIsOptimal(
391  SCIP_SDPISOLVER* sdpisolver
392  );
393 
396 EXTERN
398  SCIP_SDPISOLVER* sdpisolver
399  );
400 
402 EXTERN
404  SCIP_SDPISOLVER* sdpisolver,
405  SCIP_Bool* success
406  );
407 
409 EXTERN
410 SCIP_RETCODE SCIPsdpiSolverGetObjval(
411  SCIP_SDPISOLVER* sdpisolver,
412  SCIP_Real* objval
413  );
414 
419 EXTERN
420 SCIP_RETCODE SCIPsdpiSolverGetSol(
421  SCIP_SDPISOLVER* sdpisolver,
422  SCIP_Real* objval,
423  SCIP_Real* dualsol,
424  int* dualsollength
426  );
427 
435 EXTERN
437  SCIP_SDPISOLVER* sdpisolver,
438  SCIP_Real* lbvars,
439  SCIP_Real* ubvars,
440  int* arraylength
442  );
443 
445 EXTERN
446 SCIP_RETCODE SCIPsdpiSolverGetIterations(
447  SCIP_SDPISOLVER* sdpisolver,
448  int* iterations
449  );
450 
456 /*
457  * SDPi State Methods
458  */
459 
460 
461 
462 /*
463  * Numerical Methods
464  */
465 
470 EXTERN
471 SCIP_Real SCIPsdpiSolverInfinity(
472  SCIP_SDPISOLVER* sdpisolver
473  );
474 
476 EXTERN
477 SCIP_Bool SCIPsdpiSolverIsInfinity(
478  SCIP_SDPISOLVER* sdpisolver,
479  SCIP_Real val
480  );
481 
483 EXTERN
484 SCIP_Real SCIPsdpiSolverMaxPenParam(
485  SCIP_SDPISOLVER* sdpisolver
486  );
487 
489 EXTERN
491  SCIP_SDPISOLVER* sdpisolver,
492  SCIP_Real val
493  );
494 
496 EXTERN
497 SCIP_RETCODE SCIPsdpiSolverGetRealpar(
498  SCIP_SDPISOLVER* sdpisolver,
499  SCIP_SDPPARAM type,
500  SCIP_Real* dval
501  );
502 
504 EXTERN
505 SCIP_RETCODE SCIPsdpiSolverSetRealpar(
506  SCIP_SDPISOLVER* sdpisolver,
507  SCIP_SDPPARAM type,
508  SCIP_Real dval
509  );
510 
512 EXTERN
513 SCIP_RETCODE SCIPsdpiSolverGetIntpar(
514  SCIP_SDPISOLVER* sdpisolver,
515  SCIP_SDPPARAM type,
516  int* ival
517  );
518 
520 EXTERN
521 SCIP_RETCODE SCIPsdpiSolverSetIntpar(
522  SCIP_SDPISOLVER* sdpisolver,
523  SCIP_SDPPARAM type,
524  int ival
525  );
526 
532 /*
533  * File Interface Methods
534  */
535 
540 EXTERN
541 SCIP_RETCODE SCIPsdpiSolverReadSDP(
542  SCIP_SDPISOLVER* sdpisolver,
543  const char* fname
544  );
545 
547 EXTERN
548 SCIP_RETCODE SCIPsdpiSolverWriteSDP(
549  SCIP_SDPISOLVER* sdpisolver,
550  const char* fname
551  );
552 
555 #ifdef __cplusplus
556 }
557 #endif
558 
559 #endif
EXTERN SCIP_RETCODE SCIPsdpiSolverIncreaseCounter(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverWriteSDP(SCIP_SDPISOLVER *sdpisolver, const char *fname)
EXTERN SCIP_RETCODE SCIPsdpiSolverGetSolFeasibility(SCIP_SDPISOLVER *sdpisolver, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
EXTERN SCIP_RETCODE SCIPsdpiSolverSetRealpar(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPPARAM type, SCIP_Real dval)
EXTERN SCIP_Bool SCIPsdpiSolverIsObjlimExc(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_Bool SCIPsdpiSolverIsAcceptable(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverResetCounter(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_Bool SCIPsdpiSolverFeasibilityKnown(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_Bool SCIPsdpiSolverIsConverged(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverGetPrimalBoundVars(SCIP_SDPISOLVER *sdpisolver, SCIP_Real *lbvars, SCIP_Real *ubvars, int *arraylength)
EXTERN SCIP_RETCODE SCIPsdpiSolverFree(SCIP_SDPISOLVER **sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverLoadAndSolve(SCIP_SDPISOLVER *sdpisolver, 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 **indchanges, int *nremovedinds, int *blockindchanges, int nremovedblocks, int nlpcons, int noldlpcons, SCIP_Real *lplhs, SCIP_Real *lprhs, int *rownactivevars, int lpnnonz, int *lprow, int *lpcol, SCIP_Real *lpval, SCIP_Real *start)
EXTERN SCIP_Bool SCIPsdpiSolverWasSolved(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_Bool SCIPsdpiSolverIsDualFeasible(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_Bool SCIPsdpiSolverIsOptimal(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_Bool SCIPsdpiSolverIsGEMaxPenParam(SCIP_SDPISOLVER *sdpisolver, SCIP_Real val)
EXTERN SCIP_RETCODE SCIPsdpiSolverReadSDP(SCIP_SDPISOLVER *sdpisolver, const char *fname)
EXTERN SCIP_Bool SCIPsdpiSolverIsPrimalUnbounded(SCIP_SDPISOLVER *sdpisolver)
EXTERN int SCIPsdpiSolverGetInternalStatus(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverGetIterations(SCIP_SDPISOLVER *sdpisolver, int *iterations)
EXTERN SCIP_RETCODE SCIPsdpiSolverSetIntpar(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPPARAM type, int ival)
EXTERN const char * SCIPsdpiSolverGetSolverDesc(void)
EXTERN SCIP_RETCODE SCIPsdpiSolverGetIntpar(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPPARAM type, int *ival)
EXTERN SCIP_Bool SCIPsdpiSolverIsDualInfeasible(SCIP_SDPISOLVER *sdpisolver)
EXTERN const char * SCIPsdpiSolverGetSolverName(void)
type definitions for specific SDP solver interfaces
EXTERN SCIP_RETCODE SCIPsdpiSolverLoadAndSolveWithPenalty(SCIP_SDPISOLVER *sdpisolver, SCIP_Real penaltyparam, SCIP_Bool withobj, SCIP_Bool rbound, 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 **indchanges, int *nremovedinds, int *blockindchanges, int nremovedblocks, int nlpcons, int noldlpcons, SCIP_Real *lplhs, SCIP_Real *lprhs, int *rownactivevars, int lpnnonz, int *lprow, int *lpcol, SCIP_Real *lpval, SCIP_Real *start, SCIP_Bool *feasorig)
EXTERN SCIP_Bool SCIPsdpiSolverIsPrimalInfeasible(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_Bool SCIPsdpiSolverIsIterlimExc(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverIgnoreInstability(SCIP_SDPISOLVER *sdpisolver, SCIP_Bool *success)
EXTERN SCIP_RETCODE SCIPsdpiSolverGetRealpar(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPPARAM type, SCIP_Real *dval)
EXTERN SCIP_Bool SCIPsdpiSolverIsTimelimExc(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverGetObjval(SCIP_SDPISOLVER *sdpisolver, SCIP_Real *objval)
EXTERN SCIP_Bool SCIPsdpiSolverIsDualUnbounded(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverGetSol(SCIP_SDPISOLVER *sdpisolver, SCIP_Real *objval, SCIP_Real *dualsol, int *dualsollength)
EXTERN SCIP_Bool SCIPsdpiSolverIsPrimalFeasible(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_Real SCIPsdpiSolverMaxPenParam(SCIP_SDPISOLVER *sdpisolver)
struct SCIP_SDPiSolver SCIP_SDPISOLVER
Definition: sdpisolver.h:71
EXTERN SCIP_RETCODE SCIPsdpiSolverCreate(SCIP_SDPISOLVER **sdpisolver, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem)
EXTERN SCIP_Real SCIPsdpiSolverInfinity(SCIP_SDPISOLVER *sdpisolver)
enum SCIP_SDPParam SCIP_SDPPARAM
Definition: type_sdpi.h:63
EXTERN void * SCIPsdpiSolverGetSolverPointer(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_Bool SCIPsdpiSolverIsInfinity(SCIP_SDPISOLVER *sdpisolver, SCIP_Real val)