SCIP-SDP  2.1.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 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 
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  SCIP_Real epsilon;
69  SCIP_Real feastol;
70  SCIP_Real objlimit;
71  SCIP_Bool sdpinfo;
72 };
73 
74 /*
75  * Local Methods
76  */
77 
79 static
81  void
82  )
83 {
84  SCIPerrorMessage("No SDP-solver available (SDP=none).\n");
85  SCIPerrorMessage("Ensure <relaxing/SDP/freq = -1>.\n");
86  SCIPABORT();
87 }
88 
90 static
92  void
93  )
94 {
95  SCIPerrorMessage("No SDP-solver available (SDP=none).\n");
96  SCIPerrorMessage("Ensure <relaxing/SDP/freq = -1>.\n");
97 }
98 
99 /*
100  * Miscellaneous Methods
101  */
102 
109  void
110  )
111 {
112  return "none";
113 }
114 
117  void
118  )
119 {
120  return "no SDP-Solver linked currently";
121 }
122 
130  SCIP_SDPISOLVER* sdpisolver
131  )
132 {
133  assert( sdpisolver != NULL );
134  return (void*) NULL;
135 }
136 
140 /*
141  * SDPI Creation and Destruction Methods
142  */
143 
148 SCIP_RETCODE SCIPsdpiSolverCreate(
149  SCIP_SDPISOLVER** sdpisolver,
150  SCIP_MESSAGEHDLR* messagehdlr,
151  BMS_BLKMEM* blkmem
152  )
153 {
154  assert( sdpisolver != NULL );
155  assert( blkmem != NULL );
156  SCIPdebugMessage("Calling SCIPsdpiCreate \n");
157  SCIPdebugMessage("Note that currently no SDP-Solver is linked to the binary. Ensure <relaxing/SDP/freq = -1>. \n");
158 
159  BMS_CALL( BMSallocBlockMemory(blkmem, sdpisolver) );
160 
161  (*sdpisolver)->messagehdlr = messagehdlr;
162  (*sdpisolver)->blkmem = blkmem;
163 
164  return SCIP_OKAY;
165 }
166 
168 SCIP_RETCODE SCIPsdpiSolverFree(
169  SCIP_SDPISOLVER** sdpisolver
170  )
171 {
172  assert( sdpisolver != NULL );
173  assert( *sdpisolver != NULL );
174  SCIPdebugMessage("Freeing SDPISolver\n");
175 
176  BMSfreeBlockMemory((*sdpisolver)->blkmem, sdpisolver);
177 
178  return SCIP_OKAY;
179 }
180 
183  SCIP_SDPISOLVER* sdpisolver
184  )
185 {
186  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
187 
188  return SCIP_OKAY;
189 }
190 
193  SCIP_SDPISOLVER* sdpisolver
194  )
195 {
196  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
197 
198  return SCIP_OKAY;
199 }
200 
204 /*
205  * Solving Methods
206  */
207 
224  SCIP_SDPISOLVER* sdpisolver,
225  int nvars,
226  SCIP_Real* obj,
227  SCIP_Real* lb,
228  SCIP_Real* ub,
229  int nsdpblocks,
230  int* sdpblocksizes,
231  int* sdpnblockvars,
232  int sdpconstnnonz,
233  int* sdpconstnblocknonz,
235  int** sdpconstrow,
236  int** sdpconstcol,
237  SCIP_Real** sdpconstval,
238  int sdpnnonz,
239  int** sdpnblockvarnonz,
241  int** sdpvar,
243  int*** sdprow,
244  int*** sdpcol,
245  SCIP_Real*** sdpval,
246  int** indchanges,
248  int* nremovedinds,
249  int* blockindchanges,
250  int nremovedblocks,
251  int nlpcons,
252  int noldlpcons,
253  SCIP_Real* lplhs,
254  SCIP_Real* lprhs,
255  int* rownactivevars,
256  int lpnnonz,
257  int* lprow,
258  int* lpcol,
259  SCIP_Real* lpval,
260  SCIP_Real* start,
261  SCIP_SDPSOLVERSETTING startsettings,
263  SCIP_Real timelimit
264  )
265 {
266  errorMessage();
267 
268  return SCIP_OKAY;
269 }
270 
291  SCIP_SDPISOLVER* sdpisolver,
292  SCIP_Real penaltyparam,
293  SCIP_Bool withobj,
294  SCIP_Bool rbound,
295  int nvars,
296  SCIP_Real* obj,
297  SCIP_Real* lb,
298  SCIP_Real* ub,
299  int nsdpblocks,
300  int* sdpblocksizes,
301  int* sdpnblockvars,
302  int sdpconstnnonz,
303  int* sdpconstnblocknonz,
305  int** sdpconstrow,
306  int** sdpconstcol,
307  SCIP_Real** sdpconstval,
308  int sdpnnonz,
309  int** sdpnblockvarnonz,
311  int** sdpvar,
313  int*** sdprow,
314  int*** sdpcol,
315  SCIP_Real*** sdpval,
316  int** indchanges,
318  int* nremovedinds,
319  int* blockindchanges,
320  int nremovedblocks,
321  int nlpcons,
322  int noldlpcons,
323  SCIP_Real* lplhs,
324  SCIP_Real* lprhs,
325  int* rownactivevars,
326  int lpnnonz,
327  int* lprow,
328  int* lpcol,
329  SCIP_Real* lpval,
330  SCIP_Real* start,
331  SCIP_SDPSOLVERSETTING startsettings,
333  SCIP_Real timelimit,
334  SCIP_Bool* feasorig,
336  SCIP_Bool* penaltybound
338  )
339 {
340  errorMessage();
341 
342  return SCIP_OKAY;
343 }
349 /*
350  * Solution Information Methods
351  */
352 
358  SCIP_SDPISOLVER* sdpisolver
359  )
360 {
362 
363  return FALSE;
364 }
365 
373  SCIP_SDPISOLVER* sdpisolver
374  )
375 {
377 
378  return FALSE;
379 }
380 
383  SCIP_SDPISOLVER* sdpisolver,
384  SCIP_Bool* primalfeasible,
385  SCIP_Bool* dualfeasible
386  )
387 {
389 
390  return SCIP_PLUGINNOTFOUND;
391 }
392 
396  SCIP_SDPISOLVER* sdpisolver
397  )
398 {
400 
401  return FALSE;
402 }
403 
407  SCIP_SDPISOLVER* sdpisolver
408  )
409 {
411 
412  return FALSE;
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 
461  SCIP_SDPISOLVER* sdpisolver
462  )
463 {
465 
466  return FALSE;
467 }
468 
471  SCIP_SDPISOLVER* sdpisolver
472  )
473 {
475 
476  return FALSE;
477 }
478 
481  SCIP_SDPISOLVER* sdpisolver
482  )
483 {
485 
486  return FALSE;
487 }
488 
491  SCIP_SDPISOLVER* sdpisolver
492  )
493 {
495 
496  return FALSE;
497 }
498 
510  SCIP_SDPISOLVER* sdpisolver
511  )
512 {
514 
515  return -2;
516 }
517 
520  SCIP_SDPISOLVER* sdpisolver
521  )
522 {
524 
525  return FALSE;
526 }
527 
531  SCIP_SDPISOLVER* sdpisolver
532  )
533 {
535 
536  return FALSE;
537 }
538 
541  SCIP_SDPISOLVER* sdpisolver,
542  SCIP_Bool* success
543  )
544 {
546 
547  return SCIP_PLUGINNOTFOUND;
548 }
549 
552  SCIP_SDPISOLVER* sdpisolver,
553  SCIP_Real* objval
554  )
555 {
557 
558  return SCIP_PLUGINNOTFOUND;
559 }
560 
565 SCIP_RETCODE SCIPsdpiSolverGetSol(
566  SCIP_SDPISOLVER* sdpisolver,
567  SCIP_Real* objval,
568  SCIP_Real* dualsol,
569  int* dualsollength
571  )
572 {
574 
575  return SCIP_PLUGINNOTFOUND;
576 }
577 
586  SCIP_SDPISOLVER* sdpisolver,
587  SCIP_Real* lbvars,
588  SCIP_Real* ubvars,
589  int* arraylength
591  )
592 {
594 
595  return SCIP_PLUGINNOTFOUND;
596 }
597 
600  SCIP_SDPISOLVER* sdpisolver,
601  int* iterations
602  )
603 {
605 
606  return SCIP_PLUGINNOTFOUND;
607 }
608 
611  SCIP_SDPISOLVER* sdpisolver,
612  int* calls
613  )
614 {
616 
617  return SCIP_PLUGINNOTFOUND;
618 }
619 
622  SCIP_SDPISOLVER* sdpisolver,
623  SCIP_SDPSOLVERSETTING* usedsetting
624  )
625 {
627 
628  return SCIP_PLUGINNOTFOUND;
629 }
630 
636 /*
637  * Numerical Methods
638  */
639 
645  SCIP_SDPISOLVER* sdpisolver
646  )
647 {
648  return 1E+20; /* default infinity from SCIP */
649 }
650 
653  SCIP_SDPISOLVER* sdpisolver,
654  SCIP_Real val
655  )
656 {
657  return ((val <= -SCIPsdpiSolverInfinity(sdpisolver)) || (val >= SCIPsdpiSolverInfinity(sdpisolver)));
658 }
659 
662  SCIP_SDPISOLVER* sdpisolver,
663  SCIP_SDPPARAM type,
664  SCIP_Real* dval
665  )
666 {
667  assert( sdpisolver != NULL );
668  assert( dval != NULL );
669 
670  switch( type )
671  {
672  case SCIP_SDPPAR_EPSILON:
673  *dval = sdpisolver->epsilon;
674  break;
675  case SCIP_SDPPAR_FEASTOL:
676  *dval = sdpisolver->feastol;
677  break;
679  *dval = sdpisolver->objlimit;
680  break;
681  default:
682  return SCIP_PARAMETERUNKNOWN;
683  }
684 
685  return SCIP_OKAY;
686 }
687 
690  SCIP_SDPISOLVER* sdpisolver,
691  SCIP_SDPPARAM type,
692  SCIP_Real dval
693  )
694 {
695  assert( sdpisolver != NULL );
696 
697  switch( type )
698  {
699  case SCIP_SDPPAR_EPSILON:
700  sdpisolver->epsilon = dval;
701  SCIPdebugMessage("Setting sdpisolver epsilon to %f.\n", dval);
702  break;
703  case SCIP_SDPPAR_FEASTOL:
704  sdpisolver->feastol = dval;
705  SCIPdebugMessage("Setting sdpisolver feastol to %f.\n", dval);
706  break;
708  SCIPdebugMessage("Setting sdpisolver objlimit to %f.\n", dval);
709  sdpisolver->objlimit = dval;
710  break;
711  default:
712  return SCIP_PARAMETERUNKNOWN;
713  }
714 
715  return SCIP_OKAY;
716 }
717 
720  SCIP_SDPISOLVER* sdpisolver,
721  SCIP_SDPPARAM type,
722  int* ival
723  )
724 {
725  assert( sdpisolver != NULL );
726 
727  switch( type )
728  {
729  case SCIP_SDPPAR_SDPINFO:
730  *ival = (int) sdpisolver->sdpinfo;
731  SCIPdebugMessage("Getting sdpisolver information output (%d).\n", *ival);
732  break;
733  default:
734  return SCIP_PARAMETERUNKNOWN;
735  }
736 
737  return SCIP_OKAY;
738 }
739 
742  SCIP_SDPISOLVER* sdpisolver,
743  SCIP_SDPPARAM type,
744  int ival
745  )
746 {
747  assert( sdpisolver != NULL );
748 
749  switch( type )
750  {
751  case SCIP_SDPPAR_SDPINFO:
752  sdpisolver->sdpinfo = (SCIP_Bool) ival;
753  SCIPdebugMessage("Setting sdpisolver information output (%d).\n", ival);
754  break;
755  default:
756  return SCIP_PARAMETERUNKNOWN;
757  }
758 
759  return SCIP_OKAY;
760 }
761 
764  SCIP_SDPISOLVER* sdpisolver,
765  SCIP_Real maxguess
766  )
767 {
768  SCIPdebugMessage("Lambdastar parameter only used by SDPA.");
769 
770  return SCIP_OKAY;
771 }
772 
775  SCIP_SDPISOLVER* sdpisolver,
776  SCIP_Real maxcoeff,
777  SCIP_Real* penaltyparam
778  )
779 {
780  assert( penaltyparam != NULL );
781 
782  *penaltyparam = 1E+10;
783 
784  return SCIP_OKAY;
785 }
786 
789  SCIP_SDPISOLVER* sdpisolver,
790  SCIP_Real penaltyparam,
791  SCIP_Real* maxpenaltyparam
792  )
793 {
794  assert( maxpenaltyparam != NULL );
795 
796  *maxpenaltyparam = 1E+10;
797 
798  return SCIP_OKAY;
799 }
800 
806 /*
807  * File Interface Methods
808  */
809 
815  SCIP_SDPISOLVER* sdpisolver,
816  const char* fname
817  )
818 {
820 
821  return SCIP_PLUGINNOTFOUND;
822 }
823 
826  SCIP_SDPISOLVER* sdpisolver,
827  const char* fname
828  )
829 {
831 
832  return SCIP_PLUGINNOTFOUND;
833 }
834 
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:74
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_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)
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 SCIPsdpiSolverSetRealpar(SCIP_SDPISOLVER *sdpisolver, SCIP_SDPPARAM type, SCIP_Real dval)
SCIP_RETCODE SCIPsdpiSolverCreate(SCIP_SDPISOLVER **sdpisolver, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem)
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:63
static void errorMessage(void)
SCIP_RETCODE SCIPsdpiSolverComputePenaltyparam(SCIP_SDPISOLVER *sdpisolver, SCIP_Real maxcoeff, SCIP_Real *penaltyparam)
SCIP_Bool SCIPsdpiSolverIsIterlimExc(SCIP_SDPISOLVER *sdpisolver)