gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r33267 - gnunet/src/ats
Date: Tue, 13 May 2014 21:18:09 +0200

Author: wachs
Date: 2014-05-13 21:18:09 +0200 (Tue, 13 May 2014)
New Revision: 33267

Modified:
   gnunet/src/ats/plugin_ats_mlp.c
   gnunet/src/ats/plugin_ats_mlp.h
Log:
option to disable objectives


Modified: gnunet/src/ats/plugin_ats_mlp.c
===================================================================
--- gnunet/src/ats/plugin_ats_mlp.c     2014-05-13 16:26:49 UTC (rev 33266)
+++ gnunet/src/ats/plugin_ats_mlp.c     2014-05-13 19:18:09 UTC (rev 33267)
@@ -633,8 +633,10 @@
   char *name;
   const double *props;
   double cur_bigm;
+
   uint32_t addr_net;
   uint32_t addr_net_index;
+  unsigned long long max_quota;
   int c;
 
   /* Check if we have to add this peer due to a pending request */
@@ -662,6 +664,20 @@
     return GNUNET_OK;
   }
 
+  max_quota = 0;
+  for (c = 0; c < GNUNET_ATS_NetworkTypeCount; c++)
+  {
+    if (mlp->pv.quota_out[c] > max_quota)
+      max_quota = mlp->pv.quota_out[c];
+    if (mlp->pv.quota_in[c] > max_quota)
+      max_quota = mlp->pv.quota_in[c];
+  }
+  if (max_quota > mlp->pv.BIG_M)
+    cur_bigm = (double) mlp->pv.BIG_M;
+  else
+    cur_bigm = max_quota;
+
+
   /* Get peer */
   peer = GNUNET_CONTAINER_multipeermap_get (mlp->requested_peers, key);
   if (peer->processed == GNUNET_NO)
@@ -673,12 +689,15 @@
       GNUNET_free (name);
       if (GNUNET_NO == mlp->opt_dbg_feasibility_only)
       {
-        /* Add c9) Relativity */
-        GNUNET_asprintf(&name, "c9_%s", GNUNET_i2s(&address->peer));
-        peer->r_c9 = mlp_create_problem_create_constraint (p, name, GLP_LO, 
0.0, 0.0);
-        GNUNET_free (name);
-        /* c9) set coefficient */
-        mlp_create_problem_set_value (p, peer->r_c9, p->c_r, -peer->f, 
__LINE__);
+        if (GNUNET_YES == mlp->opt_dbg_optimize_relativity)
+        {
+          /* Add c9) Relativity */
+          GNUNET_asprintf(&name, "c9_%s", GNUNET_i2s(&address->peer));
+          peer->r_c9 = mlp_create_problem_create_constraint (p, name, GLP_LO, 
0.0, 0.0);
+          GNUNET_free (name);
+          /* c9) set coefficient */
+          mlp_create_problem_set_value (p, peer->r_c9, p->c_r, -peer->f , 
__LINE__);
+        }
       }
       peer->processed = GNUNET_YES;
   }
@@ -715,7 +734,7 @@
   GNUNET_free (name);
   /*  c1) set b = 1 coefficient */
   mlp_create_problem_set_value (p, mlpi->r_c1, mlpi->c_b, 1, __LINE__);
-  /*  c1) set n = -M coefficient */
+  /*  c1) set n = - min (M, quota) coefficient */
   cur_bigm = (double) mlp->pv.quota_out[addr_net_index];
   if (cur_bigm > mlp->pv.BIG_M)
     cur_bigm = (double) mlp->pv.BIG_M;
@@ -747,44 +766,31 @@
    */
   mlp_create_problem_set_value (p, p->r_quota[addr_net_index], mlpi->c_b, 1, 
__LINE__);
 
