SCIP-SDP  3.1.1
 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-2018 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-2018 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 #include "scip/pub_message.h" /* for debug and error message */
49 
50 /* turn off lint warnings for whole file: */
51 /*lint --e{715,788,818}*/
52 
54 #define BMS_CALL(x) do \
55  { \
56  if( NULL == (x) ) \
57  { \
58  SCIPerrorMessage("No memory in function call.\n"); \
59  return SCIP_NOMEMORY; \
60  } \
61  } \
62  while( FALSE )
63 
65 struct SCIP_SDPiSolver
66 {
67  SCIP_MESSAGEHDLR* messagehdlr;
68  BMS_BLKMEM* blkmem;
69  BMS_BUFMEM* bufmem;
70  SCIP_Real epsilon;
71  SCIP_Real gaptol;
72  SCIP_Real feastol;
73  SCIP_Real sdpsolverfeastol;
74  SCIP_Real objlimit;
75  SCIP_Bool sdpinfo;
76 };
77 
78 /*
79  * Local Methods
80  */
81 
83 static
85  void
86  )
87 {
88  SCIPerrorMessage("No SDP-solver available (SDP=none).\n");
89  SCIPerrorMessage("Ensure <relaxing/SDP/freq = -1>.\n");
90  SCIPABORT();
91 }
92 
94 static
96  void
97  )
98 {
99  SCIPerrorMessage("No SDP-solver available (SDP=none).\n");
100  SCIPerrorMessage("Ensure <relaxing/SDP/freq = -1>.\n");
101 }
102 
103 /*
104  * Miscellaneous Methods
105  */
106 
113  void
114  )
115 {
116  return "none";
117 }
118 
121  void
122  )
123 {
124  return "no SDP-Solver linked currently";
125 }
126 
134  SCIP_SDPISOLVER* sdpisolver
135  )
136 {
137  assert( sdpisolver != NULL );
138  return (void*) NULL;
139 }
140 
143  void
144  )
145 {
146  return 1E-6;
147 }
148 
151  void
152  )
153 {
154  return 1E-4;
155 }
156 
159  void
160  )
161 {
162  return 8;
163 }
164 
167  void
168  )
169 {
170  return FALSE;
171 }
172 
176 /*
177  * SDPI Creation and Destruction Methods
178  */
179 
184 SCIP_RETCODE SCIPsdpiSolverCreate(
185  SCIP_SDPISOLVER** sdpisolver,
186  SCIP_MESSAGEHDLR* messagehdlr,
187  BMS_BLKMEM* blkmem,
188  BMS_BUFMEM* bufmem
189  )
190 {
191  assert( sdpisolver != NULL );
192  assert( blkmem != NULL );
193  assert( bufmem != NULL );
194  SCIPdebugMessage("Calling SCIPsdpiCreate \n");
195  SCIPdebugMessage("Note that currently no SDP-Solver is linked to the binary. Ensure <relaxing/SDP/freq = -1>. \n");
196 
197  BMS_CALL( BMSallocBlockMemory(blkmem, sdpisolver) );
198 
199  (*sdpisolver)->messagehdlr = messagehdlr;
200  (*sdpisolver)->blkmem = blkmem;
201  (*sdpisolver)->bufmem = bufmem;
202 
203  return SCIP_OKAY;
204 }
205 
207 SCIP_RETCODE SCIPsdpiSolverFree(
208  SCIP_SDPISOLVER** sdpisolver
209  )
210 {
211  assert( sdpisolver != NULL );
212  assert( *sdpisolver != NULL );
213  SCIPdebugMessage("Freeing SDPISolver\n");
214 
215  BMSfreeBlockMemory((*sdpisolver)->blkmem, sdpisolver);
216 
217  return SCIP_OKAY;
218 }
219 
222  SCIP_SDPISOLVER* sdpisolver
223  )
224 {
225  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
226 
227  return SCIP_OKAY;
228 }
229 
232  SCIP_SDPISOLVER* sdpisolver
233  )
234 {
235  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
236 
237  return SCIP_OKAY;
238 }
239 
243 /*
244  * Solving Methods
245  */
246 
266  SCIP_SDPISOLVER* sdpisolver,
267  int nvars,
268  SCIP_Real* obj,
269  SCIP_Real* lb,
270  SCIP_Real* ub,
271  int nsdpblocks,
272  int* sdpblocksizes,
273  int* sdpnblockvars,
274  int sdpconstnnonz,
275  int* sdpconstnblocknonz,
277  int** sdpconstrow,
278  int** sdpconstcol,
279  SCIP_Real** sdpconstval,
280  int sdpnnonz,
281  int** sdpnblockvarnonz,
283  int** sdpvar,
285  int*** sdprow,
286  int*** sdpcol,
287  SCIP_Real*** sdpval,
288  int** indchanges,
290  int* nremovedinds,
291  int* blockindchanges,
292  int nremovedblocks,
293  int nlpcons,
294  int noldlpcons,
295  SCIP_Real* lplhs,
296  SCIP_Real* lprhs,
297  int* rownactivevars,
298  int lpnnonz,
299  int* lprow,
300  int* lpcol,
301  SCIP_Real* lpval,
302  SCIP_Real* starty,
303  int* startZnblocknonz,
305  int** startZrow,
307  int** startZcol,
309  SCIP_Real** startZval,
311  int* startXnblocknonz,
313  int** startXrow,
315  int** startXcol,
317  SCIP_Real** startXval,
319  SCIP_SDPSOLVERSETTING startsettings,
321  SCIP_Real timelimit
322  )
323 {
324  errorMessage();
325 
326  return SCIP_OKAY;
327 }
328 
352  SCIP_SDPISOLVER* sdpisolver,
353  SCIP_Real penaltyparam,
354  SCIP_Bool withobj,
355  SCIP_Bool rbound,
356  int nvars,
357  SCIP_Real* obj,
358  SCIP_Real* lb,
359  SCIP_Real* ub,
360  int nsdpblocks,
361  int* sdpblocksizes,
362  int* sdpnblockvars,
363  int sdpconstnnonz,
364  int* sdpconstnblocknonz,
366  int** sdpconstrow,
367  int** sdpconstcol,
368  SCIP_Real** sdpconstval,
369  int sdpnnonz,
370  int** sdpnblockvarnonz,
372  int** sdpvar,
374  int*** sdprow,
375  int*** sdpcol,
376  SCIP_Real*** sdpval,
377  int** indchanges,
379  int* nremovedinds,
380  int* blockindchanges,
381  int nremovedblocks,
382  int nlpcons,
383  int noldlpcons,
384  SCIP_Real* lplhs,
385  SCIP_Real* lprhs,
386  int* rownactivevars,
387  int lpnnonz,
388  int* lprow,
389  int* lpcol,
390  SCIP_Real* lpval,
391  SCIP_Real* starty,
392  int* startZnblocknonz,
394  int** startZrow,
396  int** startZcol,
398  SCIP_Real** startZval,
400  int* startXnblocknonz,
402  int** startXrow,
404  int** startXcol,
406  SCIP_Real** startXval,
408  SCIP_SDPSOLVERSETTING startsettings,
410  SCIP_Real timelimit,
411  SCIP_Bool* feasorig,
413  SCIP_Bool* penaltybound
415  )
416 {
417  errorMessage();
418 
419  return SCIP_OKAY;
420 }
426 /*
427  * Solution Information Methods
428  */
429 
435  SCIP_SDPISOLVER* sdpisolver
436  )
437 {
439 
440  return FALSE;
441 }
442 
450  SCIP_SDPISOLVER* sdpisolver
451  )
452 {
454 
455  return FALSE;
456 }
457 
460  SCIP_SDPISOLVER* sdpisolver,
461  SCIP_Bool* primalfeasible,
462  SCIP_Bool* dualfeasible
463  )
464 {
466 
467  return SCIP_PLUGINNOTFOUND;
468 }
469 
473  SCIP_SDPISOLVER* sdpisolver
474  )
475 {
477 
478  return FALSE;
479 }
480 
484  SCIP_SDPISOLVER* sdpisolver
485  )
486 {
488 
489  return FALSE;
490 }
491 
495  SCIP_SDPISOLVER* sdpisolver
496  )
497 {
499 
500  return FALSE;
501 }
502 
506  SCIP_SDPISOLVER* sdpisolver
507  )
508 {
510 
511  return FALSE;
512 }
513 
517  SCIP_SDPISOLVER* sdpisolver
518  )
519 {
521 
522  return FALSE;
523 }
524 
528  SCIP_SDPISOLVER* sdpisolver
529  )
530 {
532 
533  return FALSE;
534 }
535 
538  SCIP_SDPISOLVER* sdpisolver
539  )
540 {
542 
543  return FALSE;
544 }
545 
548  SCIP_SDPISOLVER* sdpisolver
549  )
550 {
552 
553  return FALSE;
554 }
555 
558  SCIP_SDPISOLVER* sdpisolver
559  )
560 {
562 
563  return FALSE;
564 }
565 
568  SCIP_SDPISOLVER* sdpisolver
569  )
570 {
572 
573  return FALSE;
574 }
575 
587  SCIP_SDPISOLVER* sdpisolver
588  )
589 {
591 
592  return -2;
593 }
594 
597  SCIP_SDPISOLVER* sdpisolver
598  )
599 {
601 
602  return FALSE;
603 }
604 
608  SCIP_SDPISOLVER* sdpisolver
609  )
610 {
612 
613  return FALSE;
614 }
615 
618  SCIP_SDPISOLVER* sdpisolver,
619  SCIP_Bool* success
620  )
621 {
623 
624  return SCIP_PLUGINNOTFOUND;
625 }
626 
629  SCIP_SDPISOLVER* sdpisolver,
630  SCIP_Real* objval
631  )
632 {
634 
635  return SCIP_PLUGINNOTFOUND;
636 }
637 
642 SCIP_RETCODE SCIPsdpiSolverGetSol(
643  SCIP_SDPISOLVER* sdpisolver,
644  SCIP_Real* objval,
645  SCIP_Real* dualsol,
646  int* dualsollength
648  )
649 {
651 
652  return SCIP_PLUGINNOTFOUND;
653 }
654 
655 
658  SCIP_SDPISOLVER* sdpisolver,
659  int nblocks,
660  int* startXnblocknonz
662  )
663 {
665 
666  return SCIP_PLUGINNOTFOUND;
667 }
668 
677  SCIP_SDPISOLVER* sdpisolver,
678  SCIP_Bool* success,
679  SCIP_Real* dualsol,
680  int* dualsollength,
682  int nblocks,
683  int* startXnblocknonz,
685  int** startXrow,
686  int** startXcol,
687  SCIP_Real** startXval
688  )
689 {
691 
692  return SCIP_PLUGINNOTFOUND;
693 }
694 
703  SCIP_SDPISOLVER* sdpisolver,
704  SCIP_Real* lbvars,
705  SCIP_Real* ubvars,
706  int* arraylength
708  )
709 {
711 
712  return SCIP_PLUGINNOTFOUND;
713 }
714 
717  SCIP_SDPISOLVER* sdpisolver,
718  int nblocks,
719  int* startXnblocknonz
720  )
721 {
723 
724  return SCIP_PLUGINNOTFOUND;
725 }
726 
732  SCIP_SDPISOLVER* sdpisolver,
733  int nblocks,
734  int* startXnblocknonz,
736  int** startXrow,
737  int** startXcol,
738  SCIP_Real** startXval
739  )
740 {
742 
743  return SCIP_PLUGINNOTFOUND;
744 }
745 
748  SCIP_SDPISOLVER* sdpisolver
749  )
750 {
752 
753  return SCIP_PLUGINNOTFOUND;
754 }
755 
758  SCIP_SDPISOLVER* sdpisolver,
759  int* iterations
760  )
761 {
763 
764  return SCIP_PLUGINNOTFOUND;
765 }
766 
769  SCIP_SDPISOLVER* sdpisolver,
770  int* calls
771  )
772 {
774 
775  return SCIP_PLUGINNOTFOUND;
776 }
777 
780  SCIP_SDPISOLVER* sdpisolver,
781  SCIP_SDPSOLVERSETTING* usedsetting
782  )
783 {
785 
786  return SCIP_PLUGINNOTFOUND;
787 }
788 
794 /*
795  * Numerical Methods
796  */
797 
803  SCIP_SDPISOLVER* sdpisolver
804  )
805 {
806  return 1E+20; /* default infinity from SCIP */
807 }
808 
811  SCIP_SDPISOLVER* sdpisolver,
812  SCIP_Real val
813  )
814 {
815  return ((val <= -SCIPsdpiSolverInfinity(sdpisolver)) || (val >= SCIPsdpiSolverInfinity(sdpisolver)));
816 }
817 
820  SCIP_SDPISOLVER* sdpisolver,
821  SCIP_SDPPARAM type,
822  SCIP_Real* dval
823  )
824 {
825  assert( sdpisolver != NULL );
826  assert( dval != NULL );
827 
828  switch( type )
829  {
830  case SCIP_SDPPAR_EPSILON:
831  *dval = sdpisolver->epsilon;
832  break;
833  case SCIP_SDPPAR_GAPTOL:
834  *dval = sdpisolver->gaptol;
835  break;
836  case SCIP_SDPPAR_FEASTOL:
837  *dval = sdpisolver->feastol;
838  break;
840  *dval = sdpisolver->sdpsolverfeastol;
841  break;
843  *dval = sdpisolver->objlimit;
844  break;
845  default:
846  return SCIP_PARAMETERUNKNOWN;
847  }
848 
849  return SCIP_OKAY;
850 }
851 
854  SCIP_SDPISOLVER* sdpisolver,
855  SCIP_SDPPARAM type,
856  SCIP_Real dval
857  )
858 {
859  assert( sdpisolver != NULL );
860 
861  switch( type )
862  {
863  case SCIP_SDPPAR_EPSILON:
864  sdpisolver->epsilon = dval;
865  SCIPdebugMessage("Setting sdpisolver epsilon to %f.\n", dval);
866  break;
867  case SCIP_SDPPAR_GAPTOL:
868  sdpisolver->gaptol = dval;
869  SCIPdebugMessage("Setting sdpisolver gaptol to %f.\n", dval);
870  break;
871  case SCIP_SDPPAR_FEASTOL:
872  sdpisolver->feastol = dval;
873  SCIPdebugMessage("Setting sdpisolver feastol to %f.\n", dval);
874  break;
876  sdpisolver->sdpsolverfeastol = dval;
877  SCIPdebugMessage("Setting sdpisolver sdpsolverfeastol to %f.\n", dval);
878  break;
880  SCIPdebugMessage("Setting sdpisolver objlimit to %f.\n", dval);
881  sdpisolver->objlimit = dval;
882  break;
883  default:
884  return SCIP_PARAMETERUNKNOWN;
885  }
886 
887  return SCIP_OKAY;
888 }
889 
892  SCIP_SDPISOLVER* sdpisolver,
893  SCIP_SDPPARAM type,
894  int* ival
895  )
896 {
897  assert( sdpisolver != NULL );
898 
899  switch( type )
900  {
901  case SCIP_SDPPAR_SDPINFO:
902  *ival = (int) sdpisolver->sdpinfo;
903  SCIPdebugMessage("Getting sdpisolver information output (%d).\n", *ival);
904  break;
905  default:
906  return SCIP_PARAMETERUNKNOWN;
907  }
908 
909  return SCIP_OKAY;
910 }
911 
914  SCIP_SDPISOLVER* sdpisolver,
915  SCIP_SDPPARAM type,
916  int ival
917  )
918 {
919  assert( sdpisolver != NULL );
920 
921  switch( type )
922  {
923  case SCIP_SDPPAR_SDPINFO:
924  sdpisolver->sdpinfo = (SCIP_Bool) ival;
925  SCIPdebugMessage("Setting sdpisolver information output (%d).\n", ival);
926  break;
927  default:
928  return SCIP_PARAMETERUNKNOWN;
929  }
930 
931  return SCIP_OKAY;
932 }
933 
936  SCIP_SDPISOLVER* sdpisolver,
937  SCIP_Real maxguess
938  )
939 {
940  SCIPdebugMessage("Lambdastar parameter only used by SDPA.");
941 
942  return SCIP_OKAY;
943 }
944 
947  SCIP_SDPISOLVER* sdpisolver,
948  SCIP_Real maxcoeff,
949  SCIP_Real* penaltyparam
950  )
951 {
952  assert( penaltyparam != NULL );
953 
954  *penaltyparam = 1E+10;
955 
956  return SCIP_OKAY;
957 }
958 
961  SCIP_SDPISOLVER* sdpisolver,
962  SCIP_Real penaltyparam,
963  SCIP_Real* maxpenaltyparam
964  )
965 {
966  assert( maxpenaltyparam != NULL );
967 
968  *maxpenaltyparam = 1E+10;
969 
970  return SCIP_OKAY;
971 }
972 
978 /*
979  * File Interface Methods
980  */
981 
987  SCIP_SDPISOLVER* sdpisolver,
988  const char* fname
989  )
990 {
992 
993  return SCIP_PLUGINNOTFOUND;
994 }
995 
998  SCIP_SDPISOLVER* sdpisolver,
999  const char* fname
1000  )
1001 {
1003 
1004  return SCIP_PLUGINNOTFOUND;
1005 }
1006 
SCIP_Bool SCIPsdpiSolverDoesWarmstartNeedPrimal(void)
SCIP_RETCODE SCIPsdpiSolverIgnoreInstability(SCIP_SDPISOLVER *sdpisolver, SCIP_Bool *success)
SCIP_Bool SCIPsdpiSolverIsOptimal(SCIP_SDPISOLVER *sdpisolver)
SCIP_Real SCIPsdpiSolverGetMaxPrimalEntry(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)
SCIP_RETCODE SCIPsdpiSolverGetPrimalNonzeros(SCIP_SDPISOLVER *sdpisolver, int nblocks, int *startXnblocknonz)
const char * SCIPsdpiSolverGetSolverDesc(void)
SCIP_RETCODE SCIPsdpiSolverGetPrimalMatrix(SCIP_SDPISOLVER *sdpisolver, int nblocks, int *startXnblocknonz, int **startXrow, int **startXcol, SCIP_Real **startXval)
SCIP_Bool SCIPsdpiSolverIsPrimalInfeasible(SCIP_SDPISOLVER *sdpisolver)
enum SCIP_SDPSolverSetting SCIP_SDPSOLVERSETTING
Definition: type_sdpi.h:80
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)
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 *starty, int *startZnblocknonz, int **startZrow, int **startZcol, SCIP_Real **startZval, int *startXnblocknonz, int **startXrow, int **startXcol, SCIP_Real **startXval, SCIP_SDPSOLVERSETTING startsettings, SCIP_Real timelimit)
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 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 SCIPsdpiSolverGetSdpCalls(SCIP_SDPISOLVER *sdpisolver, int *calls)
void * SCIPsdpiSolverGetSolverPointer(SCIP_SDPISOLVER *sdpisolver)
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 *starty, int *startZnblocknonz, int **startZrow, int **startZcol, SCIP_Real **startZval, int *startXnblocknonz, int **startXrow, int **startXcol, SCIP_Real **startXval, SCIP_SDPSOLVERSETTING startsettings, SCIP_Real timelimit, SCIP_Bool *feasorig, SCIP_Bool *penaltybound)
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_Real SCIPsdpiSolverGetDefaultSdpiSolverGaptol(void)
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 SCIPsdpiSolverGetPreoptimalPrimalNonzeros(SCIP_SDPISOLVER *sdpisolver, int nblocks, int *startXnblocknonz)
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)
SCIP_RETCODE SCIPsdpiSolverGetPreoptimalSol(SCIP_SDPISOLVER *sdpisolver, SCIP_Bool *success, SCIP_Real *dualsol, int *dualsollength, int nblocks, int *startXnblocknonz, int **startXrow, int **startXcol, SCIP_Real **startXval)
enum SCIP_SDPParam SCIP_SDPPARAM
Definition: type_sdpi.h:69
static void errorMessage(void)
SCIP_RETCODE SCIPsdpiSolverComputePenaltyparam(SCIP_SDPISOLVER *sdpisolver, SCIP_Real maxcoeff, SCIP_Real *penaltyparam)
SCIP_Bool SCIPsdpiSolverIsIterlimExc(SCIP_SDPISOLVER *sdpisolver)