Explorar el Código

Add heuristic column height to fragmentation score

Taddeus Kroes hace 6 años
padre
commit
5efb10b4e5
Se han modificado 1 ficheros con 3 adiciones y 1 borrados
  1. 3 1
      strategy.py

+ 3 - 1
strategy.py

@@ -201,6 +201,7 @@ class State:
         """
         """
         Minimize the sum of dist(i,j) between all blocks i,j of the same color.
         Minimize the sum of dist(i,j) between all blocks i,j of the same color.
         Magnify vertical distances to avoid column stacking.
         Magnify vertical distances to avoid column stacking.
+        Add the vertical components of i and j to prioritize lower columns.
         """
         """
         def dist(i, j):
         def dist(i, j):
             yi, xi = divmod(i, COLUMNS)
             yi, xi = divmod(i, COLUMNS)
@@ -211,7 +212,8 @@ class State:
             if self.groups[i] == self.groups[j]:
             if self.groups[i] == self.groups[j]:
                 return abs(yj - yi)
                 return abs(yj - yi)
 
 
-            return abs(xj - xi) + abs(yj - yi) * 2 - 1
+            return abs(xj - xi) + abs(yj - yi) * 2 - 1 + \
+                   (self.nrows - yi) + (self.nrows - yj)
 
 
         colors = {}
         colors = {}
         for i, block in enumerate(self.blocks):
         for i, block in enumerate(self.blocks):