-#if 0
-  for (c = 0; c < GNUNET_ATS_NetworkTypeCount; c++)
-  {
-    addr_net = get_performance_info (address, GNUNET_ATS_NETWORK_TYPE);
-
-    if (GNUNET_ATS_VALUE_UNDEFINED == addr_net)
-    {
-      GNUNET_break (0);
-      addr_net = GNUNET_ATS_NET_UNSPECIFIED;
-    }
-    if (mlp->pv.quota_index[c] == addr_net)
-    {
-      mlp_create_problem_set_value (p, p->r_quota[c], mlpi->c_b, 1, __LINE__);
-      break;
-    }
-  }
-#endif
-
   /* Optimality */
   if (GNUNET_NO == mlp->opt_dbg_feasibility_only)
   {
     /* c 6) maximize diversity */
     mlp_create_problem_set_value (p, p->r_c6, mlpi->c_n, 1, __LINE__);
     /* c 9) relativity */
-    mlp_create_problem_set_value (p, peer->r_c9, mlpi->c_b, 1, __LINE__);
+    if (GNUNET_YES == mlp->opt_dbg_optimize_relativity)
+      mlp_create_problem_set_value (p, peer->r_c9, mlpi->c_b, 1, __LINE__);
     /* c 8) utility */
-    mlp_create_problem_set_value (p, p->r_c8, mlpi->c_b, 1, __LINE__);
+    if (GNUNET_YES == mlp->opt_dbg_optimize_utility)
+      mlp_create_problem_set_value (p, p->r_c8, mlpi->c_b, 1, __LINE__);
     /* c 7) Optimize quality */
     /* For all quality metrics, set quality of this address */
-    props = mlp->get_properties (mlp->get_properties_cls, address);
-    for (c = 0; c < mlp->pv.m_q; c++)
+    if (GNUNET_YES == mlp->opt_dbg_optimize_quality)
     {
-      if ((props[c] < 1.0) && (props[c] > 2.0))
+      props = mlp->get_properties (mlp->get_properties_cls, address);
+      for (c = 0; c < mlp->pv.m_q; c++)
       {
-        fprintf (stderr, "PROP == %.3f \t ", props[c]);
-        GNUNET_break (0);
+        if ((props[c] < 1.0) && (props[c] > 2.0))
+        {
+          fprintf (stderr, "PROP == %.3f \t ", props[c]);
+          GNUNET_break (0);
+        }
+        mlp_create_problem_set_value (p, p->r_q[c], mlpi->c_b, props[c], 
__LINE__);
       }
-      mlp_create_problem_set_value (p, p->r_q[c], mlpi->c_b, props[c], 
__LINE__);
     }
   }
 
@@ -820,23 +826,32 @@
   {
     char *name;
     /* Add row for c6) Maximize for diversity */
-    p->r_c6 = mlp_create_problem_create_constraint (p, "c6", GLP_FX, 0.0, 0.0);
-    /* Set c6 ) Setting -D */
-    mlp_create_problem_set_value (p, p->r_c6, p->c_d, -1, __LINE__);
+    if (GNUNET_YES == mlp->opt_dbg_optimize_diversity)
+    {
+      p->r_c6 = mlp_create_problem_create_constraint (p, "c6", GLP_FX, 0.0, 
0.0);
+      /* Set c6 ) Setting -D */
+      mlp_create_problem_set_value (p, p->r_c6, p->c_d, -1, __LINE__);
+    }
 
     /* Adding rows for c 8) Maximize utility */
-    p->r_c8 = mlp_create_problem_create_constraint (p, "c8", GLP_FX, 0.0, 0.0);
-    /* -u */
-    mlp_create_problem_set_value (p, p->r_c8, p->c_u, -1, __LINE__);
+    if (GNUNET_YES == mlp->opt_dbg_optimize_utility)
+    {
+      p->r_c8 = mlp_create_problem_create_constraint (p, "c8", GLP_FX, 0.0, 
0.0);
+      /* -u */
+      mlp_create_problem_set_value (p, p->r_c8, p->c_u, -1, __LINE__);
+    }
 
     /* For all quality metrics:
-     * c 7) Maximize utilization, austerity */
-    for (c = 0; c < mlp->pv.m_q; c++)
+     * c 7) Maximize quality, austerity */
+    if (GNUNET_YES == mlp->opt_dbg_optimize_quality)
     {
-      GNUNET_asprintf(&name, "c7_q%i_%s", c, mlp_ats_to_string(mlp->pv.q[c]));
-      p->r_q[c] = mlp_create_problem_create_constraint (p, name, GLP_FX, 0.0, 
0.0);
-      GNUNET_free (name);
-      mlp_create_problem_set_value (p, p->r_q[c], p->c_q[c], -1, __LINE__);
+      for (c = 0; c < mlp->pv.m_q; c++)
+      {
+        GNUNET_asprintf(&name, "c7_q%i_%s", c, 
mlp_ats_to_string(mlp->pv.q[c]));
+        p->r_q[c] = mlp_create_problem_create_constraint (p, name, GLP_FX, 
0.0, 0.0);
+        GNUNET_free (name);
+        mlp_create_problem_set_value (p, p->r_q[c], p->c_q[c], -1, __LINE__);
+      }
     }
   }
 }
