SCIP-SDP  2.1.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-2016 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-2016 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 
55 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
56 
57 #ifndef __SCIP_SDPISOLVER_H__
58 #define __SCIP_SDPISOLVER_H__
59 
60 
61 #include "scip/def.h"
62 #include "blockmemshell/memory.h"
63 #include "scip/type_retcode.h"
64 #include "sdpi/type_sdpi.h"
65 
66 #ifdef __cplusplus
67 extern "C" {
68 #endif
69 
70 typedef struct SCIP_SDPiSolver SCIP_SDPISOLVER;
72 /*
73  * Miscellaneous Methods
74  */
75 
80 EXTERN
81 const char* SCIPsdpiSolverGetSolverName(
82  void
83  );
84 
86 EXTERN
87 const char* SCIPsdpiSolverGetSolverDesc(
88  void
89  );
90 
97 EXTERN
99  SCIP_SDPISOLVER* sdpisolver
100  );
101 
107 /*
108  * SDPI Creation and Destruction Methods
109  */
110 
115 EXTERN
116 SCIP_RETCODE SCIPsdpiSolverCreate(
117  SCIP_SDPISOLVER** sdpisolver,
118  SCIP_MESSAGEHDLR* messagehdlr,
119  BMS_BLKMEM* blkmem
120  );
121 
123 EXTERN
124 SCIP_RETCODE SCIPsdpiSolverFree(
125  SCIP_SDPISOLVER** sdpisolver
126  );
127 
129 EXTERN
130 SCIP_RETCODE SCIPsdpiSolverIncreaseCounter(
131  SCIP_SDPISOLVER* sdpisolver
132  );
133 
135 EXTERN
136 SCIP_RETCODE SCIPsdpiSolverResetCounter(
137  SCIP_SDPISOLVER* sdpisolver
138  );
139 
142 /*
143  * Solving Methods
144  */
145 
161 EXTERN
162 SCIP_RETCODE SCIPsdpiSolverLoadAndSolve(
163  SCIP_SDPISOLVER* sdpisolver,
164  int nvars,
165  SCIP_Real* obj,
166  SCIP_Real* lb,
167  SCIP_Real* ub,
168  int nsdpblocks,
169  int* sdpblocksizes,
170  int* sdpnblockvars,
171  int sdpconstnnonz,
172  int* sdpconstnblocknonz,
174  int** sdpconstrow,
175  int** sdpconstcol,
176  SCIP_Real** sdpconstval,
177  int sdpnnonz,
178  int** sdpnblockvarnonz,
180  int** sdpvar,
182  int*** sdprow,
183  int*** sdpcol,
184  SCIP_Real*** sdpval,
185  int** indchanges,
187  int* nremovedinds,
188  int* blockindchanges,
189  int nremovedblocks,
190  int nlpcons,
191  int noldlpcons,
192  SCIP_Real* lplhs,
193  SCIP_Real* lprhs,
194  int* rownactivevars,
195  int lpnnonz,
196  int* lprow,
197  int* lpcol,
198  SCIP_Real* lpval,
199  SCIP_Real* start,
200  SCIP_SDPSOLVERSETTING startsettings,
202  SCIP_Real timelimit
203 );
204 
224 EXTERN
226  SCIP_SDPISOLVER* sdpisolver,
227  SCIP_Real penaltyparam,
228  SCIP_Bool withobj,
229  SCIP_Bool rbound,
230  int nvars,
231  SCIP_Real* obj,
232  SCIP_Real* lb,
233  SCIP_Real* ub,
234  int nsdpblocks,
235  int* sdpblocksizes,
236  int* sdpnblockvars,
237  int sdpconstnnonz,
238  int* sdpconstnblocknonz,
240  int** sdpconstrow,
241  int** sdpconstcol,
242  SCIP_Real** sdpconstval,
243  int sdpnnonz,
244  int** sdpnblockvarnonz,
246  int** sdpvar,
248  int*** sdprow,
249  int*** sdpcol,
250  SCIP_Real*** sdpval,
251  int** indchanges,
253  int* nremovedinds,
254  int* blockindchanges,
255  int nremovedblocks,
256  int nlpcons,
257  int noldlpcons,
258  SCIP_Real* lplhs,
259  SCIP_Real* lprhs,
260  int* rownactivevars,
261  int lpnnonz,
262  int* lprow,
263  int* lpcol,
264  SCIP_Real* lpval,
265  SCIP_Real* start,
266  SCIP_SDPSOLVERSETTING startsettings,
268  SCIP_Real timelimit,
269  SCIP_Bool* feasorig,
271  SCIP_Bool* penaltybound
273 );
274 
275 
276 
282 /*
283  * Solution Information Methods
284  */
285 
290 EXTERN
291 SCIP_Bool SCIPsdpiSolverWasSolved(
292  SCIP_SDPISOLVER* sdpisolver
293  );
294 
301 EXTERN
303  SCIP_SDPISOLVER* sdpisolver
304  );
305 
307 EXTERN
309  SCIP_SDPISOLVER* sdpisolver,
310  SCIP_Bool* primalfeasible,
311  SCIP_Bool* dualfeasible
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 
351 EXTERN
353  SCIP_SDPISOLVER* sdpisolver
354  );
355 
357 EXTERN
358 SCIP_Bool SCIPsdpiSolverIsConverged(
359  SCIP_SDPISOLVER* sdpisolver
360  );
361 
363 EXTERN
364 SCIP_Bool SCIPsdpiSolverIsObjlimExc(
365  SCIP_SDPISOLVER* sdpisolver
366  );
367 
369 EXTERN
371  SCIP_SDPISOLVER* sdpisolver
372  );
373 
375 EXTERN
377  SCIP_SDPISOLVER* sdpisolver
378  );
379 
390 EXTERN
392  SCIP_SDPISOLVER* sdpisolver
393  );
394 
396 EXTERN
397 SCIP_Bool SCIPsdpiSolverIsOptimal(
398  SCIP_SDPISOLVER* sdpisolver
399  );
400 
403 EXTERN
405  SCIP_SDPISOLVER* sdpisolver
406  );
407 
409 EXTERN
411  SCIP_SDPISOLVER* sdpisolver,
412  SCIP_Bool* success
413  );
414 
416 EXTERN
417 SCIP_RETCODE SCIPsdpiSolverGetObjval(
418  SCIP_SDPISOLVER* sdpisolver,
419  SCIP_Real* objval
420  );
421 
426 EXTERN
427 SCIP_RETCODE SCIPsdpiSolverGetSol(
428  SCIP_SDPISOLVER* sdpisolver,
429  SCIP_Real* objval,
430  SCIP_Real* dualsol,
431  int* dualsollength
433  );
434 
442 EXTERN
444  SCIP_SDPISOLVER* sdpisolver,
445  SCIP_Real* lbvars,
446  SCIP_Real* ubvars,
447  int* arraylength
449  );
450 
452 EXTERN
453 SCIP_RETCODE SCIPsdpiSolverGetIterations(
454  SCIP_SDPISOLVER* sdpisolver,
455  int* iterations
456  );
457 
459 EXTERN
460 SCIP_RETCODE SCIPsdpiSolverGetSdpCalls(
461  SCIP_SDPISOLVER* sdpisolver,
462  int* calls
463  );
464 
466 EXTERN
467 SCIP_RETCODE SCIPsdpiSolverSettingsUsed(
468  SCIP_SDPISOLVER* sdpisolver,
469  SCIP_SDPSOLVERSETTING* usedsetting
470  );
471 
477 /*
478  * SDPi State Methods
479  */
480 
481 
482 
483 /*
484  * Numerical Methods
485  */
486 
491 EXTERN
492 SCIP_Real SCIPsdpiSolverInfinity(
493  SCIP_SDPISOLVER* sdpisolver
494  );
495 
497 EXTERN
498 SCIP_Bool SCIPsdpiSolverIsInfinity(
499  SCIP_SDPISOLVER* sdpisolver,
500  SCIP_Real val
501  );
502 
504 EXTERN
505 SCIP_RETCODE SCIPsdpiSolverGetRealpar(
506  SCIP_SDPISOLVER* sdpisolver,
507  SCIP_SDPPARAM type,
508  SCIP_Real* dval
509  );
510 
512 EXTERN
513 SCIP_RETCODE SCIPsdpiSolverSetRealpar(
514  SCIP_SDPISOLVER* sdpisolver,
515  SCIP_SDPPARAM type,
516  SCIP_Real dval
517  );
518 
520 EXTERN
521 SCIP_RETCODE SCIPsdpiSolverGetIntpar(
522  SCIP_SDPISOLVER* sdpisolver,
523  SCIP_SDPPARAM type,
524  int* ival
525  );
526 
528 EXTERN
529 SCIP_RETCODE SCIPsdpiSolverSetIntpar(
530  SCIP_SDPISOLVER* sdpisolver,
531  SCIP_SDPPARAM type,
532  int ival
533  );
534 
536 EXTERN
538  SCIP_SDPISOLVER* sdpisolver,
539  SCIP_Real maxguess
540  );
541 
543 EXTERN
545  SCIP_SDPISOLVER* sdpisolver,
546  SCIP_Real maxcoeff,
547  SCIP_Real* penaltyparam
548  );
549 
551 EXTERN
553  SCIP_SDPISOLVER* sdpisolver,
554  SCIP_Real penaltyparam,
555  SCIP_Real* maxpenaltyparam
556  );
557 
563 /*
564  * File Interface Methods
565  */
566 
571 EXTERN
572 SCIP_RETCODE SCIPsdpiSolverReadSDP(
573  SCIP_SDPISOLVER* sdpisolver,
574  const char* fname
575  );
576 
578 EXTERN
579 SCIP_RETCODE SCIPsdpiSolverWriteSDP(
580  SCIP_SDPISOLVER* sdpisolver,
581  const char* fname
582  );
583 
586 #ifdef __cplusplus
587 }
588 #endif
589 
590 #endif
EXTERN SCIP_RETCODE SCIPsdpiSolverIncreaseCounter(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverGetSdpCalls(SCIP_SDPISOLVER *sdpisolver, int *calls)
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)
enum SCIP_SDPSolverSetting SCIP_SDPSOLVERSETTING
Definition: type_sdpi.h:74
EXTERN SCIP_RETCODE SCIPsdpiSolverFree(SCIP_SDPISOLVER **sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverComputeMaxPenaltyparam(SCIP_SDPISOLVER *sdpisolver, SCIP_Real penaltyparam, SCIP_Real *maxpenaltyparam)
EXTERN SCIP_Bool SCIPsdpiSolverWasSolved(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverComputePenaltyparam(SCIP_SDPISOLVER *sdpisolver, SCIP_Real maxcoeff, SCIP_Real *penaltyparam)
EXTERN SCIP_Bool SCIPsdpiSolverIsDualFeasible(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_Bool SCIPsdpiSolverIsOptimal(SCIP_SDPISOLVER *sdpisolver)
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_Bool SCIPsdpiSolverIsPrimalInfeasible(SCIP_SDPISOLVER *sdpisolver)
EXTERN SCIP_RETCODE SCIPsdpiSolverSettingsUsed(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPSOLVERSETTING *usedsetting)
EXTERN SCIP_Bool SCIPsdpiSolverIsIterlimExc(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, SCIP_SDPSOLVERSETTING startsettings, SCIP_Real timelimit)
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)
struct SCIP_SDPiSolver SCIP_SDPISOLVER
Definition: sdpisolver.h:70
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)
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_SDPSOLVERSETTING startsettings, SCIP_Real timelimit, SCIP_Bool *feasorig, SCIP_Bool *penaltybound)
EXTERN SCIP_RETCODE SCIPsdpiSolverComputeLambdastar(SCIP_SDPISOLVER *sdpisolver, SCIP_Real maxguess)