int block_size;
int total_block_size=0;
int *isdiag=NULL;
- FILE *sdpout = fopen("SDPA-printf.tmp","w");
+ // FILE *sdpout = fopen("SDPA-printf.tmp","w");
int blocksz = 0;
double *tempdiag = NULL;
int matno=0;
* Initialize the var list variable with only the active variables.
* Associate an index in the swag variables.
*/
- i = 1;
var_list = &(sys->variable_set);
+ i=0;
+ xbt_swag_foreach(var, var_list) {
+ if(var->weight) i++;
+ }
+ flows=i;
DEBUG1("Variable set : %d", xbt_swag_size(var_list));
-
xbt_swag_foreach(var, var_list) {
var->value = 0.0;
- if(var->weight) var->index = i++;
+ if(var->weight) var->index = i--;
}
- cnst_list=&(sys->saturated_constraint_set);
+ cnst_list=&(sys->active_constraint_set);
DEBUG1("Active constraints : %d", xbt_swag_size(cnst_list));
/*
* Those fields are the top level description of the platform furnished in the xml file.
*/
- flows = i-1;
links = xbt_swag_size(&(sys->active_constraint_set));
/*
* The number of variables in the SDP program.
*/
nb_var = get_y(K, pow(2,K));
- fprintf(sdpout,"%d\n", nb_var);
+ DEBUG1("Number of variables in the SDP program : %d", nb_var);
+ //fprintf(sdpout,"%d\n", nb_var);
/*
* Find the size of each group of constraints.
* The total number of constraints.
*/
nb_cnsts = nb_cnsts_capacity + nb_cnsts_struct + nb_cnsts_positivy;
- fprintf(sdpout,"%d\n", nb_cnsts);
+ //fprintf(sdpout,"%d\n", nb_cnsts);
/*
* Keep track of which blocks have off diagonal entries.
*/
if(i <= nb_cnsts_struct){
total_block_size += block_size = 2;
- fprintf(sdpout,"2 ");
+ //fprintf(sdpout,"2 ");
}else{
total_block_size += block_size = 1;
- fprintf(sdpout,"1 ");
+ //fprintf(sdpout,"1 ");
}
/*
block_num++;
}
- fprintf(sdpout,"\n");
+ //fprintf(sdpout,"\n");
/*
for(i = 1; i <= nb_var; i++){
if(get_y(0,1)==i){
- fprintf(sdpout,"-1 ");
+ //fprintf(sdpout,"-1 ");
a[i]=-1;
}else{
- fprintf(sdpout,"0 ");
+ //fprintf(sdpout,"0 ");
a[i]=0;
}
}
- fprintf(sdpout,"\n");
+ //fprintf(sdpout,"\n");
/*
for(k = 1; k <= K; k++){
for(i = 1; i <= pow(2,k-1); i++){
matno=get_y(k,2*i-1);
- fprintf(sdpout,"%d %d 1 1 1\n", matno , block_num);
+ //fprintf(sdpout,"%d %d 1 1 1\n", matno , block_num);
addentry(constraints, &C, matno, block_num, 1, 1, 1.0, C.blocks[block_num].blocksize);
matno=get_y(k,2*i);
- fprintf(sdpout,"%d %d 2 2 1\n", matno , block_num);
+ //fprintf(sdpout,"%d %d 2 2 1\n", matno , block_num);
addentry(constraints, &C, matno, block_num, 2, 2, 1.0, C.blocks[block_num].blocksize);
matno=get_y(k-1,i);
- fprintf(sdpout,"%d %d 1 2 1\n", matno , block_num);
+ //fprintf(sdpout,"%d %d 1 2 1\n", matno , block_num);
addentry(constraints, &C, matno, block_num, 1, 2, 1.0, C.blocks[block_num].blocksize);
matno=get_y(k-1,i);
- fprintf(sdpout,"%d %d 2 1 1\n", matno , block_num);
+ //fprintf(sdpout,"%d %d 2 1 1\n", matno , block_num);
addentry(constraints, &C, matno, block_num, 2, 1, 1.0, C.blocks[block_num].blocksize);
isdiag[block_num] = 0;
*/
xbt_swag_foreach(cnst, cnst_list) {
- fprintf(sdpout,"0 %d 1 1 %d\n", block_num, (int) - (cnst->bound));
+ //fprintf(sdpout,"0 %d 1 1 %f\n", block_num, - (cnst->bound));
addentry(constraints, &C, 0, block_num, 1, 1, - (cnst->bound) , C.blocks[block_num].blocksize);
elem_list = &(cnst->element_set);
xbt_swag_foreach(elem, elem_list) {
if(elem->variable->weight <=0) break;
- fprintf(sdpout,"%d %d 1 1 %d\n", elem->variable->index, block_num, (int) - (elem->variable->value));
- addentry(constraints, &C, elem->variable->index, block_num, 1, 1, - (elem->value), C.blocks[block_num].blocksize);
+ matno=get_y(K,elem->variable->index);
+ //fprintf(sdpout,"%d %d 1 1 %f\n", elem->variable->index, block_num, - (elem->value));
+ addentry(constraints, &C, matno, block_num, 1, 1, - (elem->value), C.blocks[block_num].blocksize);
}
block_num++;
*/
for(i = 1; i <= pow(2,K); i++){
matno=get_y(K, i);
- fprintf(sdpout,"%d %d 1 1 1\n", matno, block_num);
+ //fprintf(sdpout,"%d %d 1 1 1\n", matno, block_num);
addentry(constraints, &C, matno, block_num, 1, 1, 1.0, C.blocks[block_num].blocksize);
block_num++;
}
*/
printf("Printing SDPA...\n");
if(XBT_LOG_ISENABLED(surf_sdp, xbt_log_priority_debug)) {
- char *tmp=strdup("SDPA.tmp");
- write_prob(tmp, nb_cnsts, nb_var, C, a, constraints);
- //int write_prob(char *fname, int n, int k, struct blockmatrix C, double *a, struct constraintmatrix *constraints);
+ char *tmp=strdup("SURF-PROPORTIONNAL.sdpa");
+ write_prob(tmp,total_block_size,nb_var,C,a,constraints);
free(tmp);
}
}
+ if(XBT_LOG_ISENABLED(surf_sdp, xbt_log_priority_debug)) {
+ char *tmp=strdup("SURF-PROPORTIONNAL.sol");
+ write_sol(tmp,total_block_size, nb_var, X, y, Z);
+ free(tmp);
+ }
/*
* Write out the solution if necessary.
*/
free_prob(total_block_size, nb_var, C, a, constraints, X, y, Z);
- fclose(sdpout);
+ // fclose(sdpout);
free(isdiag);
sys->modified = 0;