[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;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r26190 - gnunet/src/ats,
gnunet <=