DSDP
|
00001 #if !defined(__DSDP_INTERFACE_H) 00002 #define __DSDP_INTERFACE_H 00003 00008 #include "dsdpbasictypes.h" 00009 #include "dsdpsys.h" 00010 00026 typedef struct SDPCone_C* SDPCone; 00027 typedef struct LPCone_C* LPCone; 00028 typedef struct BCone_C* BCone; 00029 extern FILE *dsdpoutputfile; 00030 00031 #ifdef __cplusplus 00032 extern "C" { 00033 #endif 00034 00035 00036 extern int DSDPCreate(int, DSDP *); 00037 extern int DSDPSetup(DSDP); 00038 extern int DSDPSolve(DSDP); 00039 extern int DSDPComputeX(DSDP); 00040 extern int DSDPComputeAndFactorS(DSDP,DSDPTruth*); 00041 extern int DSDPDestroy(DSDP); 00042 00043 extern int DSDPCreateBCone(DSDP, BCone*); 00044 extern int BConeAllocateBounds(BCone,int); 00045 extern int BConeSetLowerBound(BCone,int, double); 00046 extern int BConeSetUpperBound(BCone,int, double); 00047 extern int BConeSetPSlackVariable(BCone,int); 00048 extern int BConeSetPSurplusVariable(BCone,int); 00049 extern int BConeScaleBarrier(BCone,double); 00050 extern int BConeView(BCone); 00051 extern int BConeSetXArray(BCone,double[], int); 00052 extern int BConeCopyX(BCone,double[],double[],int); 00053 00054 extern int DSDPBoundDualVariables(DSDP,double, double); 00055 extern int DSDPSetYBounds(DSDP,double,double); 00056 extern int DSDPGetYBounds(DSDP,double*,double*); 00057 00058 extern int DSDPCreateLPCone(DSDP,LPCone*); 00059 extern int LPConeSetData(LPCone,int,const int[],const int[],const double[]); 00060 extern int LPConeSetData2(LPCone,int,const int[],const int[],const double[]); 00061 extern int LPConeGetData(LPCone,int,double[],int); 00062 extern int LPConeScaleBarrier(LPCone,double); 00063 extern int LPConeGetXArray(LPCone,double*[], int*); 00064 extern int LPConeGetSArray(LPCone,double*[], int*); 00065 extern int LPConeGetDimension(LPCone,int*); 00066 extern int LPConeView(LPCone lpcone); 00067 extern int LPConeView2(LPCone lpcone); 00068 extern int LPConeCopyS(LPCone,double[],int); 00069 00070 extern int DSDPCreateSDPCone(DSDP, int, SDPCone*); 00071 extern int SDPConeSetBlockSize(SDPCone, int, int); 00072 extern int SDPConeGetBlockSize(SDPCone, int, int*); 00073 extern int SDPConeSetStorageFormat(SDPCone, int, char); 00074 extern int SDPConeGetStorageFormat(SDPCone, int, char*); 00075 extern int SDPConeCheckStorageFormat(SDPCone, int, char); 00076 extern int SDPConeSetSparsity(SDPCone, int, int); 00077 extern int SDPConeView(SDPCone); 00078 extern int SDPConeView2(SDPCone); 00079 extern int SDPConeView3(SDPCone); 00080 00081 extern int SDPConeSetASparseVecMat(SDPCone,int,int,int,double,int,const int[],const double[],int); 00082 extern int SDPConeSetADenseVecMat(SDPCone,int,int,int,double,double[],int); 00083 /* extern int SDPConeSetDenseMatWSparseData(SDPCone,int, int, int, double*, int*, int*); */ 00084 extern int SDPConeSetARankOneMat(SDPCone,int,int,int,double,int,const int[],const double[],int); 00085 extern int SDPConeSetConstantMat(SDPCone,int,int,int,double); 00086 extern int SDPConeSetZeroMat(SDPCone,int,int,int); 00087 extern int SDPConeSetIdentity(SDPCone,int,int,int,double); 00088 extern int SDPConeViewDataMatrix(SDPCone,int,int); 00089 extern int SDPConeMatrixView(SDPCone,int); 00090 00091 extern int SDPConeAddASparseVecMat(SDPCone,int,int,int,double,int,const int[],const double[],int); 00092 extern int SDPConeAddADenseVecMat(SDPCone,int,int,int,double,double[],int); 00093 extern int SDPConeAddConstantMat(SDPCone,int,int,int,double); 00094 extern int SDPConeAddIdentity(SDPCone,int,int,int,double); 00095 extern int SDPConeAddARankOneMat(SDPCone,int,int,int,double,int,const int[],const double[],int); 00096 00097 /* For backward compatibility */ 00098 extern int SDPConeAddSparseVecMat(SDPCone,int,int,int,int,const int[],const double[],int); 00099 extern int SDPConeAddDenseVecMat(SDPCone,int,int,int,double[],int); 00100 extern int SDPConeSetSparseVecMat(SDPCone,int,int,int,int,const int[],const double[],int); 00101 extern int SDPConeSetDenseVecMat(SDPCone,int,int,int,double[],int); 00102 00103 extern int SDPConeSetXMat(SDPCone,int,int); 00104 extern int SDPConeSetXArray(SDPCone,int,int,double[], int); 00105 extern int SDPConeGetXArray(SDPCone,int,double*[],int*); 00106 extern int SDPConeRestoreXArray(SDPCone,int,double*[],int*); 00107 extern int SDPConeCheckData(SDPCone); 00108 extern int SDPConeRemoveDataMatrix(SDPCone,int,int); 00109 extern int SDPConeGetNumberOfBlocks(SDPCone, int*); 00110 extern int SDPConeComputeS(SDPCone, int, double,double[], int, double,int,double[],int); 00111 extern int SDPConeComputeX(SDPCone,int,int,double[],int); 00112 extern int SDPConeAddADotX(SDPCone,int,double,double[],int,double[],int); 00113 extern int SDPConeViewX(SDPCone,int,int,double[],int); 00114 extern int SDPConeSetLanczosIterations(SDPCone,int); 00115 extern int SDPConeScaleBarrier(SDPCone,int,double); 00116 extern int SDPConeXVMultiply(SDPCone,int,double[],double[],int); 00117 extern int SDPConeComputeXV(SDPCone,int,int*); 00118 extern int SDPConeAddXVAV(SDPCone,int,double[],int,double[],int); 00119 extern int SDPConeUseLAPACKForDualMatrix(SDPCone,int); 00120 00121 extern int DSDPSetDualObjective(DSDP,int,double); 00122 extern int DSDPAddObjectiveConstant(DSDP,double); 00123 extern int DSDPGetDObjective(DSDP,double*); 00124 extern int DSDPGetDDObjective(DSDP,double*); 00125 extern int DSDPGetPObjective(DSDP,double*); 00126 extern int DSDPGetPPObjective(DSDP,double*); 00127 /* 00128 extern int DSDPGetDualObjective(DSDP,double*); 00129 extern int DSDPGetPrimalObjective(DSDP,double*); 00130 */ 00131 #define DSDPGetDualObjective DSDPGetDDObj 00132 #define DSDPGetPrimalObjective DSDPGetPPObj 00133 extern int DSDPGetDualityGap(DSDP,double*); 00134 extern int DSDPGetScale(DSDP,double*); 00135 extern int DSDPSetScale(DSDP,double); 00136 extern int DSDPGetPenaltyParameter(DSDP,double*); 00137 extern int DSDPGetPenalty(DSDP,double*); 00138 extern int DSDPCopyB(DSDP,double[], int); 00139 00140 extern int DSDPSetR0(DSDP,double); 00141 extern int DSDPGetR(DSDP, double *); 00142 extern int DSDPSetRTolerance(DSDP,double); 00143 extern int DSDPGetRTolerance(DSDP,double*); 00144 00145 extern int DSDPSetY0(DSDP,int, double); 00146 extern int DSDPGetY(DSDP, double[], int); 00147 extern int DSDPGetYMakeX(DSDP, double[], int); 00148 extern int DSDPGetDYMakeX(DSDP, double[], int); 00149 extern int DSDPGetMuMakeX(DSDP, double*); 00150 00151 #define DSDPSetInitialBarrierParameter DSDPSetBarrierParameter 00152 #define DSDPGetInitialBarrierParameter DSDPGetBarrierParameter 00153 extern int DSDPGetBarrierParameter(DSDP, double *); 00154 extern int DSDPSetBarrierParameter(DSDP, double); 00155 extern int DSDPReuseMatrix(DSDP,int); 00156 extern int DSDPGetReuseMatrix(DSDP,int*); 00157 extern int DSDPGetDimension(DSDP, double*); 00158 00159 extern int DSDPSetMaxIts(DSDP,int); 00160 extern int DSDPGetMaxIts(DSDP,int*); 00161 extern int DSDPSetStepTolerance(DSDP,double); 00162 extern int DSDPGetStepTolerance(DSDP,double*); 00163 extern int DSDPSetGapTolerance(DSDP,double); 00164 extern int DSDPGetGapTolerance(DSDP,double*); 00165 extern int DSDPSetPNormTolerance(DSDP,double); 00166 extern int DSDPGetPNormTolerance(DSDP,double*); 00167 extern int DSDPSetDualBound(DSDP,double); 00168 extern int DSDPGetDualBound(DSDP,double*); 00169 extern int DSDPSetPTolerance(DSDP,double); 00170 extern int DSDPGetPTolerance(DSDP,double*); 00171 extern int DSDPGetPInfeasibility(DSDP,double*); 00172 extern int DSDPSetMaxTrustRadius(DSDP,double); 00173 extern int DSDPGetMaxTrustRadius(DSDP,double*); 00174 extern int DSDPStopReason(DSDP,DSDPTerminationReason *); 00175 extern int DSDPGetSolutionType(DSDP,DSDPSolutionType*); 00176 extern int DSDPSetPotentialParameter(DSDP, double); 00177 extern int DSDPGetPotentialParameter(DSDP, double*); 00178 extern int DSDPUseDynamicRho(DSDP, int); 00179 extern int DSDPGetPotential(DSDP,double*); 00180 extern int DSDPUseLAPACKForSchur(DSDP,int); 00181 extern int DSDPGetNumberOfVariables(DSDP,int*); 00182 extern int DSDPGetFinalErrors(DSDP,double[6]); 00183 extern int DSDPGetGapHistory(DSDP, double[], int); 00184 extern int DSDPGetRHistory(DSDP, double[], int); 00185 extern int DSDPGetIts(DSDP,int *); 00186 extern int DSDPGetPnorm(DSDP, double *); 00187 extern int DSDPGetStepLengths(DSDP, double*,double*); 00188 extern int DSDPSetMonitor(DSDP, int (*)(DSDP,void*),void*); 00189 extern int DSDPSetStandardMonitor(DSDP,int); 00190 extern int DSDPSetFileMonitor(DSDP,int); 00191 extern int DSDPSetPenaltyParameter(DSDP,double); 00192 extern int DSDPUsePenalty(DSDP,int); 00193 extern int DSDPPrintLogInfo(int); 00194 extern int DSDPComputeMinimumXEigenvalue(DSDP, double*); 00195 extern int DSDPGetTraceX(DSDP dsdp, double*); 00196 extern int DSDPSetZBar(DSDP,double); 00197 extern int DSDPSetDualLowerBound(DSDP, double); 00198 extern int DSDPGetDataNorms(DSDP, double[3]); 00199 extern int DSDPGetYMaxNorm(DSDP, double*); 00200 extern int SDPConeUseFullSymmetricFormat(SDPCone, int); 00201 extern int SDPConeUsePackedFormat(SDPCone, int); 00202 extern int DSDPSetFixedVariable(DSDP,int,double); 00203 extern int DSDPSetFixedVariables(DSDP,double[],double[],double[],int); 00204 extern int DSDPGetFixedYX(DSDP,int,double*); 00205 extern int DSDPView(DSDP); 00206 extern int DSDPPrintOptions(); 00207 extern int DSDPPrintData(DSDP,SDPCone,LPCone); 00208 extern int DSDPPrintSolution(FILE*,DSDP,SDPCone, LPCone); 00209 extern int DSDPSetOptions(DSDP,char*[], int); 00210 extern int DSDPReadOptions(DSDP, char[]); 00211 extern int DSDPSetDestroyRoutine(DSDP, int (*)(void*), void*); 00212 00213 #ifdef __cplusplus 00214 } 00215 #endif 00216 00217 #endif