- struct blockmatrix *, int matno, int blkno,
- int indexi, int indexj, double ent, int blocksize);
+ struct blockmatrix *, int matno, int blkno,
+ int indexi, int indexj, double ent, int blocksize);
- "Logging specific to SURF (sdp)");
-XBT_LOG_NEW_SUBCATEGORY(surf_sdp_out, surf,
- "Logging specific to SURF (sdp)");
+ "Logging specific to SURF (sdp)");
+XBT_LOG_NEW_SUBCATEGORY(surf_sdp_out, surf, "Logging specific to SURF (sdp)");
/*
########################################################################
######################## Simple Proportionnal fairness #################
/*
########################################################################
######################## Simple Proportionnal fairness #################
CDEBUG1(surf_sdp_out, "Number of constraints = %d", nb_cnsts);
DEBUG1("Number of constraints in the SDP program : %d", nb_cnsts);
CDEBUG1(surf_sdp_out, "Number of constraints = %d", nb_cnsts);
DEBUG1("Number of constraints in the SDP program : %d", nb_cnsts);
- (struct constraintmatrix *) calloc((nb_var + 1),
- sizeof(struct constraintmatrix));
+ (struct constraintmatrix *) calloc((nb_var + 1),
+ sizeof(struct constraintmatrix));
C.blocks[block_num].blockcategory = MATRIX;
C.blocks[block_num].blocksize = block_size;
C.blocks[block_num].data.mat =
C.blocks[block_num].blockcategory = MATRIX;
C.blocks[block_num].blocksize = block_size;
C.blocks[block_num].data.mat =
matno = get_y(k, 2 * i - 1);
CDEBUG2(surf_sdp_out, "%d %d 1 1 1", matno, block_num);
addentry(constraints, &C, matno, block_num, 1, 1, 1.0,
matno = get_y(k, 2 * i - 1);
CDEBUG2(surf_sdp_out, "%d %d 1 1 1", matno, block_num);
addentry(constraints, &C, matno, block_num, 1, 1, 1.0,
matno = get_y(k, 2 * i);
CDEBUG2(surf_sdp_out, "%d %d 2 2 1", matno, block_num);
addentry(constraints, &C, matno, block_num, 2, 2, 1.0,
matno = get_y(k, 2 * i);
CDEBUG2(surf_sdp_out, "%d %d 2 2 1", matno, block_num);
addentry(constraints, &C, matno, block_num, 2, 2, 1.0,
matno = get_y(k - 1, i);
CDEBUG2(surf_sdp_out, "%d %d 1 2 1", matno, block_num);
addentry(constraints, &C, matno, block_num, 1, 2, 1.0,
matno = get_y(k - 1, i);
CDEBUG2(surf_sdp_out, "%d %d 1 2 1", matno, block_num);
addentry(constraints, &C, matno, block_num, 1, 2, 1.0,
matno = get_y(k - 1, i);
CDEBUG2(surf_sdp_out, "%d %d 2 1 1", matno, block_num);
addentry(constraints, &C, matno, block_num, 2, 1, 1.0,
matno = get_y(k - 1, i);
CDEBUG2(surf_sdp_out, "%d %d 2 1 1", matno, block_num);
addentry(constraints, &C, matno, block_num, 2, 1, 1.0,
CDEBUG2(surf_sdp_out, "0 %d 1 1 %f", block_num, -(cnst->bound));
addentry(constraints, &C, 0, block_num, 1, 1, -(cnst->bound),
CDEBUG2(surf_sdp_out, "0 %d 1 1 %f", block_num, -(cnst->bound));
addentry(constraints, &C, 0, block_num, 1, 1, -(cnst->bound),
elem_list = &(cnst->element_set);
xbt_swag_foreach(elem, elem_list) {
if (elem->variable->weight <= 0)
elem_list = &(cnst->element_set);
xbt_swag_foreach(elem, elem_list) {
if (elem->variable->weight <= 0)
- CDEBUG3(surf_sdp_out, "%d %d 1 1 %f", matno, block_num,
- -(elem->value));
+ CDEBUG3(surf_sdp_out, "%d %d 1 1 %f", matno, block_num, -(elem->value));
addentry(constraints, &C, matno, block_num, 1, 1, -(elem->value),
addentry(constraints, &C, matno, block_num, 1, 1, -(elem->value),
matno = get_y(K, i);
CDEBUG2(surf_sdp_out, "%d %d 1 1 1", matno, block_num);
addentry(constraints, &C, matno, block_num, 1, 1, 1.0,
matno = get_y(K, i);
CDEBUG2(surf_sdp_out, "%d %d 1 1 1", matno, block_num);
addentry(constraints, &C, matno, block_num, 1, 1, 1.0,
matno = get_y(K, var->index);
CDEBUG3(surf_sdp_out, "%d %d 1 1 %f", matno, block_num, var->bound);
addentry(constraints, &C, matno, block_num, 1, 1, var->bound,
matno = get_y(K, var->index);
CDEBUG3(surf_sdp_out, "%d %d 1 1 %f", matno, block_num, var->bound);
addentry(constraints, &C, matno, block_num, 1, 1, var->bound,
blocksz = C.blocks[i].blocksize;
tempdiag = (double *) calloc((blocksz + 1), sizeof(double));
for (j = 1; j <= blocksz; j++)
blocksz = C.blocks[i].blocksize;
tempdiag = (double *) calloc((blocksz + 1), sizeof(double));
for (j = 1; j <= blocksz; j++)
free(C.blocks[i].data.mat);
C.blocks[i].data.vec = tempdiag;
C.blocks[i].blockcategory = DIAG;
free(C.blocks[i].data.mat);
C.blocks[i].data.vec = tempdiag;
C.blocks[i].blockcategory = DIAG;
- easy_sdp(total_block_size, nb_var, C, a, constraints, 0.0, &X, &y,
- &Z, &pobj, &dobj);
+ easy_sdp(total_block_size, nb_var, C, a, constraints, 0.0, &X, &y,
+ &Z, &pobj, &dobj);
- ("Partial SUCCESS A solution has been found, but full accuracy was not achieved. One or more of primal infeasibility, dual infeasibility, or relative duality gap are larger than their tolerances, but by a factor of less than 1000.");
+ ("Partial SUCCESS A solution has been found, but full accuracy was not achieved. One or more of primal infeasibility, dual infeasibility, or relative duality gap are larger than their tolerances, but by a factor of less than 1000.");
elem_list = &(cnst->element_set);
xbt_swag_foreach(elem, elem_list) {
if (elem->variable->weight <= 0)
elem_list = &(cnst->element_set);
xbt_swag_foreach(elem, elem_list) {
if (elem->variable->weight <= 0)
i = (int) get_y(K, elem->variable->index);
elem->variable->value = y[i];
i = (int) get_y(K, elem->variable->index);
elem->variable->value = y[i];
- blk = p->blocknum;
-
- /*
- * link in the remaining blocks.
- */
- for (j = i + 1; j <= k; j++) {
- q = myconstraints[j].blocks;
-
- while (q != NULL) {
- if (q->blocknum == p->blocknum) {
- if (p->nextbyblock == NULL) {
- p->nextbyblock = q;
- q->nextbyblock = NULL;
- prev = q;
- } else {
- prev->nextbyblock = q;
- q->nextbyblock = NULL;
- prev = q;
- }
- break;
- }
- q = q->next;
- }
- }
+ blk = p->blocknum;
+
+ /*
+ * link in the remaining blocks.
+ */
+ for (j = i + 1; j <= k; j++) {
+ q = myconstraints[j].blocks;
+
+ while (q != NULL) {
+ if (q->blocknum == p->blocknum) {
+ if (p->nextbyblock == NULL) {
+ p->nextbyblock = q;
+ q->nextbyblock = NULL;
+ prev = q;
+ } else {
+ prev->nextbyblock = q;
+ q->nextbyblock = NULL;
+ prev = q;
+ }
+ break;
+ }
+ q = q->next;
+ }
+ }
- struct blockmatrix *C,
- int matno,
- int blkno, int indexi, int indexj, double ent, int blocksize)
+ struct blockmatrix *C,
+ int matno,
+ int blkno, int indexi, int indexj, double ent, int blocksize)
- if (p->blocknum == blkno) {
- /*
- * Found the right block.
- */
- p->constraintnum = matno;
- p->blocknum = blkno;
- p->numentries = p->numentries + 1;
-
- p->entries =
- realloc(p->entries, (p->numentries + 1) * sizeof(double));
- p->iindices =
- realloc(p->iindices, (p->numentries + 1) * sizeof(int));
- p->jindices =
- realloc(p->jindices, (p->numentries + 1) * sizeof(int));
-
- p->entries[p->numentries] = ent;
- p->iindices[p->numentries] = indexi;
- p->jindices[p->numentries] = indexj;
-
- return;
- }
- p_sav = p;
- p = p->next;
+ if (p->blocknum == blkno) {
+ /*
+ * Found the right block.
+ */
+ p->constraintnum = matno;
+ p->blocknum = blkno;
+ p->numentries = p->numentries + 1;
+
+ p->entries =
+ realloc(p->entries, (p->numentries + 1) * sizeof(double));
+ p->iindices =
+ realloc(p->iindices, (p->numentries + 1) * sizeof(int));
+ p->jindices =
+ realloc(p->jindices, (p->numentries + 1) * sizeof(int));
+
+ p->entries[p->numentries] = ent;
+ p->iindices[p->numentries] = indexi;
+ p->jindices[p->numentries] = indexj;
+
+ return;
+ }
+ p_sav = p;
+ p = p->next;
- C->blocks[blkno].data.mat[ijtok(indexi, indexj, blksz)] = ent;
- C->blocks[blkno].data.mat[ijtok(indexj, indexi, blksz)] = ent;
+ C->blocks[blkno].data.mat[ijtok(indexi, indexj, blksz)] = ent;
+ C->blocks[blkno].data.mat[ijtok(indexj, indexi, blksz)] = ent;