5 #include "declarations.h"
18 #include "../arithm/Scl.hpp"
19 #include "../arithm/Scl_mpf.hpp"
29 int solvermosek1(
int n,
int k,T *
a, constraintmatrixv<T> *constraints,
int *listsize,
int dimcon,
double *&solmosek,
double *&solprimal,
int &solst,
double *&soldual,
int &dimsoldual)
41 struct sparseblockv<T> *p,*q;
75 cout<<
"dentro de mosek"<<endl;
80 for(i=0;i<dimcon;i++) DIMBARVAR[0]+=listsize[i];
81 LENBARVAR[0]=DIMBARVAR[0]*(DIMBARVAR[0]+1)/2;
83 cout<<
"dentro de mosek avant task"<<endl;
84 cout<<
"NUMCON"<<NUMCON<<endl;
85 cout<<
"DIMBARVAR[0]"<<DIMBARVAR[0]<<endl;
86 cout<<
"LENBARVAR[0]"<<LENBARVAR[0]<<endl;
91 r = MSK_makeenv(&env,NULL);
96 r = MSK_maketask(env,NUMCON,0,&task);
105 r = MSK_appendcons(task,NUMCON);
111 r = MSK_appendbarvars(task, NUMBARVAR,DIMBARVAR);
116 r = MSK_putcfix(task,0.0);
119 cout<<
"dentro de mosek avant task2"<<endl;
121 q=constraints[
k].blocks;
130 barc_i[l]=q->jindices[l+1]-1;
131 barc_j[l]=q->iindices[l+1]-1;
144 cout<<
"dentro de mosek avant task2bis"<<
"num"<<num<<endl;
147 r = MSK_appendsparsesymmat(task,
156 r = MSK_putbarcj(task, 0, 1, &idx, &falpha);
159 cout<<
"dentro de mosek avant task3"<<endl;
166 r = MSK_putconbound(task,
173 cout<<
"dentro de mosek avant task4"<<endl;
177 for (i=1;i<=NUMCON;i++)
179 p=constraints[
i].blocks;
188 for (i=1;i<=NUMCON;i++)
190 p=constraints[
i].blocks;
193 for (l=0;l<p->numentries;l++)
196 bara_i[l+m]=p->jindices[l+1]-1;
197 bara_j[l+m]=p->iindices[l+1]-1;
211 for (i=1;i<=NUMCON;i++)
213 p=constraints[
i].blocks;
216 r = MSK_appendsparsesymmat(task,
225 r = MSK_putbaraij(task, i-1, 0, 1, &idx, &falpha);
233 cout<<
"dentro de mosek avant task5"<<endl;
260 r = MSK_optimizetrm(task,&trmcode);
276 cout<<
"solsta"<<solst<<endl;
277 dimsoldual= LENBARVAR[0];
308 MSK_getprimalobj(task,
312 printf(
"Optimal primal solution\n");
317 printf(
"Optimal dual solution\n");
318 for(i=0; i<LENBARVAR[0]; ++
i)
321 soldual[
i]=-bars1[
i];
323 solprimal[0]=primalobj[0];
325 cout<<
"Primal Solution "<<solprimal[0]<<endl;
327 for(i=0; i<NUMCON; ++
i)
332 solmosek[NUMCON]=1.0;
334 MSK_freetask(task,barx1);
336 MSK_freetask(task,bars1);
337 MSK_freetask(task,yy);
345 printf(
"Primal or dual infeasibility certificate found.\n");
352 printf(
"Other solution status.");
358 printf(
"Error while optimizing.\n");
368 printf(
"An error occurred while optimizing.\n");
372 printf(
"Error %s - '%s'\n",symname,desc);
378 MSK_deletetask(&task);
void * MSKenv_t
Definition: mosek.h:2225
double MSKrealt
Definition: mosek.h:2239
#define MSKAPI
Definition: mosek.h:39
void * MSKtask_t
Definition: mosek.h:2227
MSKcallbackcodee MSKsoltypee MSKprostae MSKsolstae * solsta
Definition: mosek.h:2689
void *MSKAPI MSK_calloctask(MSKtask_t task, MSKCONST size_t number, MSKCONST size_t size)
int solvermosek1(int n, int k, T *a, constraintmatrixv< T > *constraints, int *listsize, int dimcon, double *&solmosek, double *&solprimal, int &solst, double *&soldual, int &dimsoldual)
Definition: solvermosek.hpp:29
MSKenv_t * env
Definition: mosek.h:2755
static double castDouble(Scl< T > &ref)
MSKrescodee * trmcode
Definition: mosek.h:3828
MSKsoltypee MSKrealt * primalobj
Definition: mosek.h:3069
MSKconetypee MSKrealt MSKint32t MSKint32t j
Definition: mosek.h:2421
MSKint32t k
Definition: mosek.h:2713
MSKint64t idx
Definition: mosek.h:4022
__mskint32 MSKint32t
Definition: mosek.h:2233
MSKCONST char * str
Definition: mosek.h:2317
__mskint64 MSKint64t
Definition: mosek.h:2235
#define MSKCONST
Definition: mosek.h:32
MSKcallbackfunc MSKuserhandle_t * handle
Definition: mosek.h:2683
#define MSKintt
Definition: mosek.h:2074
enum MSKsolsta_enum MSKsolstae
Definition: mosek.h:2112
MSKint32t MSKint32t MSKint32t i
Definition: mosek.h:2278
char * symname
Definition: mosek.h:4803
MSKrescodee r
Definition: mosek.h:2321
MSKstreamtypee MSKint32t MSKint32t MSKint32t MSKint32t MSKint32t MSKint32t MSKint32t MSKint32t MSKint32t a
Definition: mosek.h:3833
MSKint32t MSKint32t MSKtask_t * task
Definition: mosek.h:4911
MSKint32t num
Definition: mosek.h:2373
enum MSKrescode_enum MSKrescodee
Definition: mosek.h:2136