SCIP-SDP  3.2.0
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-2020 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-2020 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 
51 /* turn off lint warnings for whole file: */
52 /*lint --e{715,788}*/
53 
54 
56 #define BMS_CALL(x) do \
57  { \
58  if( NULL == (x) ) \
59  { \
60  SCIPerrorMessage("No memory in function call.\n"); \
61  return SCIP_NOMEMORY; \
62  } \
63  } \
64  while( FALSE )
65 
67 struct SCIP_SDPiSolver
68 {
69  SCIP_MESSAGEHDLR* messagehdlr;
70  BMS_BLKMEM* blkmem;
71  BMS_BUFMEM* bufmem;
72  SCIP_Real epsilon;
73  SCIP_Real gaptol;
74  SCIP_Real feastol;
75  SCIP_Real sdpsolverfeastol;
76  SCIP_Real objlimit;
77  SCIP_Bool sdpinfo;
78 };
79 
80 /*
81  * Local Methods
82  */
83 
85 static
87  void
88  )
89 {
90  SCIPerrorMessage("No SDP-solver available (SDP=none).\n");
91  SCIPerrorMessage("Ensure <relaxing/SDP/freq = -1>.\n");
92  SCIPABORT();
93 }
94 
96 static
98  void
99  )
100 {
101  SCIPerrorMessage("No SDP-solver available (SDP=none).\n");
102  SCIPerrorMessage("Ensure <relaxing/SDP/freq = -1>.\n");
103 }
104 
105 /*
106  * Miscellaneous Methods
107  */
108 
115  void
116  )
117 {
118  return "none";
119 }
120 
123  void
124  )
125 {
126  return "no SDP-Solver linked currently";
127 }
128 
136  SCIP_SDPISOLVER* sdpisolver
137  )
138 {
139  assert( sdpisolver != NULL );
140  return (void*) NULL;
141 }
142 
145  void
146  )
147 {
148  return 1E-6;
149 }
150 
153  void
154  )
155 {
156  return 1E-4;
157 }
158 
161  void
162  )
163 {
164  return 8;
165 }
166 
169  void
170  )
171 {
172  return FALSE;
173 }
174 
178 /*
179  * SDPI Creation and Destruction Methods
180  */
181 
186 SCIP_RETCODE SCIPsdpiSolverCreate(
187  SCIP_SDPISOLVER** sdpisolver,
188  SCIP_MESSAGEHDLR* messagehdlr,
189  BMS_BLKMEM* blkmem,
190  BMS_BUFMEM* bufmem
191  )
192 {
193  assert( sdpisolver != NULL );
194  assert( blkmem != NULL );
195  assert( bufmem != NULL );
196  SCIPdebugMessage("Calling SCIPsdpiCreate \n");
197  SCIPdebugMessage("Note that currently no SDP-Solver is linked to the binary. Ensure <relaxing/SDP/freq = -1>. \n");
198 
199  BMS_CALL( BMSallocBlockMemory(blkmem, sdpisolver) );
200 
201  (*sdpisolver)->messagehdlr = messagehdlr;
202  (*sdpisolver)->blkmem = blkmem;
203  (*sdpisolver)->bufmem = bufmem;
204 
205  return SCIP_OKAY;
206 }
207 
209 SCIP_RETCODE SCIPsdpiSolverFree(
210  SCIP_SDPISOLVER** sdpisolver
211  )
212 {
213  assert( sdpisolver != NULL );
214  assert( *sdpisolver != NULL );
215  SCIPdebugMessage("Freeing SDPISolver\n");
216 
217  BMSfreeBlockMemory((*sdpisolver)->blkmem, sdpisolver);
218 
219  return SCIP_OKAY;
220 }
221 
224  SCIP_SDPISOLVER* sdpisolver
225  )
226 {
227  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
228 
229  return SCIP_OKAY;
230 }
231 
234  SCIP_SDPISOLVER* sdpisolver
235  )
236 {
237  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
238 
239  return SCIP_OKAY;
240 }
241 
245 /*
246  * Solving Methods
247  */
248 
268  SCIP_SDPISOLVER* sdpisolver,
269  int nvars,
270  SCIP_Real* obj,
271  SCIP_Real* lb,
272  SCIP_Real* ub,
273  int nsdpblocks,
274  int* sdpblocksizes,
275  int* sdpnblockvars,
276  int sdpconstnnonz,
277  int* sdpconstnblocknonz,
279  int** sdpconstrow,
280  int** sdpconstcol,
281  SCIP_Real** sdpconstval,
282  int sdpnnonz,
283  int** sdpnblockvarnonz,
285  int** sdpvar,
287  int*** sdprow,
288  int*** sdpcol,
289  SCIP_Real*** sdpval,
290  int** indchanges,
292  int* nremovedinds,
293  int* blockindchanges,
294  int nremovedblocks,
295  int nlpcons,
296  int noldlpcons,
297  SCIP_Real* lplhs,
298  SCIP_Real* lprhs,
299  int* rownactivevars,
300  int lpnnonz,
301  int* lprow,
302  int* lpcol,
303  SCIP_Real* lpval,
304  SCIP_Real* starty,
305  int* startZnblocknonz,
307  int** startZrow,
309  int** startZcol,
311  SCIP_Real** startZval,
313  int* startXnblocknonz,
315  int** startXrow,
317  int** startXcol,
319  SCIP_Real** startXval,
321  SCIP_SDPSOLVERSETTING startsettings,
323  SCIP_Real timelimit
324  )
325 {
326  errorMessage();
327 
328  return SCIP_OKAY;
329 }
330 
354  SCIP_SDPISOLVER* sdpisolver,
355  SCIP_Real penaltyparam,
356  SCIP_Bool withobj,
357  SCIP_Bool rbound,
358  int nvars,
359  SCIP_Real* obj,
360  SCIP_Real* lb,
361  SCIP_Real* ub,
362  int nsdpblocks,
363  int* sdpblocksizes,
364  int* sdpnblockvars,
365  int sdpconstnnonz,
366  int* sdpconstnblocknonz,
368  int** sdpconstrow,
369  int** sdpconstcol,
370  SCIP_Real** sdpconstval,
371  int sdpnnonz,
372  int** sdpnblockvarnonz,
374  int** sdpvar,
376  int*** sdprow,
377  int*** sdpcol,
378  SCIP_Real*** sdpval,
379  int** indchanges,
381  int* nremovedinds,
382  int* blockindchanges,
383  int nremovedblocks,
384  int nlpcons,
385  int noldlpcons,
386  SCIP_Real* lplhs,
387  SCIP_Real* lprhs,
388  int* rownactivevars,
389  int lpnnonz,
390  int* lprow,
391  int* lpcol,
392  SCIP_Real* lpval,
393  SCIP_Real* starty,
394  int* startZnblocknonz,
396  int** startZrow,
398  int** startZcol,
400  SCIP_Real** startZval,
402  int* startXnblocknonz,
404  int** startXrow,
406  int** startXcol,
408  SCIP_Real** startXval,
410  SCIP_SDPSOLVERSETTING startsettings,
412  SCIP_Real timelimit,
413  SCIP_Bool* feasorig,
415  SCIP_Bool* penaltybound
417  )
418 {
419  errorMessage();
420 
421  return SCIP_OKAY;
422 }
428 /*
429  * Solution Information Methods
430  */
431 
437  SCIP_SDPISOLVER* sdpisolver
438  )
439 {
441 
442  return FALSE;
443 }
444 
452  SCIP_SDPISOLVER* sdpisolver
453  )
454 {
456 
457  return FALSE;
458 }
459 
462  SCIP_SDPISOLVER* sdpisolver,
463  SCIP_Bool* primalfeasible,
464  SCIP_Bool* dualfeasible
465  )
466 {
468 
469  return SCIP_PLUGINNOTFOUND;
470 }
471 
476  SCIP_SDPISOLVER* sdpisolver
477  )
478 {
480 
481  return FALSE;
482 }
483 
488  SCIP_SDPISOLVER* sdpisolver
489  )
490 {
492 
493  return FALSE;
494 }
495 
500  SCIP_SDPISOLVER* sdpisolver
501  )
502 {
504 
505  return FALSE;
506 }
507 
512  SCIP_SDPISOLVER* sdpisolver
513  )
514 {
516 
517  return FALSE;
518 }
519 
524  SCIP_SDPISOLVER* sdpisolver
525  )
526 {
528 
529  return FALSE;
530 }
531 
536  SCIP_SDPISOLVER* sdpisolver
537  )
538 {
540 
541  return FALSE;
542 }
543 
546  SCIP_SDPISOLVER* sdpisolver
547  )
548 {
550 
551  return FALSE;
552 }
553 
556  SCIP_SDPISOLVER* sdpisolver
557  )
558 {
560 
561  return FALSE;
562 }
563 
566  SCIP_SDPISOLVER* sdpisolver
567  )
568 {
570 
571  return FALSE;
572 }
573 
576  SCIP_SDPISOLVER* sdpisolver
577  )
578 {
580 
581  return FALSE;
582 }
583 
596  SCIP_SDPISOLVER* sdpisolver
597  )
598 {
600 
601  return -2;
602 }
603 
606  SCIP_SDPISOLVER* sdpisolver
607  )
608 {
610 
611  return FALSE;
612 }
613 
618  SCIP_SDPISOLVER* sdpisolver
619  )
620 {
622 
623  return FALSE;
624 }
625 
628  SCIP_SDPISOLVER* sdpisolver,
629  SCIP_Bool* success
630  )
631 {
633 
634  return SCIP_PLUGINNOTFOUND;
635 }
636 
639  SCIP_SDPISOLVER* sdpisolver,
640  SCIP_Real* objval
641  )
642 {
644 
645  return SCIP_PLUGINNOTFOUND;
646 }
647 
652 SCIP_RETCODE SCIPsdpiSolverGetSol(
653  SCIP_SDPISOLVER* sdpisolver,
654  SCIP_Real* objval,
655  SCIP_Real* dualsol,
656  int* dualsollength
658  )
659 {
661 
662  return SCIP_PLUGINNOTFOUND;
663 }
664 
665 
668  SCIP_SDPISOLVER* sdpisolver,
669  int nblocks,
670  int* startXnblocknonz
672  )
673 {
675 
676  return SCIP_PLUGINNOTFOUND;
677 }
678 
687  SCIP_SDPISOLVER* sdpisolver,
688  SCIP_Bool* success,
689  SCIP_Real* dualsol,
690  int* dualsollength,
692  int nblocks,
693  int* startXnblocknonz,
695  int** startXrow,
696  int** startXcol,
697  SCIP_Real** startXval
698  )
699 {
701 
702  return SCIP_PLUGINNOTFOUND;
703 }
704 
713  SCIP_SDPISOLVER* sdpisolver,
714  SCIP_Real* lbvars,
715  SCIP_Real* ubvars,
716  int* arraylength
718  )
719 {
721 
722  return SCIP_PLUGINNOTFOUND;
723 }
724 
727  SCIP_SDPISOLVER* sdpisolver,
728  int nblocks,
729  int* startXnblocknonz
730  )
731 {
733 
734  return SCIP_PLUGINNOTFOUND;
735 }
736 
744  SCIP_SDPISOLVER* sdpisolver,
745  int nblocks,
746  int* startXnblocknonz,
748  int** startXrow,
749  int** startXcol,
750  SCIP_Real** startXval
751  )
752 {
754 
755  return SCIP_PLUGINNOTFOUND;
756 }
757 
760  SCIP_SDPISOLVER* sdpisolver
761  )
762 {
764 
765  return 0.0;
766 }
767 
770  SCIP_SDPISOLVER* sdpisolver,
771  int* iterations
772  )
773 {
775 
776  return SCIP_PLUGINNOTFOUND;
777 }
778 
781  SCIP_SDPISOLVER* sdpisolver,
782  int* calls
783  )
784 {
786 
787  return SCIP_PLUGINNOTFOUND;
788 }
789 
792  SCIP_SDPISOLVER* sdpisolver,
793  SCIP_SDPSOLVERSETTING* usedsetting
794  )
795 {
797 
798  return SCIP_PLUGINNOTFOUND;
799 }
800 
806 /*
807  * Numerical Methods
808  */
809 
815  SCIP_SDPISOLVER* sdpisolver
816  )
817 {
818  return 1E+20; /* default infinity from SCIP */
819 }
820 
823  SCIP_SDPISOLVER* sdpisolver,
824  SCIP_Real val
825  )
826 {
827  return ((val <= -SCIPsdpiSolverInfinity(sdpisolver)) || (val >= SCIPsdpiSolverInfinity(sdpisolver)));
828 }
829 
832  SCIP_SDPISOLVER* sdpisolver,
833  SCIP_SDPPARAM type,
834  SCIP_Real* dval
835  )
836 {
837  assert( sdpisolver != NULL );
838  assert( dval != NULL );
839 
840  switch( type )
841  {
842  case SCIP_SDPPAR_EPSILON:
843  *dval = sdpisolver->epsilon;
844  break;
845  case SCIP_SDPPAR_GAPTOL:
846  *dval = sdpisolver->gaptol;
847  break;
848  case SCIP_SDPPAR_FEASTOL:
849  *dval = sdpisolver->feastol;
850  break;
852  *dval = sdpisolver->sdpsolverfeastol;
853  break;
855  *dval = sdpisolver->objlimit;
856  break;
857  default:
858  return SCIP_PARAMETERUNKNOWN;
859  }
860 
861  return SCIP_OKAY;
862 }
863 
866  SCIP_SDPISOLVER* sdpisolver,
867  SCIP_SDPPARAM type,
868  SCIP_Real dval
869  )
870 {
871  assert( sdpisolver != NULL );
872 
873  switch( type )
874  {
875  case SCIP_SDPPAR_EPSILON:
876  sdpisolver->epsilon = dval;
877  SCIPdebugMessage("Setting sdpisolver epsilon to %f.\n", dval);
878  break;
879  case SCIP_SDPPAR_GAPTOL:
880  sdpisolver->gaptol = dval;
881  SCIPdebugMessage("Setting sdpisolver gaptol to %f.\n", dval);
882  break;
883  case SCIP_SDPPAR_FEASTOL:
884  sdpisolver->feastol = dval;
885  SCIPdebugMessage("Setting sdpisolver feastol to %f.\n", dval);
886  break;
888  sdpisolver->sdpsolverfeastol = dval;
889  SCIPdebugMessage("Setting sdpisolver sdpsolverfeastol to %f.\n", dval);
890  break;
892  SCIPdebugMessage("Setting sdpisolver objlimit to %f.\n", dval);
893  sdpisolver->objlimit = dval;
894  break;
895  default:
896  return SCIP_PARAMETERUNKNOWN;
897  }
898 
899  return SCIP_OKAY;
900 }
901 
904  SCIP_SDPISOLVER* sdpisolver,
905  SCIP_SDPPARAM type,
906  int* ival
907  )
908 {
909  assert( sdpisolver != NULL );
910 
911  switch( type )
912  {
913  case SCIP_SDPPAR_SDPINFO:
914  *ival = (int) sdpisolver->sdpinfo;
915  SCIPdebugMessage("Getting sdpisolver information output (%d).\n", *ival);
916  break;
917  default:
918  return SCIP_PARAMETERUNKNOWN;
919  }
920 
921  return SCIP_OKAY;
922 }
923 
926  SCIP_SDPISOLVER* sdpisolver,
927  SCIP_SDPPARAM type,
928  int ival
929  )
930 {
931  assert( sdpisolver != NULL );
932 
933  switch( type )
934  {
935  case SCIP_SDPPAR_SDPINFO:
936  sdpisolver->sdpinfo = (SCIP_Bool) ival;
937  SCIPdebugMessage("Setting sdpisolver information output (%d).\n", ival);
938  break;
939  default:
940  return SCIP_PARAMETERUNKNOWN;
941  }
942 
943  return SCIP_OKAY;
944 }
945 
948  SCIP_SDPISOLVER* sdpisolver,
949  SCIP_Real maxguess
950  )
951 {
952  SCIPdebugMessage("Lambdastar parameter only used by SDPA.");
953 
954  return SCIP_OKAY;
955 }
956 
959  SCIP_SDPISOLVER* sdpisolver,
960  SCIP_Real maxcoeff,
961  SCIP_Real* penaltyparam
962  )
963 {
964  assert( penaltyparam != NULL );
965 
966  *penaltyparam = 1E+10;
967 
968  return SCIP_OKAY;
969 }
970 
973  SCIP_SDPISOLVER* sdpisolver,
974  SCIP_Real penaltyparam,
975  SCIP_Real* maxpenaltyparam
976  )
977 {
978  assert( maxpenaltyparam != NULL );
979 
980  *maxpenaltyparam = 1E+10;
981 
982  return SCIP_OKAY;
983 }
984 
990 /*
991  * File Interface Methods
992  */
993 
999  SCIP_SDPISOLVER* sdpisolver,
1000  const char* fname
1001  )
1002 {
1004 
1005  return SCIP_PLUGINNOTFOUND;
1006 }
1007 
1010  SCIP_SDPISOLVER* sdpisolver,
1011  const char* fname
1012  )
1013 {
1015 
1016  return SCIP_PLUGINNOTFOUND;
1017 }
1018 
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)