@@ -854,20 +869,26 @@
     int c;
 
     /* Diversity d column  */
-    p->c_d = mlp_create_problem_create_column (p, "d", GLP_CV, GLP_LO, 0.0, 
0.0, mlp->pv.co_D);
+    if (GNUNET_YES == mlp->opt_dbg_optimize_diversity)
+      p->c_d = mlp_create_problem_create_column (p, "d", GLP_CV, GLP_LO, 0.0, 
0.0, mlp->pv.co_D);
 
     /* Utilization u column  */
-    p->c_u = mlp_create_problem_create_column (p, "u", GLP_CV, GLP_LO, 0.0, 
0.0, mlp->pv.co_U);
+    if (GNUNET_YES == mlp->opt_dbg_optimize_utility)
+      p->c_u = mlp_create_problem_create_column (p, "u", GLP_CV, GLP_LO, 0.0, 
0.0, mlp->pv.co_U);
 
     /* Relativity r column  */
-    p->c_r = mlp_create_problem_create_column (p, "r", GLP_CV, GLP_LO, 0.0, 
0.0, mlp->pv.co_R);
+    if (GNUNET_YES == mlp->opt_dbg_optimize_relativity)
+      p->c_r = mlp_create_problem_create_column (p, "r", GLP_CV, GLP_LO, 0.0, 
0.0, mlp->pv.co_R);
 
     /* Quality metric columns */
-    for (c = 0; c < mlp->pv.m_q; c++)
+    if (GNUNET_YES == mlp->opt_dbg_optimize_quality)
     {
-      GNUNET_asprintf (&name, "q_%u", mlp->pv.q[c]);
-      p->c_q[c] = mlp_create_problem_create_column (p, name, GLP_CV, GLP_LO, 
0.0, 0.0, mlp->pv.co_Q[c]);
-      GNUNET_free (name);
+      for (c = 0; c < mlp->pv.m_q; c++)
+      {
+        GNUNET_asprintf (&name, "q_%u", mlp->pv.q[c]);
+        p->c_q[c] = mlp_create_problem_create_column (p, name, GLP_CV, GLP_LO, 
0.0, 0.0, mlp->pv.co_Q[c]);
+        GNUNET_free (name);
+      }
     }
   }
 }
@@ -1350,8 +1371,6 @@
         default:
           break;
       }
-
-
       LOG(GNUNET_ERROR_TYPE_ERROR, "Dumped problem to file: `%s' \n", 
filename);
       GNUNET_free(filename);
     }
@@ -2082,10 +2101,7 @@
      "ats", "MLP_DUMP_PROBLEM_ALL");
   if (GNUNET_SYSERR == mlp->opt_dump_problem_all)
    mlp->opt_dump_problem_all = GNUNET_NO;
-  if (GNUNET_YES == mlp->opt_dump_problem_all)
-    GNUNET_break (0);
 
-
   mlp->opt_dump_solution_all = GNUNET_CONFIGURATION_get_value_yesno (env->cfg,
      "ats", "MLP_DUMP_SOLUTION_ALL");
   if (GNUNET_SYSERR == mlp->opt_dump_solution_all)
@@ -2130,6 +2146,49 @@
     LOG (GNUNET_ERROR_TYPE_WARNING,
         "MLP solver is configured use the mlp presolver\n");
 
