gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r26190 - gnunet/src/ats


From: gnunet
Subject: [GNUnet-SVN] r26190 - gnunet/src/ats
Date: Fri, 22 Feb 2013 15:28:56 +0100

Author: wachs
Date: 2013-02-22 15:28:56 +0100 (Fri, 22 Feb 2013)
New Revision: 26190

Modified:
   gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
   gnunet/src/ats/gnunet-service-ats_addresses_mlp.h
Log:
create set_value function


Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2013-02-22 14:17:57 UTC 
(rev 26189)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2013-02-22 14:28:56 UTC 
(rev 26190)
@@ -1095,6 +1095,23 @@
 
 }
 
+static void
+mlp_create_problem_set_value (struct MLP_Problem *p, int row, int col, double 
val)
+{
+       if ((p->ci + 1) >= p->num_elements)
+       {
+               GNUNET_break (0);
+               return;
+       }
+  p->ia[p->ci] = row ;
+  p->ja[p->ci] = col;
+  p->ar[p->ci] = val;
+#if  DEBUG_MLP_PROBLEM_CREATION
+       LOG (GNUNET_ERROR_TYPE_DEBUG, "[P]: Set value [%u,%u] ==  %.2f\n",
+                       p->ia[p->ci], p->ja[p->ci], p->ar[p->ci]);
+#endif
+  p->ci++;
+}
 
 /**
  * Create the invariant columns c4, c6, c10, c8, c7
@@ -1132,16 +1149,8 @@
                        "==", 0);
 #endif
   /* c6 )Setting -D */
-  p->ia[p->ci] = p->r_c6 ;
-  p->ja[p->ci] = p->c_d;
-  p->ar[p->ci] = -1;
-#if  DEBUG_MLP_PROBLEM_CREATION
-       LOG (GNUNET_ERROR_TYPE_DEBUG, "[P]: Set value [%u,%u] ==  %.2f\n",
-                       p->ia[p->ci], p->ja[p->ci], p->ar[p->ci]);
-#endif
-  p->ci++;
+       mlp_create_problem_set_value (p, p->r_c6, p->c_d, -1);
 
-
   /* Add rows for c 10) */
   for (c = 0; c < GNUNET_ATS_NetworkTypeCount; c++)
   {
@@ -1171,16 +1180,8 @@
                                "==", 0);
 #endif
   /* -u */
-       p->ia[p->ci] = p->r_c8;
-       p->ja[p->ci] = p->c_u;
-       p->ar[p->ci] = -1;
-#if  DEBUG_MLP_PROBLEM_CREATION
-       LOG (GNUNET_ERROR_TYPE_DEBUG, "[P]: Set value [%u,%u] ==  %.2f\n",
-                       p->ia[p->ci], p->ja[p->ci], p->ar[p->ci]);
-#endif
-  p->ci++;
+       mlp_create_problem_set_value (p, p->r_c8, p->c_u, -1);
 
-
        /* c 7) For all quality metrics */
        for (c = 0; c < mlp->pv.m_q; c++)
        {
@@ -1195,14 +1196,7 @@
                                "==", 0);
 #endif
                GNUNET_free (name);
-               p->ia[p->ci] = p->r_q[c];
-               p->ja[p->ci] = p->c_q[c];
-               p->ar[p->ci] = -1;
-#if  DEBUG_MLP_PROBLEM_CREATION
-               LOG (GNUNET_ERROR_TYPE_DEBUG, "[P]: Set value [%u,%u] ==  
%.2f\n",
-                               p->ia[p->ci], p->ja[p->ci], p->ar[p->ci]);
-#endif
-    p->ci++;
+               mlp_create_problem_set_value (p, p->r_q[c], p->c_q[c], -1);
        }
 }
 
@@ -1289,7 +1283,6 @@
 {
   struct MLP_Problem *p = &mlp->p;
        int res = GNUNET_OK;
-       int elements;
 
   GNUNET_assert (p->prob == NULL);
   GNUNET_assert (p->ia == NULL);
@@ -1302,10 +1295,10 @@
   GNUNET_assert (NULL != p->prob);
   p->num_peers = GNUNET_CONTAINER_multihashmap_size (mlp->peers);
   p->num_addresses = mlp_create_problem_count_addresses (addresses, 
mlp->peers);
+  p->num_elements = ((7 * p->num_addresses) + (5 * p->num_addresses +  
mlp->pv.m_q + p->num_peers + 2) + 1);
+       LOG (GNUNET_ERROR_TYPE_DEBUG, "Rebuilding problem for %u peer(s) and %u 
addresse(s) == %u elements\n",
+                       p->num_peers, p->num_addresses, p->num_elements);
 
-       LOG (GNUNET_ERROR_TYPE_DEBUG, "Rebuilding problem for %u peer(s) and %u 
addresse(s)\n",
-                       p->num_peers, p->num_addresses);
-
   /* Set a problem name */
   glp_set_prob_name (p->prob, "GNUnet ats bandwidth distribution");
   /* Set optimization direction to maximize */
@@ -1313,16 +1306,15 @@
 
   /* Create problem matrix */
   /* last +1 caused by glpk index starting with one: [1..elements]*/
-  elements = ((7 * p->num_addresses) + (5 * p->num_addresses +  mlp->pv.m_q + 
p->num_peers + 2) + 1);
   p->ci = 1;
   /* row index */
-  int *ia = GNUNET_malloc (elements * sizeof (int));
+  int *ia = GNUNET_malloc (p->num_elements * sizeof (int));
   p->ia = ia;
   /* column index */
-  int *ja = GNUNET_malloc (elements * sizeof (int));
+  int *ja = GNUNET_malloc (p->num_elements * sizeof (int));
   p->ja = ja;
   /* coefficient */
-  double *ar= GNUNET_malloc (elements * sizeof (double));
+  double *ar= GNUNET_malloc (p->num_elements * sizeof (double));
   p->ar = ar;
 
   /* Adding invariant columns */

Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.h   2013-02-22 14:17:57 UTC 
(rev 26189)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.h   2013-02-22 14:28:56 UTC 
(rev 26190)
@@ -104,6 +104,8 @@
   unsigned int num_addresses;
   /* Number of peers in problem */
   unsigned int num_peers;
+  /* Number of elements in problem matrix */
+  unsigned int num_elements;
 
   /* Row index constraint 2: */
   unsigned int r_c2;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]