SCIP-SDP  4.0.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-2021 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-2021 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
86 SCIP_RETCODE errorMessageAbort(
87  void
88  )
89 {
90  SCIPerrorMessage("No SDP-solver available (SDP=none). Ensure <relaxing/SDP/freq = -1>.\n");
91  return SCIP_ERROR;
92 }
93 
94 
95 /*
96  * Miscellaneous Methods
97  */
98 
105  void
106  )
107 {
108  return "none";
109 }
110 
113  void
114  )
115 {
116  return "no SDP-Solver linked currently";
117 }
118 
126  SCIP_SDPISOLVER* sdpisolver
127  )
128 {
129  assert( sdpisolver != NULL );
130  return (void*) NULL;
131 }
132 
135  void
136  )
137 {
138  return 8;
139 }
140 
143  void
144  )
145 {
146  return FALSE;
147 }
148 
152 /*
153  * SDPI Creation and Destruction Methods
154  */
155 
160 SCIP_RETCODE SCIPsdpiSolverCreate(
161  SCIP_SDPISOLVER** sdpisolver,
162  SCIP_MESSAGEHDLR* messagehdlr,
163  BMS_BLKMEM* blkmem,
164  BMS_BUFMEM* bufmem
165  )
166 {
167  assert( sdpisolver != NULL );
168  assert( blkmem != NULL );
169  assert( bufmem != NULL );
170  SCIPdebugMessage("Calling SCIPsdpiCreate \n");
171  SCIPdebugMessage("Note that currently no SDP-Solver is linked to the binary. Ensure <relaxing/SDP/freq = -1>. \n");
172 
173  BMS_CALL( BMSallocBlockMemory(blkmem, sdpisolver) );
174 
175  (*sdpisolver)->messagehdlr = messagehdlr;
176  (*sdpisolver)->blkmem = blkmem;
177  (*sdpisolver)->bufmem = bufmem;
178 
179  return SCIP_OKAY;
180 }
181 
183 SCIP_RETCODE SCIPsdpiSolverFree(
184  SCIP_SDPISOLVER** sdpisolver
185  )
186 {
187  assert( sdpisolver != NULL );
188  assert( *sdpisolver != NULL );
189  SCIPdebugMessage("Freeing SDPISolver\n");
190 
191  BMSfreeBlockMemory((*sdpisolver)->blkmem, sdpisolver);
192 
193  return SCIP_OKAY;
194 }
195 
198  SCIP_SDPISOLVER* sdpisolver
199  )
200 {
201  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
202 
203  return SCIP_OKAY;
204 }
205 
208  SCIP_SDPISOLVER* sdpisolver
209  )
210 {
211  SCIPdebugMessage("SDPs aren't counted as there is no SDP-solver.\n");
212 
213  return SCIP_OKAY;
214 }
215 
219 /*
220  * Solving Methods
221  */
222 
242  SCIP_SDPISOLVER* sdpisolver,
243  int nvars,
244  SCIP_Real* obj,
245  SCIP_Real* lb,
246  SCIP_Real* ub,
247  int nsdpblocks,
248  int* sdpblocksizes,
249  int* sdpnblockvars,
250  int sdpconstnnonz,
251  int* sdpconstnblocknonz,
253  int** sdpconstrow,
254  int** sdpconstcol,
255  SCIP_Real** sdpconstval,
256  int sdpnnonz,
257  int** sdpnblockvarnonz,
259  int** sdpvar,
261  int*** sdprow,
262  int*** sdpcol,
263  SCIP_Real*** sdpval,
264  int** indchanges,
266  int* nremovedinds,
267  int* blockindchanges,
268  int nremovedblocks,
269  int nlpcons,
270  SCIP_Real* lplhs,
271  SCIP_Real* lprhs,
272  int lpnnonz,
273  int* lprow,
274  int* lpcol,
275  SCIP_Real* lpval,
276  SCIP_Real* starty,
277  int* startZnblocknonz,
279  int** startZrow,
281  int** startZcol,
283  SCIP_Real** startZval,
285  int* startXnblocknonz,
287  int** startXrow,
289  int** startXcol,
291  SCIP_Real** startXval,
293  SCIP_SDPSOLVERSETTING startsettings,
295  SCIP_Real timelimit,
296  SDPI_CLOCK* usedsdpitime
297  )
298 {
299  SCIP_CALL( errorMessageAbort() );
300 
301  return SCIP_OKAY;
302 }
303 
327  SCIP_SDPISOLVER* sdpisolver,
328  SCIP_Real penaltyparam,
329  SCIP_Bool withobj,
330  SCIP_Bool rbound,
331  int nvars,
332  SCIP_Real* obj,
333  SCIP_Real* lb,
334  SCIP_Real* ub,
335  int nsdpblocks,
336  int* sdpblocksizes,
337  int* sdpnblockvars,
338  int sdpconstnnonz,
339  int* sdpconstnblocknonz,
341  int** sdpconstrow,
342  int** sdpconstcol,
343  SCIP_Real** sdpconstval,
344  int sdpnnonz,
345  int** sdpnblockvarnonz,
347  int** sdpvar,
349  int*** sdprow,
350  int*** sdpcol,
351  SCIP_Real*** sdpval,
352  int** indchanges,
354  int* nremovedinds,
355  int* blockindchanges,
356  int nremovedblocks,
357  int nlpcons,
358  SCIP_Real* lplhs,
359  SCIP_Real* lprhs,
360  int lpnnonz,
361  int* lprow,
362  int* lpcol,
363  SCIP_Real* lpval,
364  SCIP_Real* starty,
365  int* startZnblocknonz,
367  int** startZrow,
369  int** startZcol,
371  SCIP_Real** startZval,
373  int* startXnblocknonz,
375  int** startXrow,
377  int** startXcol,
379  SCIP_Real** startXval,
381  SCIP_SDPSOLVERSETTING startsettings,
383  SCIP_Real timelimit,
384  SDPI_CLOCK* usedsdpitime,
385  SCIP_Bool* feasorig,
387  SCIP_Bool* penaltybound
389  )
390 {
391  SCIP_CALL( errorMessageAbort() );
392 
393  return SCIP_OKAY;
394 }
400 /*
401  * Solution Information Methods
402  */
403 
409  SCIP_SDPISOLVER* sdpisolver
410  )
411 {
412  SCIP_CALL( errorMessageAbort() );
413 
414  return FALSE;
415 }
416 
424  SCIP_SDPISOLVER* sdpisolver
425  )
426 {
427  SCIP_CALL( errorMessageAbort() );
428 
429  return FALSE;
430 }
431 
434  SCIP_SDPISOLVER* sdpisolver,
435  SCIP_Bool* primalfeasible,
436  SCIP_Bool* dualfeasible
437  )
438 {
439  SCIP_CALL( errorMessageAbort() );
440 
441  return SCIP_PLUGINNOTFOUND;
442 }
443 
448  SCIP_SDPISOLVER* sdpisolver
449  )
450 {
451  SCIP_CALL( errorMessageAbort() );
452 
453  return FALSE;
454 }
455 
460  SCIP_SDPISOLVER* sdpisolver
461  )
462 {
463  SCIP_CALL( errorMessageAbort() );
464 
465  return FALSE;
466 }
467 
472  SCIP_SDPISOLVER* sdpisolver
473  )
474 {
475  SCIP_CALL( errorMessageAbort() );
476 
477  return FALSE;
478 }
479 
484  SCIP_SDPISOLVER* sdpisolver
485  )
486 {
487  SCIP_CALL( errorMessageAbort() );
488 
489  return FALSE;
490 }
491 
496  SCIP_SDPISOLVER* sdpisolver
497  )
498 {
499  SCIP_CALL( errorMessageAbort() );
500 
501  return FALSE;
502 }
503 
508  SCIP_SDPISOLVER* sdpisolver
509  )
510 {
511  SCIP_CALL( errorMessageAbort() );
512 
513  return FALSE;
514 }
515 
518  SCIP_SDPISOLVER* sdpisolver
519  )
520 {
521  SCIP_CALL( errorMessageAbort() );
522 
523  return FALSE;
524 }
525 
528  SCIP_SDPISOLVER* sdpisolver
529  )
530 {
531  SCIP_CALL( errorMessageAbort() );
532 
533  return FALSE;
534 }
535 
538  SCIP_SDPISOLVER* sdpisolver
539  )
540 {
541  SCIP_CALL( errorMessageAbort() );
542 
543  return FALSE;
544 }
545 
548  SCIP_SDPISOLVER* sdpisolver
549  )
550 {
551  SCIP_CALL( errorMessageAbort() );
552 
553  return FALSE;
554 }
555 
568  SCIP_SDPISOLVER* sdpisolver
569  )
570 {
571  SCIP_CALL( errorMessageAbort() );
572 
573  return -2;
574 }
575 
578  SCIP_SDPISOLVER* sdpisolver
579  )
580 {
581  SCIP_CALL( errorMessageAbort() );
582 
583  return FALSE;
584 }
585 
590  SCIP_SDPISOLVER* sdpisolver
591  )
592 {
593  SCIP_CALL( errorMessageAbort() );
594 
595  return FALSE;
596 }
597 
600  SCIP_SDPISOLVER* sdpisolver,
601  SCIP_Bool* success
602  )
603 {
604  SCIP_CALL( errorMessageAbort() );
605 
606  return SCIP_PLUGINNOTFOUND;
607 }
608 
611  SCIP_SDPISOLVER* sdpisolver,
612  SCIP_Real* objval
613  )
614 {
615  SCIP_CALL( errorMessageAbort() );
616 
617  return SCIP_PLUGINNOTFOUND;
618 }
619 
624 SCIP_RETCODE SCIPsdpiSolverGetSol(
625  SCIP_SDPISOLVER* sdpisolver,
626  SCIP_Real* objval,
627  SCIP_Real* dualsol,
628  int* dualsollength
630  )
631 {
632  SCIP_CALL( errorMessageAbort() );
633 
634  return SCIP_PLUGINNOTFOUND;
635 }
636 
637 
640  SCIP_SDPISOLVER* sdpisolver,
641  int nblocks,
642  int* startXnblocknonz
644  )
645 {
646  SCIP_CALL( errorMessageAbort() );
647 
648  return SCIP_PLUGINNOTFOUND;
649 }
650 
659  SCIP_SDPISOLVER* sdpisolver,
660  SCIP_Bool* success,
661  SCIP_Real* dualsol,
662  int* dualsollength,
664  int nblocks,
665  int* startXnblocknonz,
667  int** startXrow,
668  int** startXcol,
669  SCIP_Real** startXval
670  )
671 {
672  SCIP_CALL( errorMessageAbort() );
673 
674  return SCIP_PLUGINNOTFOUND;
675 }
676 
685  SCIP_SDPISOLVER* sdpisolver,
686  SCIP_Real* lbvars,
687  SCIP_Real* ubvars,
688  int* arraylength
690  )
691 {
692  SCIP_CALL( errorMessageAbort() );
693 
694  return SCIP_PLUGINNOTFOUND;
695 }
696 
699  SCIP_SDPISOLVER* sdpisolver,
700  int nblocks,
701  int* startXnblocknonz
702  )
703 {
704  SCIP_CALL( errorMessageAbort() );
705 
706  return SCIP_PLUGINNOTFOUND;
707 }
708 
716  SCIP_SDPISOLVER* sdpisolver,
717  int nblocks,
718  int* startXnblocknonz,
720  int** startXrow,
721  int** startXcol,
722  SCIP_Real** startXval
723  )
724 {
725  SCIP_CALL( errorMessageAbort() );
726 
727  return SCIP_PLUGINNOTFOUND;
728 }
729 
732  SCIP_SDPISOLVER* sdpisolver
733  )
734 {
735  SCIP_CALL( errorMessageAbort() );
736 
737  return 0.0;
738 }
739 
742  SCIP_SDPISOLVER* sdpisolver,
743  SCIP_Real* opttime
744  )
745 {
746  assert( sdpisolver != NULL );
747  assert( opttime != NULL );
748 
749  *opttime = 0.0;
750 
751  return SCIP_OKAY;
752 }
753 
756  SCIP_SDPISOLVER* sdpisolver,
757  int* iterations
758  )
759 {
760  SCIP_CALL( errorMessageAbort() );
761 
762  return SCIP_PLUGINNOTFOUND;
763 }
764 
767  SCIP_SDPISOLVER* sdpisolver,
768  int* calls
769  )
770 {
771  SCIP_CALL( errorMessageAbort() );
772 
773  return SCIP_PLUGINNOTFOUND;
774 }
775 
778  SCIP_SDPISOLVER* sdpisolver,
779  SCIP_SDPSOLVERSETTING* usedsetting
780  )
781 {
782  SCIP_CALL( errorMessageAbort() );
783 
784  return SCIP_PLUGINNOTFOUND;
785 }
786 
792 /*
793  * Numerical Methods
794  */
795 
801  SCIP_SDPISOLVER* sdpisolver
802  )
803 {
804  return 1E+20; /* default infinity from SCIP */
805 }
806 
809  SCIP_SDPISOLVER* sdpisolver,
810  SCIP_Real val
811  )
812 {
813  return ((val <= -SCIPsdpiSolverInfinity(sdpisolver)) || (val >= SCIPsdpiSolverInfinity(sdpisolver)));
814 }
815 
818  SCIP_SDPISOLVER* sdpisolver,
819  SCIP_SDPPARAM type,
820  SCIP_Real* dval
821  )
822 {
823  assert( sdpisolver != NULL );
824  assert( dval != NULL );
825 
826  switch( type )
827  {
828  case SCIP_SDPPAR_EPSILON:
829  *dval = sdpisolver->epsilon;
830  break;
831  case SCIP_SDPPAR_GAPTOL:
832  *dval = sdpisolver->gaptol;
833  break;
834  case SCIP_SDPPAR_FEASTOL:
835  *dval = sdpisolver->feastol;
836  break;
838  *dval = sdpisolver->sdpsolverfeastol;
839  break;
841  *dval = sdpisolver->objlimit;
842  break;
843  default:
844  return SCIP_PARAMETERUNKNOWN;
845  }
846 
847  return SCIP_OKAY;
848 }
849 
852  SCIP_SDPISOLVER* sdpisolver,
853  SCIP_SDPPARAM type,
854  SCIP_Real dval
855  )
856 {
857  assert( sdpisolver != NULL );
858 
859  switch( type )
860  {
861  case SCIP_SDPPAR_EPSILON:
862  sdpisolver->epsilon = dval;
863  SCIPdebugMessage("Setting sdpisolver epsilon to %f.\n", dval);
864  break;
865  case SCIP_SDPPAR_GAPTOL:
866  sdpisolver->gaptol = dval;
867  SCIPdebugMessage("Setting sdpisolver gaptol to %f.\n", dval);
868  break;
869  case SCIP_SDPPAR_FEASTOL:
870  sdpisolver->feastol = dval;
871  SCIPdebugMessage("Setting sdpisolver feastol to %f.\n", dval);
872  break;
874  sdpisolver->sdpsolverfeastol = dval;
875  SCIPdebugMessage("Setting sdpisolver sdpsolverfeastol to %f.\n", dval);
876  break;
878  SCIPdebugMessage("Setting sdpisolver objlimit to %f.\n", dval);
879  sdpisolver->objlimit = dval;
880  break;
881  default:
882  return SCIP_PARAMETERUNKNOWN;
883  }
884 
885  return SCIP_OKAY;
886 }
887 
890  SCIP_SDPISOLVER* sdpisolver,
891  SCIP_SDPPARAM type,
892  int* ival
893  )
894 {
895  assert( sdpisolver != NULL );
896 
897  switch( type )
898  {
899  case SCIP_SDPPAR_SDPINFO:
900  *ival = (int) sdpisolver->sdpinfo;
901  SCIPdebugMessage("Getting sdpisolver information output (%d).\n", *ival);
902  break;
903  default:
904  return SCIP_PARAMETERUNKNOWN;
905  }
906 
907  return SCIP_OKAY;
908 }
909 
912  SCIP_SDPISOLVER* sdpisolver,
913  SCIP_SDPPARAM type,
914  int ival
915  )
916 {
917  assert( sdpisolver != NULL );
918 
919  switch( type )
920  {
921  case SCIP_SDPPAR_SDPINFO:
922  sdpisolver->sdpinfo = (SCIP_Bool) ival;
923  SCIPdebugMessage("Setting sdpisolver information output (%d).\n", ival);
924  break;
925  default:
926  return SCIP_PARAMETERUNKNOWN;
927  }
928 
929  return SCIP_OKAY;
930 }
931 
934  SCIP_SDPISOLVER* sdpisolver,
935  SCIP_Real maxguess
936  )
937 {
938  SCIPdebugMessage("Lambdastar parameter only used by SDPA.");
939 
940  return SCIP_OKAY;
941 }
942 
945  SCIP_SDPISOLVER* sdpisolver,
946  SCIP_Real maxcoeff,
947  SCIP_Real* penaltyparam
948  )
949 {
950  assert( penaltyparam != NULL );
951 
952  *penaltyparam = 1E+10;
953 
954  return SCIP_OKAY;
955 }
956 
959  SCIP_SDPISOLVER* sdpisolver,
960  SCIP_Real penaltyparam,
961  SCIP_Real* maxpenaltyparam
962  )
963 {
964  assert( maxpenaltyparam != NULL );
965 
966  *maxpenaltyparam = 1E+10;
967 
968  return SCIP_OKAY;
969 }
970 
976 /*
977  * File Interface Methods
978  */
979 
985  SCIP_SDPISOLVER* sdpisolver,
986  const char* fname
987  )
988 {
989  SCIP_CALL( errorMessageAbort() );
990 
991  return SCIP_PLUGINNOTFOUND;
992 }
993 
996  SCIP_SDPISOLVER* sdpisolver,
997  const char* fname
998  )
999 {
1000  SCIP_CALL( errorMessageAbort() );
1001 
1002  return SCIP_PLUGINNOTFOUND;
1003 }
1004 
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:83
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)
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)
static SCIP_RETCODE errorMessageAbort(void)
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 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, SCIP_Real *lplhs, SCIP_Real *lprhs, 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, SDPI_CLOCK *usedsdpitime)
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_RETCODE SCIPsdpiSolverGetTime(SCIP_SDPISOLVER *sdpisolver, SCIP_Real *opttime)
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:71
SCIP_Bool SCIPsdpiSolverIsConverged(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, SCIP_Real *lplhs, SCIP_Real *lprhs, 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, SDPI_CLOCK *usedsdpitime, SCIP_Bool *feasorig, SCIP_Bool *penaltybound)
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:72
SCIP_RETCODE SCIPsdpiSolverComputePenaltyparam(SCIP_SDPISOLVER *sdpisolver, SCIP_Real maxcoeff, SCIP_Real *penaltyparam)
SCIP_Bool SCIPsdpiSolverIsIterlimExc(SCIP_SDPISOLVER *sdpisolver)