gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r31405 - gnunet/src/ats
Date: Mon, 16 Dec 2013 13:12:06 +0100

Author: oehlmann
Date: 2013-12-16 13:12:06 +0100 (Mon, 16 Dec 2013)
New Revision: 31405

Modified:
   gnunet/src/ats/plugin_ats_ril.c
Log:
added egalitarian utility goal

Modified: gnunet/src/ats/plugin_ats_ril.c
===================================================================
--- gnunet/src/ats/plugin_ats_ril.c     2013-12-16 12:03:28 UTC (rev 31404)
+++ gnunet/src/ats/plugin_ats_ril.c     2013-12-16 12:12:06 UTC (rev 31405)
@@ -35,6 +35,7 @@
 #define RIL_FEATURES_NETWORK_COUNT 2
 #define RIL_FEATURES_INIT_COUNT 1 + RIL_FEATURES_NETWORK_COUNT // + 
GNUNET_ATS_PreferenceCount
 #define RIL_INTERVAL_EXPONENT 10
+#define RIL_UTILITY_MAX (double) GNUNET_ATS_MaxBandwidth
 
 #define RIL_DEFAULT_STEP_TIME_MIN GNUNET_TIME_relative_multiply 
(GNUNET_TIME_UNIT_MILLISECONDS, 500)
 #define RIL_DEFAULT_STEP_TIME_MAX GNUNET_TIME_relative_multiply 
(GNUNET_TIME_UNIT_MILLISECONDS, 3000)
@@ -381,6 +382,11 @@
 static int
 ril_count_agents(struct GAS_RIL_Handle * solver);
 
+static double
+agent_get_utility (struct RIL_Peer_Agent *agent)
+{
+  return (double) agent->bw_in;
+}
 
 /**
  * Estimate the current action-value for state s and action a
@@ -947,6 +953,27 @@
 //  return (pref_match / 4) +1;
 //}
 
+static double
+envi_get_collective_utility (struct GAS_RIL_Handle *solver)
+{
+  //TODO! add nash product
+  struct RIL_Peer_Agent *cur;
+  double result = RIL_UTILITY_MAX;
+
+  for (cur = solver->agents_head; NULL != cur; cur = cur->next)
+  {
+    if (cur->is_active)
+    {
+      if (cur->address_inuse)
+      {
+        result = GNUNET_MIN(result, agent_get_utility(cur));
+      }
+    }
+  }
+
+  return result;
+}
+
 /**
  * Gets the reward for the last performed step, which is calculated in equal
  * parts from the local (the peer specific) and the global (for all peers
@@ -960,44 +987,20 @@
 envi_get_reward (struct GAS_RIL_Handle *solver, struct RIL_Peer_Agent *agent)
 {
   struct RIL_Network *net;
-//  double reward = 0;
-  long long overutilized_in = 0;
-//  long long overutilized_out;
-  long long assigned_in = 0;
-//  long long assigned_out = 0;
-//  long long unused;
 
-  //punish overutilization
+  unsigned long long objective;
+
   net = agent->address_inuse->solver_information;
-
   if (net->bw_in_assigned > net->bw_in_available)
   {
-    overutilized_in = (net->bw_in_assigned - net->bw_in_available);
-    assigned_in = net->bw_in_available;
+    objective = net->bw_in_available - net->bw_in_assigned;
   }
   else
   {
-    assigned_in = net->bw_in_assigned;
+    objective = envi_get_collective_utility(solver);
   }
-//  if (net->bw_out_assigned > net->bw_out_available)
-//  {
-//    overutilized_out = (net->bw_out_assigned - net->bw_out_available);
-//    assigned_out = net->bw_out_available;
-//  }
-//  else
-//  {
-//    assigned_out = net->bw_out_assigned;
-//  }
 
-//  unused = net->bw_in_available - net->bw_in_assigned;
-//  unused = unused < 0 ? unused : -unused;
-
-  return (double) (assigned_in - overutilized_in) / 1024;
-
-//  reward += envi_reward_global (solver) * 
(solver->parameters.reward_global_share);
-//  reward += envi_reward_local (solver, agent) * (1 - 
solver->parameters.reward_global_share);
-//
-//  return (reward - 1.) * 100;
+  return objective;
 }
 
 /**




reply via email to

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