+  mlp->opt_dbg_optimize_diversity = GNUNET_CONFIGURATION_get_value_yesno 
(env->cfg,
+     "ats", "MLP_DBG_OPTIMIZE_DIVERSITY");
+  if (GNUNET_SYSERR == mlp->opt_dbg_optimize_diversity)
+   mlp->opt_dbg_optimize_diversity = GNUNET_YES;
+  if (GNUNET_NO == mlp->opt_dbg_optimize_diversity)
+    LOG (GNUNET_ERROR_TYPE_WARNING,
+        "MLP solver is not optimizing for diversity\n");
+
+  mlp->opt_dbg_optimize_relativity= GNUNET_CONFIGURATION_get_value_yesno 
(env->cfg,
+     "ats", "MLP_DBG_OPTIMIZE_RELATIVITY");
+  if (GNUNET_SYSERR == mlp->opt_dbg_optimize_relativity)
+   mlp->opt_dbg_optimize_relativity = GNUNET_YES;
+  if (GNUNET_NO == mlp->opt_dbg_optimize_relativity)
+    LOG (GNUNET_ERROR_TYPE_WARNING,
+        "MLP solver is not optimizing for relativity\n");
+
+  mlp->opt_dbg_optimize_quality = GNUNET_CONFIGURATION_get_value_yesno 
(env->cfg,
+     "ats", "MLP_DBG_OPTIMIZE_QUALITY");
+  if (GNUNET_SYSERR == mlp->opt_dbg_optimize_quality)
+   mlp->opt_dbg_optimize_quality = GNUNET_YES;
+  if (GNUNET_NO == mlp->opt_dbg_optimize_quality)
+    LOG (GNUNET_ERROR_TYPE_WARNING,
+        "MLP solver is not optimizing for quality\n");
+
+  mlp->opt_dbg_optimize_utility = GNUNET_CONFIGURATION_get_value_yesno 
(env->cfg,
+     "ats", "MLP_DBG_OPTIMIZE_UTILITY");
+  if (GNUNET_SYSERR == mlp->opt_dbg_optimize_utility)
+   mlp->opt_dbg_optimize_utility = GNUNET_YES;
+  if (GNUNET_NO == mlp->opt_dbg_optimize_utility)
+    LOG (GNUNET_ERROR_TYPE_WARNING,
+        "MLP solver is not optimizing for utility\n");
+
+  if ( (GNUNET_NO == mlp->opt_dbg_optimize_utility) &&
+       (GNUNET_NO == mlp->opt_dbg_optimize_quality) &&
+       (GNUNET_NO == mlp->opt_dbg_optimize_relativity) &&
+       (GNUNET_NO == mlp->opt_dbg_optimize_utility) &&
+       (GNUNET_NO == mlp->opt_dbg_feasibility_only))
+  {
+    LOG (GNUNET_ERROR_TYPE_ERROR,
+        _("MLP solver is not optimizing for anything, changing to feasibility 
check\n"));
+    mlp->opt_dbg_feasibility_only = GNUNET_YES;
+  }
+
   if (GNUNET_SYSERR == GNUNET_CONFIGURATION_get_value_string (env->cfg,
      "ats", "MLP_LOG_FORMAT", &outputformat))
    mlp->opt_log_format = MLP_CPLEX;

Modified: gnunet/src/ats/plugin_ats_mlp.h
===================================================================
--- gnunet/src/ats/plugin_ats_mlp.h     2014-05-13 16:26:49 UTC (rev 33266)
+++ gnunet/src/ats/plugin_ats_mlp.h     2014-05-13 19:18:09 UTC (rev 33267)
@@ -364,6 +364,30 @@
    */
   int opt_dbg_glpk_verbose;
 
+  /**
+   * solve autoscale the problem
+   */
+  int opt_dbg_optimize_relativity;
+
+  /**
+   * solve autoscale the problem
+   */
+  int opt_dbg_optimize_diversity;
+
+  /**
+   * solve autoscale the problem
+   */
+  int opt_dbg_optimize_quality;
+
+  /**
+   * solve autoscale the problem
+   */
+  int opt_dbg_optimize_utility;
+
+
+  /**
+   * Output format
+   */
   enum MLP_Output_Format opt_log_format;
 };
 




reply via email to

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