SCIP-SDP  3.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 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 1E-4;
154 }
155 
158  void
159  )
160 {
161  return 8;
162 }
163 
166  void
167  )
168 {
169  return FALSE;
170 }
171 
175 /*
176  * SDPI Creation and Destruction Methods
177  */
178 
183 SCIP_RETCODE SCIPsdpiSolverCreate(
184  SCIP_SDPISOLVER** sdpisolver,
185  SCIP_MESSAGEHDLR* messagehdlr,
186  BMS_BLKMEM* blkmem,
187  BMS_BUFMEM* bufmem
188  )
189 {
190  assert( sdpisolver != NULL );
191  assert( blkmem != NULL );
192  assert( bufmem != NULL );
193  SCIPdebugMessage("Calling SCIPsdpiCreate \n");
194  SCIPdebugMessage("Note that currently no SDP-Solver is linked to the binary. Ensure <relaxing/SDP/freq = -1>. \n");
195 
196  BMS_CALL( BMSallocBlockMemory(blkmem, sdpisolver) );
197 
198  (*sdpisolver)->messagehdlr = messagehdlr;
199  (*sdpisolver)->blkmem = blkmem;
200  (*sdpisolver)->bufmem = bufmem;
201 
202  return SCIP_OKAY;
203 }
204 
206 SCIP_RETCODE SCIPsdpiSolverFree(
207  SCIP_SDPISOLVER** sdpisolver
208  )
209 {
210  assert( sdpisolver != NULL );
211  assert( *sdpisolver != NULL );
212  SCIPdebugMessage("Freeing SDPISolver\n");
213 
214  BMSfreeBlockMemory((*sdpisolver)->blkmem, sdpisolver);
215 
216  return SCIP_OKAY;
217 }
218 
221  SCIP_SDPISOLVER* sdpisolver
222  )
223 {
224  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
225 
226  return SCIP_OKAY;
227 }
228 
231  SCIP_SDPISOLVER* sdpisolver
232  )
233 {
234  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
235 
236  return SCIP_OKAY;
237 }
238 
242 /*
243  * Solving Methods
244  */
245 
265  SCIP_SDPISOLVER* sdpisolver,
266  int nvars,
267  SCIP_Real* obj,
268  SCIP_Real* lb,
269  SCIP_Real* ub,
270  int nsdpblocks,
271  int* sdpblocksizes,
272  int* sdpnblockvars,
273  int sdpconstnnonz,
274  int* sdpconstnblocknonz,
276  int** sdpconstrow,
277  int** sdpconstcol,
278  SCIP_Real** sdpconstval,
279  int sdpnnonz,
280  int** sdpnblockvarnonz,
282  int** sdpvar,
284  int*** sdprow,
285  int*** sdpcol,
286  SCIP_Real*** sdpval,
287  int** indchanges,
289  int* nremovedinds,
290  int* blockindchanges,
291  int nremovedblocks,
292  int nlpcons,
293  int noldlpcons,
294  SCIP_Real* lplhs,
295  SCIP_Real* lprhs,
296  int* rownactivevars,
297  int lpnnonz,
298  int* lprow,
299  int* lpcol,
300  SCIP_Real* lpval,
301  SCIP_Real* starty,
302  int* startZnblocknonz,
304  int** startZrow,
306  int** startZcol,
308  SCIP_Real** startZval,
310  int* startXnblocknonz,
312  int** startXrow,
314  int** startXcol,
316  SCIP_Real** startXval,
318  SCIP_SDPSOLVERSETTING startsettings,
320  SCIP_Real timelimit
321  )
322 {
323  errorMessage();
324 
325  return SCIP_OKAY;
326 }
327 
351  SCIP_SDPISOLVER* sdpisolver,
352  SCIP_Real penaltyparam,
353  SCIP_Bool withobj,
354  SCIP_Bool rbound,
355  int nvars,
356  SCIP_Real* obj,
357  SCIP_Real* lb,
358  SCIP_Real* ub,
359  int nsdpblocks,
360  int* sdpblocksizes,
361  int* sdpnblockvars,
362  int sdpconstnnonz,
363  int* sdpconstnblocknonz,
365  int** sdpconstrow,
366  int** sdpconstcol,
367  SCIP_Real** sdpconstval,
368  int sdpnnonz,
369  int** sdpnblockvarnonz,
371  int** sdpvar,
373  int*** sdprow,
374  int*** sdpcol,
375  SCIP_Real*** sdpval,
376  int** indchanges,
378  int* nremovedinds,
379  int* blockindchanges,
380  int nremovedblocks,
381  int nlpcons,
382  int noldlpcons,
383  SCIP_Real* lplhs,
384  SCIP_Real* lprhs,
385  int* rownactivevars,
386  int lpnnonz,
387  int* lprow,
388  int* lpcol,
389  SCIP_Real* lpval,
390  SCIP_Real* starty,
391  int* startZnblocknonz,
393  int** startZrow,
395  int** startZcol,
397  SCIP_Real** startZval,
399  int* startXnblocknonz,
401  int** startXrow,
403  int** startXcol,
405  SCIP_Real** startXval,
407  SCIP_SDPSOLVERSETTING startsettings,
409  SCIP_Real timelimit,
410  SCIP_Bool* feasorig,
412  SCIP_Bool* penaltybound
414  )
415 {
416  errorMessage();
417 
418  return SCIP_OKAY;
419 }
425 /*
426  * Solution Information Methods
427  */
428 
434  SCIP_SDPISOLVER* sdpisolver
435  )
436 {
438 
439  return FALSE;
440 }
441 
449  SCIP_SDPISOLVER* sdpisolver
450  )
451 {
453 
454  return FALSE;
455 }
456 
459  SCIP_SDPISOLVER* sdpisolver,
460  SCIP_Bool* primalfeasible,
461  SCIP_Bool* dualfeasible
462  )
463 {
465 
466  return SCIP_PLUGINNOTFOUND;
467 }
468 
472  SCIP_SDPISOLVER* sdpisolver
473  )
474 {
476 
477  return FALSE;
478 }
479 
483  SCIP_SDPISOLVER* sdpisolver
484  )
485 {
487 
488  return FALSE;
489 }
490 
494  SCIP_SDPISOLVER* sdpisolver
495  )
496 {
498 
499  return FALSE;
500 }
501 
505  SCIP_SDPISOLVER* sdpisolver
506  )
507 {
509 
510  return FALSE;
511 }
512 
516  SCIP_SDPISOLVER* sdpisolver
517  )
518 {
520 
521  return FALSE;
522 }
523 
527  SCIP_SDPISOLVER* sdpisolver
528  )
529 {
531 
532  return FALSE;
533 }
534 
537  SCIP_SDPISOLVER* sdpisolver
538  )
539 {
541 
542  return FALSE;
543 }
544 
547  SCIP_SDPISOLVER* sdpisolver
548  )
549 {
551 
552  return FALSE;
553 }
554 
557  SCIP_SDPISOLVER* sdpisolver
558  )
559 {
561 
562  return FALSE;
563 }
564 
567  SCIP_SDPISOLVER* sdpisolver
568  )
569 {
571 
572  return FALSE;
573 }
574 
586  SCIP_SDPISOLVER* sdpisolver
587  )
588 {
590 
591  return -2;
592 }
593 
596  SCIP_SDPISOLVER* sdpisolver
597  )
598 {
600 
601  return FALSE;
602 }
603 
607  SCIP_SDPISOLVER* sdpisolver
608  )
609 {
611 
612  return FALSE;
613 }
614 
617  SCIP_SDPISOLVER* sdpisolver,
618  SCIP_Bool* success
619  )
620 {
622 
623  return SCIP_PLUGINNOTFOUND;
624 }
625 
628  SCIP_SDPISOLVER* sdpisolver,
629  SCIP_Real* objval
630  )
631 {
633 
634  return SCIP_PLUGINNOTFOUND;
635 }
636 
641 SCIP_RETCODE SCIPsdpiSolverGetSol(
642  SCIP_SDPISOLVER* sdpisolver,
643  SCIP_Real* objval,
644  SCIP_Real* dualsol,
645  int* dualsollength
647  )
648 {
650 
651  return SCIP_PLUGINNOTFOUND;
652 }
653 
654 
657  SCIP_SDPISOLVER* sdpisolver,
658  int nblocks,
659  int* startXnblocknonz
661  )
662 {
664 
665  return SCIP_PLUGINNOTFOUND;
666 }
667 
676  SCIP_SDPISOLVER* sdpisolver,
677  SCIP_Bool* success,
678  SCIP_Real* dualsol,
679  int* dualsollength,
681  int nblocks,
682  int* startXnblocknonz,
684  int** startXrow,
685  int** startXcol,
686  SCIP_Real** startXval
687  )
688 {
690 
691  return SCIP_PLUGINNOTFOUND;
692 }
693 
702  SCIP_SDPISOLVER* sdpisolver,
703  SCIP_Real* lbvars,
704  SCIP_Real* ubvars,
705  int* arraylength
707  )
708 {
710 
711  return SCIP_PLUGINNOTFOUND;
712 }
713 
716  SCIP_SDPISOLVER* sdpisolver,
717  int nblocks,
718  int* startXnblocknonz
719  )
720 {
722 
723  return SCIP_PLUGINNOTFOUND;
724 }
725 
731  SCIP_SDPISOLVER* sdpisolver,
732  int nblocks,
733  int* startXnblocknonz,
735  int** startXrow,
736  int** startXcol,
737  SCIP_Real** startXval
738  )
739 {
741 
742  return SCIP_PLUGINNOTFOUND;
743 }
744 
747  SCIP_SDPISOLVER* sdpisolver
748  )
749 {
751 
752  return SCIP_PLUGINNOTFOUND;
753 }
754 
757  SCIP_SDPISOLVER* sdpisolver,
758  int* iterations
759  )
760 {
762 
763  return SCIP_PLUGINNOTFOUND;
764 }
765 
768  SCIP_SDPISOLVER* sdpisolver,
769  int* calls
770  )
771 {
773 
774  return SCIP_PLUGINNOTFOUND;
775 }
776 
779  SCIP_SDPISOLVER* sdpisolver,
780  SCIP_SDPSOLVERSETTING* usedsetting
781  )
782 {
784 
785  return SCIP_PLUGINNOTFOUND;
786 }
787 
793 /*
794  * Numerical Methods
795  */
796 
802  SCIP_SDPISOLVER* sdpisolver
803  )
804 {
805  return 1E+20; /* default infinity from SCIP */
806 }
807 
810  SCIP_SDPISOLVER* sdpisolver,
811  SCIP_Real val
812  )
813 {
814  return ((val <= -SCIPsdpiSolverInfinity(sdpisolver)) || (val >= SCIPsdpiSolverInfinity(sdpisolver)));
815 }
816 
819  SCIP_SDPISOLVER* sdpisolver,
820  SCIP_SDPPARAM type,
821  SCIP_Real* dval
822  )
823 {
824  assert( sdpisolver != NULL );
825  assert( dval != NULL );
826 
827  switch( type )
828  {
829  case SCIP_SDPPAR_EPSILON:
830  *dval = sdpisolver->epsilon;
831  break;
832  case SCIP_SDPPAR_GAPTOL:
833  *dval = sdpisolver->gaptol;
834  break;
835  case SCIP_SDPPAR_FEASTOL:
836  *dval = sdpisolver->feastol;
837  break;
839  *dval = sdpisolver->sdpsolverfeastol;
840  break;
842  *dval = sdpisolver->objlimit;
843  break;
844  default:
845  return SCIP_PARAMETERUNKNOWN;
846  }
847 
848  return SCIP_OKAY;
849 }
850 
853  SCIP_SDPISOLVER* sdpisolver,
854  SCIP_SDPPARAM type,
855  SCIP_Real dval
856  )
857 {
858  assert( sdpisolver != NULL );
859 
860  switch( type )
861  {
862  case SCIP_SDPPAR_EPSILON:
863  sdpisolver->epsilon = dval;
864  SCIPdebugMessage("Setting sdpisolver epsilon to %f.\n", dval);
865  break;
866  case SCIP_SDPPAR_GAPTOL:
867  sdpisolver->gaptol = dval;
868  SCIPdebugMessage("Setting sdpisolver gaptol to %f.\n", dval);
869  break;
870  case SCIP_SDPPAR_FEASTOL:
871  sdpisolver->feastol = dval;
872  SCIPdebugMessage("Setting sdpisolver feastol to %f.\n", dval);
873  break;
875  sdpisolver->sdpsolverfeastol = dval;
876  SCIPdebugMessage("Setting sdpisolver sdpsolverfeastol to %f.\n", dval);
877  break;
879  SCIPdebugMessage("Setting sdpisolver objlimit to %f.\n", dval);
880  sdpisolver->objlimit = dval;
881  break;
882  default:
883  return SCIP_PARAMETERUNKNOWN;
884  }
885 
886  return SCIP_OKAY;
887 }
888 
891  SCIP_SDPISOLVER* sdpisolver,
892  SCIP_SDPPARAM type,
893  int* ival
894  )
895 {
896  assert( sdpisolver != NULL );
897 
898  switch( type )
899  {
900  case SCIP_SDPPAR_SDPINFO:
901  *ival = (int) sdpisolver->sdpinfo;
902  SCIPdebugMessage("Getting sdpisolver information output (%d).\n", *ival);
903  break;
904  default:
905  return SCIP_PARAMETERUNKNOWN;
906  }
907 
908  return SCIP_OKAY;
909 }
910 
913  SCIP_SDPISOLVER* sdpisolver,
914  SCIP_SDPPARAM type,
915  int ival
916  )
917 {
918  assert( sdpisolver != NULL );
919 
920  switch( type )
921  {
922  case SCIP_SDPPAR_SDPINFO:
923  sdpisolver->sdpinfo = (SCIP_Bool) ival;
924  SCIPdebugMessage("Setting sdpisolver information output (%d).\n", ival);
925  break;
926  default:
927  return SCIP_PARAMETERUNKNOWN;
928  }
929 
930  return SCIP_OKAY;
931 }
932 
935  SCIP_SDPISOLVER* sdpisolver,
936  SCIP_Real maxguess
937  )
938 {
939  SCIPdebugMessage("Lambdastar parameter only used by SDPA.");
940 
941  return SCIP_OKAY;
942 }
943 
946  SCIP_SDPISOLVER* sdpisolver,
947  SCIP_Real maxcoeff,
948  SCIP_Real* penaltyparam
949  )
950 {
951  assert( penaltyparam != NULL );
952 
953  *penaltyparam = 1E+10;
954 
955  return SCIP_OKAY;
956 }
957 
960  SCIP_SDPISOLVER* sdpisolver,
961  SCIP_Real penaltyparam,
962  SCIP_Real* maxpenaltyparam
963  )
964 {
965  assert( maxpenaltyparam != NULL );
966 
967  *maxpenaltyparam = 1E+10;
968 
969  return SCIP_OKAY;
970 }
971 
977 /*
978  * File Interface Methods
979  */
980 
986  SCIP_SDPISOLVER* sdpisolver,
987  const char* fname
988  )
989 {
991 
992  return SCIP_PLUGINNOTFOUND;
993 }
994 
997  SCIP_SDPISOLVER* sdpisolver,
998  const char* fname
999  )
1000 {
1002 
1003  return SCIP_PLUGINNOTFOUND;
1004 }
1005 
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:79
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:68
static void errorMessage(void)
SCIP_RETCODE SCIPsdpiSolverComputePenaltyparam(SCIP_SDPISOLVER *sdpisolver, SCIP_Real maxcoeff, SCIP_Real *penaltyparam)
SCIP_Bool SCIPsdpiSolverIsIterlimExc(SCIP_SDPISOLVER *sdpisolver)