From 2e376d7c01ee1d21100df2eac196e9ef5950169e Mon Sep 17 00:00:00 2001 From: velho Date: Wed, 27 Jun 2007 16:00:23 +0000 Subject: [PATCH 1/1] Added function prototypes in maxmin_private, minor bug corrections in surf.c. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3605 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- src/surf/lagrange.c | 10 ++++++++-- src/surf/maxmin_private.h | 6 ++++++ src/surf/surf.c | 5 ++++- src/surf/surf_private.h | 1 + 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/surf/lagrange.c b/src/surf/lagrange.c index 7cf03324c6..c3aa908cf4 100644 --- a/src/surf/lagrange.c +++ b/src/surf/lagrange.c @@ -306,9 +306,9 @@ double partial_diff_mu(double mu, void *param_var){ //for each link with capacity cnsts[i] that uses flow of variable var do for(i=0; icnsts_number; i++) - mu_partial += (var->cnsts[i].constraint)->lambda + mu; + mu_partial += (var->cnsts[i].constraint)->lambda; - mu_partial = (-1.0/mu_partial) + var->bound; + mu_partial = ( -1.0 / (mu_partial + mu) ) + var->bound; return mu_partial; } @@ -369,3 +369,9 @@ double partial_diff_lambda(double lambda, void *param_cnst){ } + + + + + + diff --git a/src/surf/maxmin_private.h b/src/surf/maxmin_private.h index 034a25202e..7f503dfa7b 100644 --- a/src/surf/maxmin_private.h +++ b/src/surf/maxmin_private.h @@ -54,8 +54,14 @@ typedef struct lmm_variable { double mu; double new_mu; double value; + double df; /* Total delay of flow */ void *id; int index; + double (* func_f) (lmm_variable var, double x); /* f */ + double (* func_fp) (lmm_variable var, double x); /* f' */ + double (* func_fpi) (lmm_variable var, double x); /* (f')^{-1} */ + double (* func_fpip) (lmm_variable var, double x); /* ((f')^{-1})' */ + double func_fi; } s_lmm_variable_t; typedef struct lmm_system { diff --git a/src/surf/surf.c b/src/surf/surf.c index 89b92c3cd2..ee88a0f106 100644 --- a/src/surf/surf.c +++ b/src/surf/surf.c @@ -14,6 +14,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_kernel, surf, "Logging specific to SURF (kernel)"); int use_sdp_solver=0; +int use_lagrange_solver=0; /* Additional declarations for Windows potability. */ @@ -144,12 +145,14 @@ double generic_maxmin_share_resources2(xbt_swag_t running_actions, if(!use_sdp_solver) lmm_solve(sys); - else { + else if(!use_lagrange_solver){ #ifdef HAVE_SDP sdp_solve(sys); #else xbt_assert0(0, "No CSDP found! You cannot use this model!"); #endif + }else{ + lagrange_solve(sys); } xbt_swag_foreach(action, running_actions) { diff --git a/src/surf/surf_private.h b/src/surf/surf_private.h index 9b27052744..51dbd5fdac 100644 --- a/src/surf/surf_private.h +++ b/src/surf/surf_private.h @@ -45,6 +45,7 @@ typedef struct surf_resource_private { /* #define priv2pub(r) ((void *) ((char *)(r) +(sizeof(struct surf_resource_private_part)))) */ extern int use_sdp_solver; +extern int use_lagrange_solver; double generic_maxmin_share_resources(xbt_swag_t running_actions, size_t offset); -- 2.20.1