SCIP-SDP  3.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
sdpisolver_none.c
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of SCIPSDP - a solving framework for mixed-integer */
4 /* semidefinite programs based on SCIP. */
5 /* */
6 /* Copyright (C) 2011-2013 Discrete Optimization, TU Darmstadt */
7 /* EDOM, FAU Erlangen-Nürnberg */
8 /* 2014-2017 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-2017 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 
33 /*#define SCIP_DEBUG*/
34 /*#define SCIP_MORE_DEBUG*/
35 
41 #include <assert.h>
42 
43 #include "sdpi/sdpisolver.h"
44 
45 #include "blockmemshell/memory.h" /* for memory allocation */
46 #include "scip/def.h" /* for SCIP_Real, _Bool, ... */
47 #include "scip/pub_misc.h" /* for sorting */
48 
49 /* turn off lint warnings for whole file: */
50 /*lint --e{715,788,818}*/
51 
53 #define BMS_CALL(x) do \
54  { \
55  if( NULL == (x) ) \
56  { \
57  SCIPerrorMessage("No memory in function call.\n"); \
58  return SCIP_NOMEMORY; \
59  } \
60  } \
61  while( FALSE )
62 
64 struct SCIP_SDPiSolver
65 {
66  SCIP_MESSAGEHDLR* messagehdlr;
67  BMS_BLKMEM* blkmem;
68  BMS_BUFMEM* bufmem;
69  SCIP_Real epsilon;
70  SCIP_Real gaptol;
71  SCIP_Real feastol;
72  SCIP_Real sdpsolverfeastol;
73  SCIP_Real objlimit;
74  SCIP_Bool sdpinfo;
75 };
76 
77 /*
78  * Local Methods
79  */
80 
82 static
84  void
85  )
86 {
87  SCIPerrorMessage("No SDP-solver available (SDP=none).\n");
88  SCIPerrorMessage("Ensure <relaxing/SDP/freq = -1>.\n");
89  SCIPABORT();
90 }
91 
93 static
95  void
96  )
97 {
98  SCIPerrorMessage("No SDP-solver available (SDP=none).\n");
99  SCIPerrorMessage("Ensure <relaxing/SDP/freq = -1>.\n");
100 }
101 
102 /*
103  * Miscellaneous Methods
104  */
105 
112  void
113  )
114 {
115  return "none";
116 }
117 
120  void
121  )
122 {
123  return "no SDP-Solver linked currently";
124 }
125 
133  SCIP_SDPISOLVER* sdpisolver
134  )
135 {
136  assert( sdpisolver != NULL );
137  return (void*) NULL;
138 }
139 
142  void
143  )
144 {
145  return 1E-6;
146 }
147 
150  void
151  )
152 {
153  return 8;
154 }
155 
159 /*
160  * SDPI Creation and Destruction Methods
161  */
162 
167 SCIP_RETCODE SCIPsdpiSolverCreate(
168  SCIP_SDPISOLVER** sdpisolver,
169  SCIP_MESSAGEHDLR* messagehdlr,
170  BMS_BLKMEM* blkmem,
171  BMS_BUFMEM* bufmem
172  )
173 {
174  assert( sdpisolver != NULL );
175  assert( blkmem != NULL );
176  assert( bufmem != NULL );
177  SCIPdebugMessage("Calling SCIPsdpiCreate \n");
178  SCIPdebugMessage("Note that currently no SDP-Solver is linked to the binary. Ensure <relaxing/SDP/freq = -1>. \n");
179 
180  BMS_CALL( BMSallocBlockMemory(blkmem, sdpisolver) );
181 
182  (*sdpisolver)->messagehdlr = messagehdlr;
183  (*sdpisolver)->blkmem = blkmem;
184  (*sdpisolver)->bufmem = bufmem;
185 
186  return SCIP_OKAY;
187 }
188 
190 SCIP_RETCODE SCIPsdpiSolverFree(
191  SCIP_SDPISOLVER** sdpisolver
192  )
193 {
194  assert( sdpisolver != NULL );
195  assert( *sdpisolver != NULL );
196  SCIPdebugMessage("Freeing SDPISolver\n");
197 
198  BMSfreeBlockMemory((*sdpisolver)->blkmem, sdpisolver);
199 
200  return SCIP_OKAY;
201 }
202 
205  SCIP_SDPISOLVER* sdpisolver
206  )
207 {
208  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
209 
210  return SCIP_OKAY;
211 }
212 
215  SCIP_SDPISOLVER* sdpisolver
216  )
217 {
218  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
219 
220  return SCIP_OKAY;
221 }
222 
226 /*
227  * Solving Methods
228  */
229 
246  SCIP_SDPISOLVER* sdpisolver,
247  int nvars,
248  SCIP_Real* obj,
249  SCIP_Real* lb,
250  SCIP_Real* ub,
251  int nsdpblocks,
252  int* sdpblocksizes,
253  int* sdpnblockvars,
254  int sdpconstnnonz,
255  int* sdpconstnblocknonz,
257  int** sdpconstrow,
258  int** sdpconstcol,
259  SCIP_Real** sdpconstval,
260  int sdpnnonz,
261  int** sdpnblockvarnonz,
263  int** sdpvar,
265  int*** sdprow,
266  int*** sdpcol,
267  SCIP_Real*** sdpval,
268  int** indchanges,
270  int* nremovedinds,
271  int* blockindchanges,
272  int nremovedblocks,
273  int nlpcons,
274  int noldlpcons,
275  SCIP_Real* lplhs,
276  SCIP_Real* lprhs,
277  int* rownactivevars,
278  int lpnnonz,
279  int* lprow,
280  int* lpcol,
281  SCIP_Real* lpval,
282  SCIP_Real* start,
283  SCIP_SDPSOLVERSETTING startsettings,
285  SCIP_Real timelimit
286  )
287 {
288  errorMessage();
289 
290  return SCIP_OKAY;
291 }
292 
313  SCIP_SDPISOLVER* sdpisolver,
314  SCIP_Real penaltyparam,
315  SCIP_Bool withobj,
316  SCIP_Bool rbound,
317  int nvars,
318  SCIP_Real* obj,
319  SCIP_Real* lb,
320  SCIP_Real* ub,
321  int nsdpblocks,
322  int* sdpblocksizes,
323  int* sdpnblockvars,
324  int sdpconstnnonz,
325  int* sdpconstnblocknonz,
327  int** sdpconstrow,
328  int** sdpconstcol,
329  SCIP_Real** sdpconstval,
330  int sdpnnonz,
331  int** sdpnblockvarnonz,
333  int** sdpvar,
335  int*** sdprow,
336  int*** sdpcol,
337  SCIP_Real*** sdpval,
338  int** indchanges,
340  int* nremovedinds,
341  int* blockindchanges,
342  int nremovedblocks,
343  int nlpcons,
344  int noldlpcons,
345  SCIP_Real* lplhs,
346  SCIP_Real* lprhs,
347  int* rownactivevars,
348  int lpnnonz,
349  int* lprow,
350  int* lpcol,
351  SCIP_Real* lpval,
352  SCIP_Real* start,
353  SCIP_SDPSOLVERSETTING startsettings,
355  SCIP_Real timelimit,
356  SCIP_Bool* feasorig,
358  SCIP_Bool* penaltybound
360  )
361 {
362  errorMessage();
363 
364  return SCIP_OKAY;
365 }
371 /*
372  * Solution Information Methods
373  */
374 
380  SCIP_SDPISOLVER* sdpisolver
381  )
382 {
384 
385  return FALSE;
386 }
387 
395  SCIP_SDPISOLVER* sdpisolver
396  )
397 {
399 
400  return FALSE;
401 }
402 
405  SCIP_SDPISOLVER* sdpisolver,
406  SCIP_Bool* primalfeasible,
407  SCIP_Bool* dualfeasible
408  )
409 {
411 
412  return SCIP_PLUGINNOTFOUND;
413 }
414 
418  SCIP_SDPISOLVER* sdpisolver
419  )
420 {
422 
423  return FALSE;
424 }
425 
429  SCIP_SDPISOLVER* sdpisolver
430  )
431 {
433 
434  return FALSE;
435 }
436 
440  SCIP_SDPISOLVER* sdpisolver
441  )
442 {
444 
445  return FALSE;
446 }
447 
451  SCIP_SDPISOLVER* sdpisolver
452  )
453 {
455 
456  return FALSE;
457 }
458 
462  SCIP_SDPISOLVER* sdpisolver
463  )
464 {
466 
467  return FALSE;
468 }
469 
473  SCIP_SDPISOLVER* sdpisolver
474  )
475 {
477 
478  return FALSE;
479 }
480 
483  SCIP_SDPISOLVER* sdpisolver
484  )
485 {
487 
488  return FALSE;
489 }
490 
493  SCIP_SDPISOLVER* sdpisolver
494  )
495 {
497 
498  return FALSE;
499 }
500 
503  SCIP_SDPISOLVER* sdpisolver
504  )
505 {
507 
508  return FALSE;
509 }
510 
513  SCIP_SDPISOLVER* sdpisolver
514  )
515 {
517 
518  return FALSE;
519 }
520 
532  SCIP_SDPISOLVER* sdpisolver
533  )
534 {
536 
537  return -2;
538 }
539 
542  SCIP_SDPISOLVER* sdpisolver
543  )
544 {
546 
547  return FALSE;
548 }
549 
553  SCIP_SDPISOLVER* sdpisolver
554  )
555 {
557 
558  return FALSE;
559 }
560 
563  SCIP_SDPISOLVER* sdpisolver,
564  SCIP_Bool* success
565  )
566 {
568 
569  return SCIP_PLUGINNOTFOUND;
570 }
571 
574  SCIP_SDPISOLVER* sdpisolver,
575  SCIP_Real* objval
576  )
577 {
579 
580  return SCIP_PLUGINNOTFOUND;
581 }
582 
587 SCIP_RETCODE SCIPsdpiSolverGetSol(
588  SCIP_SDPISOLVER* sdpisolver,
589  SCIP_Real* objval,
590  SCIP_Real* dualsol,
591  int* dualsollength
593  )
594 {
596 
597  return SCIP_PLUGINNOTFOUND;
598 }
599 
608  SCIP_SDPISOLVER* sdpisolver,
609  SCIP_Real* lbvars,
610  SCIP_Real* ubvars,
611  int* arraylength
613  )
614 {
616 
617  return SCIP_PLUGINNOTFOUND;
618 }
619 
622  SCIP_SDPISOLVER* sdpisolver,
623  int* iterations
624  )
625 {
627 
628  return SCIP_PLUGINNOTFOUND;
629 }
630 
633  SCIP_SDPISOLVER* sdpisolver,
634  int* calls
635  )
636 {
638 
639  return SCIP_PLUGINNOTFOUND;
640 }
641 
644  SCIP_SDPISOLVER* sdpisolver,
645  SCIP_SDPSOLVERSETTING* usedsetting
646  )
647 {
649 
650  return SCIP_PLUGINNOTFOUND;
651 }
652 
658 /*
659  * Numerical Methods
660  */
661 
667  SCIP_SDPISOLVER* sdpisolver
668  )
669 {
670  return 1E+20; /* default infinity from SCIP */
671 }
672 
675  SCIP_SDPISOLVER* sdpisolver,
676  SCIP_Real val
677  )
678 {
679  return ((val <= -SCIPsdpiSolverInfinity(sdpisolver)) || (val >= SCIPsdpiSolverInfinity(sdpisolver)));
680 }
681 
684  SCIP_SDPISOLVER* sdpisolver,
685  SCIP_SDPPARAM type,
686  SCIP_Real* dval
687  )
688 {
689  assert( sdpisolver != NULL );
690  assert( dval != NULL );
691 
692  switch( type )
693  {
694  case SCIP_SDPPAR_EPSILON:
695  *dval = sdpisolver->epsilon;
696  break;
697  case SCIP_SDPPAR_GAPTOL:
698  *dval = sdpisolver->gaptol;
699  break;
700  case SCIP_SDPPAR_FEASTOL:
701  *dval = sdpisolver->feastol;
702  break;
704  *dval = sdpisolver->sdpsolverfeastol;
705  break;
707  *dval = sdpisolver->objlimit;
708  break;
709  default:
710  return SCIP_PARAMETERUNKNOWN;
711  }
712 
713  return SCIP_OKAY;
714 }
715 
718  SCIP_SDPISOLVER* sdpisolver,
719  SCIP_SDPPARAM type,
720  SCIP_Real dval
721  )
722 {
723  assert( sdpisolver != NULL );
724 
725  switch( type )
726  {
727  case SCIP_SDPPAR_EPSILON:
728  sdpisolver->epsilon = dval;
729  SCIPdebugMessage("Setting sdpisolver epsilon to %f.\n", dval);
730  break;
731  case SCIP_SDPPAR_GAPTOL:
732  sdpisolver->gaptol = dval;
733  SCIPdebugMessage("Setting sdpisolver gaptol to %f.\n", dval);
734  break;
735  case SCIP_SDPPAR_FEASTOL:
736  sdpisolver->feastol = dval;
737  SCIPdebugMessage("Setting sdpisolver feastol to %f.\n", dval);
738  break;
740  sdpisolver->sdpsolverfeastol = dval;
741  SCIPdebugMessage("Setting sdpisolver sdpsolverfeastol to %f.\n", dval);
742  break;
744  SCIPdebugMessage("Setting sdpisolver objlimit to %f.\n", dval);
745  sdpisolver->objlimit = dval;
746  break;
747  default:
748  return SCIP_PARAMETERUNKNOWN;
749  }
750 
751  return SCIP_OKAY;
752 }
753 
756  SCIP_SDPISOLVER* sdpisolver,
757  SCIP_SDPPARAM type,
758  int* ival
759  )
760 {
761  assert( sdpisolver != NULL );
762 
763  switch( type )
764  {
765  case SCIP_SDPPAR_SDPINFO:
766  *ival = (int) sdpisolver->sdpinfo;
767  SCIPdebugMessage("Getting sdpisolver information output (%d).\n", *ival);
768  break;
769  default:
770  return SCIP_PARAMETERUNKNOWN;
771  }
772 
773  return SCIP_OKAY;
774 }
775 
778  SCIP_SDPISOLVER* sdpisolver,
779  SCIP_SDPPARAM type,
780  int ival
781  )
782 {
783  assert( sdpisolver != NULL );
784 
785  switch( type )
786  {
787  case SCIP_SDPPAR_SDPINFO:
788  sdpisolver->sdpinfo = (SCIP_Bool) ival;
789  SCIPdebugMessage("Setting sdpisolver information output (%d).\n", ival);
790  break;
791  default:
792  return SCIP_PARAMETERUNKNOWN;
793  }
794 
795  return SCIP_OKAY;
796 }
797 
800  SCIP_SDPISOLVER* sdpisolver,
801  SCIP_Real maxguess
802  )
803 {
804  SCIPdebugMessage("Lambdastar parameter only used by SDPA.");
805 
806  return SCIP_OKAY;
807 }
808 
811  SCIP_SDPISOLVER* sdpisolver,
812  SCIP_Real maxcoeff,
813  SCIP_Real* penaltyparam
814  )
815 {
816  assert( penaltyparam != NULL );
817 
818  *penaltyparam = 1E+10;
819 
820  return SCIP_OKAY;
821 }
822 
825  SCIP_SDPISOLVER* sdpisolver,
826  SCIP_Real penaltyparam,
827  SCIP_Real* maxpenaltyparam
828  )
829 {
830  assert( maxpenaltyparam != NULL );
831 
832  *maxpenaltyparam = 1E+10;
833 
834  return SCIP_OKAY;
835 }
836 
842 /*
843  * File Interface Methods
844  */
845 
851  SCIP_SDPISOLVER* sdpisolver,
852  const char* fname
853  )
854 {
856 
857  return SCIP_PLUGINNOTFOUND;
858 }
859 
862  SCIP_SDPISOLVER* sdpisolver,
863  const char* fname
864  )
865 {
867 
868  return SCIP_PLUGINNOTFOUND;
869 }
870 
SCIP_RETCODE SCIPsdpiSolverIgnoreInstability(SCIP_SDPISOLVER *sdpisolver, SCIP_Bool *success)
SCIP_Bool SCIPsdpiSolverIsOptimal(SCIP_SDPISOLVER *sdpisolver)
SCIP_RETCODE SCIPsdpiSolverGetPrimalBoundVars(SCIP_SDPISOLVER *sdpisolver, SCIP_Real *lbvars, SCIP_Real *ubvars, int *arraylength)
SCIP_Bool SCIPsdpiSolverIsAcceptable(SCIP_SDPISOLVER *sdpisolver)
SCIP_Bool SCIPsdpiSolverIsDualFeasible(SCIP_SDPISOLVER *sdpisolver)
const char * SCIPsdpiSolverGetSolverDesc(void)
SCIP_Bool SCIPsdpiSolverIsPrimalInfeasible(SCIP_SDPISOLVER *sdpisolver)
enum SCIP_SDPSolverSetting SCIP_SDPSOLVERSETTING
Definition: type_sdpi.h:78
SCIP_RETCODE SCIPsdpiSolverReadSDP(SCIP_SDPISOLVER *sdpisolver, const char *fname)
SCIP_Bool SCIPsdpiSolverFeasibilityKnown(SCIP_SDPISOLVER *sdpisolver)
SCIP_Real SCIPsdpiSolverInfinity(SCIP_SDPISOLVER *sdpisolver)
SCIP_Bool SCIPsdpiSolverIsPrimalUnbounded(SCIP_SDPISOLVER *sdpisolver)
int SCIPsdpiSolverGetInternalStatus(SCIP_SDPISOLVER *sdpisolver)
interface methods for specific SDP-solvers
SCIP_Real SCIPsdpiSolverGetDefaultSdpiSolverFeastol(void)
SCIP_Bool SCIPsdpiSolverIsDualInfeasible(SCIP_SDPISOLVER *sdpisolver)
SCIP_Bool SCIPsdpiSolverIsObjlimExc(SCIP_SDPISOLVER *sdpisolver)
SCIP_Bool SCIPsdpiSolverIsTimelimExc(SCIP_SDPISOLVER *sdpisolver)
SCIP_RETCODE SCIPsdpiSolverResetCounter(SCIP_SDPISOLVER *sdpisolver)
const char * SCIPsdpiSolverGetSolverName(void)
int SCIPsdpiSolverGetDefaultSdpiSolverNpenaltyIncreases(void)
SCIP_RETCODE SCIPsdpiSolverComputeMaxPenaltyparam(SCIP_SDPISOLVER *sdpisolver, SCIP_Real penaltyparam, SCIP_Real *maxpenaltyparam)
SCIP_RETCODE SCIPsdpiSolverFree(SCIP_SDPISOLVER **sdpisolver)
SCIP_RETCODE SCIPsdpiSolverGetSolFeasibility(SCIP_SDPISOLVER *sdpisolver, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
SCIP_RETCODE SCIPsdpiSolverGetIterations(SCIP_SDPISOLVER *sdpisolver, int *iterations)
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)
SCIP_RETCODE SCIPsdpiSolverGetRealpar(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPPARAM type, SCIP_Real *dval)
#define BMS_CALL(x)
SCIP_RETCODE SCIPsdpiSolverSettingsUsed(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPSOLVERSETTING *usedsetting)
SCIP_RETCODE SCIPsdpiSolverGetObjval(SCIP_SDPISOLVER *sdpisolver, SCIP_Real *objval)
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)
SCIP_RETCODE SCIPsdpiSolverGetSdpCalls(SCIP_SDPISOLVER *sdpisolver, int *calls)
void * SCIPsdpiSolverGetSolverPointer(SCIP_SDPISOLVER *sdpisolver)
SCIP_Bool SCIPsdpiSolverIsPrimalFeasible(SCIP_SDPISOLVER *sdpisolver)
SCIP_RETCODE SCIPsdpiSolverSetIntpar(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPPARAM type, int ival)
SCIP_RETCODE SCIPsdpiSolverCreate(SCIP_SDPISOLVER **sdpisolver, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, BMS_BUFMEM *bufmem)
SCIP_RETCODE SCIPsdpiSolverSetRealpar(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPPARAM type, SCIP_Real dval)
SCIP_RETCODE SCIPsdpiSolverWriteSDP(SCIP_SDPISOLVER *sdpisolver, const char *fname)
SCIP_Bool SCIPsdpiSolverIsInfinity(SCIP_SDPISOLVER *sdpisolver, SCIP_Real val)
SCIP_RETCODE SCIPsdpiSolverComputeLambdastar(SCIP_SDPISOLVER *sdpisolver, SCIP_Real maxguess)
SCIP_RETCODE SCIPsdpiSolverGetIntpar(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPPARAM type, int *ival)
SCIP_Bool SCIPsdpiSolverWasSolved(SCIP_SDPISOLVER *sdpisolver)
SCIP_RETCODE SCIPsdpiSolverIncreaseCounter(SCIP_SDPISOLVER *sdpisolver)
SCIP_Bool SCIPsdpiSolverIsDualUnbounded(SCIP_SDPISOLVER *sdpisolver)
struct SCIP_SDPiSolver SCIP_SDPISOLVER
Definition: sdpisolver.h:70
SCIP_Bool SCIPsdpiSolverIsConverged(SCIP_SDPISOLVER *sdpisolver)
static void errorMessageAbort(void)
SCIP_RETCODE SCIPsdpiSolverGetSol(SCIP_SDPISOLVER *sdpisolver, SCIP_Real *objval, SCIP_Real *dualsol, int *dualsollength)
enum SCIP_SDPParam SCIP_SDPPARAM
Definition: type_sdpi.h:67
static void errorMessage(void)
SCIP_RETCODE SCIPsdpiSolverComputePenaltyparam(SCIP_SDPISOLVER *sdpisolver, SCIP_Real maxcoeff, SCIP_Real *penaltyparam)
SCIP_Bool SCIPsdpiSolverIsIterlimExc(SCIP_SDPISOLVER *sdpisolver)