Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Correction of a function and adding a setter.
authorSébastien Miquée <sebastien.miquee@univ-fcomte.fr>
Fri, 9 Jul 2010 11:44:36 +0000 (13:44 +0200)
committerSébastien Miquée <sebastien.miquee@univ-fcomte.fr>
Fri, 9 Jul 2010 11:44:36 +0000 (13:44 +0200)
src/and/Mapping/Cluster.java
src/and/Mapping/Maheve.java

index 712f17c..588c26e 100644 (file)
@@ -168,15 +168,24 @@ public class Cluster implements Serializable
                {
                        if( moreNode >= freenodes.size() )
                        {
                {
                        if( moreNode >= freenodes.size() )
                        {
-                               moreNode = 0 ;
+                               System.err.println( "No more free node available" );
+                       } else {
+                               ret = freenodes.get( moreNode ) ;
+                               moreNode++ ;
                        }
                        }
-                       
-                       ret = freenodes.get( moreNode ) ;
-                       moreNode++ ;
                }
                
                return ret ;
        }
                }
                
                return ret ;
        }
+       
+       
+       /**
+        * (Re-)Initialize the moreNode counter. 
+        */
+       public void initMoreGNode()
+       {
+               moreNode = 0 ;
+       }
 
 
        /**
 
 
        /**
@@ -270,9 +279,8 @@ public class Cluster implements Serializable
        
        
        /**
        
        
        /**
-        * Compute and return the real available computing power of the cluster,
-        * including the heterogeneity degree of the platform. 
-        * @return The real available computing power
+        * Compute and return the available computing power of the cluster.
+        * @return The available computing power
         */
        public double getAvailablePower()
        {
         */
        public double getAvailablePower()
        {
@@ -289,7 +297,65 @@ public class Cluster implements Serializable
                
                return ret ;
        }
                
                return ret ;
        }
+       
+       
+       /**
+        * Compute and return the average available computing power of the cluster.
+        * @return The available available computing power
+        */
+       public double getAvgAvailablePower()
+       {
+               double ret = 0 ;
+               
+               /** If there is some available nodes **/
+               if( freenodes.size() > 0 )
+               {                                               
+                       for( int i = 0 ; i < freenodes.size() ; i++ )
+                       {
+                               ret += freenodes.get( i ).getPower() ;
+                       }
+                       
+                       ret = ret / freenodes.size() ;
+               }
+               
+               return ret ;
+       }
 
 
+       
+       public double getAvgPower()
+       {
+               double ret = 0 ;
+               
+               /** If there is some available nodes **/
+               if( nodes.size() > 0 )
+               {                                               
+                       for( int i = 0 ; i < nodes.size() ; i++ )
+                       {
+                               ret += nodes.get( i ).getPower() ;
+                       }
+                       
+                       ret = ret / nodes.size() ;
+               }
+               
+               return ret ;
+       }
+       
+       
+       public double getPower()
+       {
+               double ret = 0 ;
+               
+               /** If there is some available nodes **/
+               if( nodes.size() > 0 )
+               {                                               
+                       for( int i = 0 ; i < nodes.size() ; i++ )
+                       {
+                               ret += nodes.get( i ).getPower() ;
+                       }
+               }
+               
+               return ret ;
+       }
 
        /**
         * Initialization of computing nodes in this cluster. Set all
 
        /**
         * Initialization of computing nodes in this cluster. Set all
index 4a24142..c466778 100644 (file)
@@ -250,14 +250,14 @@ public class Maheve extends Algo
                                if( sortedCluster.get( i ).getNbFreeNodes() >= minNode )
                                {
                                        max = 0 ;
                                if( sortedCluster.get( i ).getNbFreeNodes() >= minNode )
                                {
                                        max = 0 ;
+                                       sortedCluster.get( i ).initMoreGNode() ;
                                        
                                        max = sortedCluster.get( i ).getNbFreeNodes() - nbSave ;
                                        
                                        for( int j = 0 ; j < max ; j++ )
                                        {
                                        
                                        max = sortedCluster.get( i ).getNbFreeNodes() - nbSave ;
                                        
                                        for( int j = 0 ; j < max ; j++ )
                                        {
-                                               g = sortedCluster.get( i ).nextGNode() ;
+                                               g = sortedCluster.get( i ).moreGNode() ;
                                                ret.add( g ) ;
                                                ret.add( g ) ;
-                                               sortedCluster.get( i ).setGNodeStatus( g, true ) ;
                                                
                                                nbFound ++ ;
                                                
                                                
                                                nbFound ++ ;
                                                
@@ -297,19 +297,25 @@ public class Maheve extends Algo
                        boolean ok ;
                        
                        double calcLoc = 0 ;
                        boolean ok ;
                        
                        double calcLoc = 0 ;
-                       double locP ;
-                       int N ;
-                       double P ;
+                       double normN ;
+                       double normP ;
+                       
+                       double Nm = 0, Pm = 0 ;
+                       
+                       for( int i = 0 ; i < tmp.size() ; i++ )
+                       {
+                               Nm += tmp.get( i ).getNbFreeNodes() ;
+                               Pm += tmp.get( i ).getAvgAvailablePower() ;
+                       }
                        
                        for( int i = 0 ; i < tmp.size() ; i++ )
                        {
                        
                        for( int i = 0 ; i < tmp.size() ; i++ )
                        {
-                               N = tmp.get( i ).getNbFreeNodes() ;
-                               P = tmp.get( i ).getAvailablePower() ;
-                               locP = P / N ;
+                               normN = tmp.get( i ).getNbFreeNodes() * 100 / Nm ;
+                               normP = tmp.get( i ).getAvgAvailablePower() * 100 / Pm ;
                                
                                /** The magic formula :P **/
                                
                                /** The magic formula :P **/
-                               calcLoc = Math.sqrt( locP * Math.pow((1.5 * hd + 0.3), 2) +
-                                                N * Math.pow((1.1 - hd), 2 ) ) ;
+                               calcLoc = Math.sqrt( Math.pow( (normP * hd), 2) +
+                                                 Math.pow( (normN *(1 - hd)), 2 ) ) ;
                                
                                ok = false ;
                                
                                
                                ok = false ;