- constraint min conne
authorMatthias Wachs <wachs@net.in.tum.de>
Wed, 18 Jan 2012 13:38:43 +0000 (13:38 +0000)
committerMatthias Wachs <wachs@net.in.tum.de>
Wed, 18 Jan 2012 13:38:43 +0000 (13:38 +0000)
src/ats/gnunet-service-ats_addresses_mlp.c
src/ats/gnunet-service-ats_addresses_mlp.h

index 54abd9d8958359592aca54778db8a27b1543ab95..c3a7cfb5c9d43e420db980815d1bc5050584949b 100644 (file)
@@ -249,6 +249,14 @@ create_constraint_it (void *cls, const GNUNET_HashCode * key, void *value)
   mlp->ar[mlp->ci] = -mlp->b_min;
   mlp->ci++;
 
+  /* c 4) minimum connections
+   *      (1)*n_1 + ... + (1)*n_m >= n_min
+   */
+  mlp->ia[mlp->ci] = mlp->r_c4;
+  mlp->ja[mlp->ci] = mlpi->c_n;
+  mlp->ar[mlp->ci] = 1;
+  mlp->ci++;
+
   return GNUNET_OK;
 }
 
@@ -322,8 +330,13 @@ mlp_add_constraints_all_addresses (struct GAS_MLP_Handle *mlp, struct GNUNET_CON
 
   /* c 1) bandwidth capping */
   /* c 3) minimum bandwidth */
+  /* c 4) minimum number of connections */
+  mlp->r_c4 = glp_add_rows (mlp->prob, 1);
+  glp_set_row_bnds (mlp->prob, mlp->r_c4, GLP_LO, mlp->n_min, 0.0);
+
   GNUNET_CONTAINER_multihashmap_iterate (addresses, create_constraint_it, mlp);
 
+
 }
 
 /**
index bb86d2251d90e75b27d0fcd6f242fe5050128f39..3878b0f5f85824e28bd6739fb70db57910ca91de 100644 (file)
@@ -146,6 +146,9 @@ struct GAS_MLP_Handle
   unsigned int cm_size;
   unsigned int ci;
 
+  /* Row index constraint 4: minimum connections */
+  unsigned int r_c4;
+
   /* column index Diversity (D) column */
   int c_d;
   double co_D;