Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Correction of a function and adding a setter.
[mapping.git] / src / and / Mapping / Maheve.java
index 4a24142..c466778 100644 (file)
@@ -250,14 +250,14 @@ public class Maheve extends Algo
                                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++ )
                                        {
-                                               g = sortedCluster.get( i ).nextGNode() ;
+                                               g = sortedCluster.get( i ).moreGNode() ;
                                                ret.add( g ) ;
-                                               sortedCluster.get( i ).setGNodeStatus( g, true ) ;
                                                
                                                nbFound ++ ;
                                                
@@ -297,19 +297,25 @@ public class Maheve extends Algo
                        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++ )
                        {
-                               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 **/
-                               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 ;