00001
00002
00003
00019
00020
00021
00022
00023
00024
00025 #ifdef __cplusplus
00026 extern "C" {
00027 #endif
00028
00029 #ifndef _QUAD_PROG_VPSC_H_
00030 #define _QUAD_PROG_VPSC_H_
00031
00032 #ifdef DIGCOLA
00033
00034 #include "defs.h"
00035 #include "digcola.h"
00036 #ifdef MOSEK
00037 #include "mosek_quad_solve.h"
00038 #endif
00039
00040 typedef struct CMajEnvVPSC {
00041 float **A;
00042 float *packedMat;
00043 int nv;
00044 int nldv;
00045 int ndv;
00046 Variable **vs;
00047 int m;
00048 int gm;
00049 Constraint **cs;
00050
00051 Constraint **gcs;
00052 VPSC *vpsc;
00053 float *fArray1;
00054 float *fArray2;
00055 float *fArray3;
00056 #ifdef MOSEK
00057 MosekEnv *mosekEnv;
00058 #endif
00059 } CMajEnvVPSC;
00060
00061 extern CMajEnvVPSC* initCMajVPSC(int n, float *packedMat, vtx_data* graph, ipsep_options *opt, int diredges);
00062
00063 extern int constrained_majorization_vpsc(CMajEnvVPSC*, float*, float*, int);
00064
00065 extern void deleteCMajEnvVPSC(CMajEnvVPSC *e);
00066 extern void generateNonoverlapConstraints(
00067 CMajEnvVPSC* e,
00068 float nsizeScale,
00069 float** coords,
00070 int k,
00071 boolean transitiveClosure,
00072 ipsep_options* opt
00073 );
00074
00075 extern void removeoverlaps(int,float**,ipsep_options*);
00076
00077 typedef struct {
00078 int *nodes;
00079 int num_nodes;
00080 } DigColaLevel;
00081
00082
00083
00084
00085 extern DigColaLevel* assign_digcola_levels(int *ordering, int n, int *level_inds, int num_divisions);
00086 extern void delete_digcola_levels(DigColaLevel *l, int num_levels);
00087 extern void print_digcola_levels(FILE* logfile, DigColaLevel *levels, int num_levels);
00088 int get_num_digcola_constraints(DigColaLevel *levels, int num_levels);
00089 #endif
00090
00091 #endif
00092
00093 #ifdef __cplusplus
00094 }
00095 #endif