diff --git a/src/fortesting.py b/src/fortesting.py
index a4db43f569ca4240fcadab89f8353fa731789770..880385c6653859e8d85c9323326266520de6d85e 100644
--- a/src/fortesting.py
+++ b/src/fortesting.py
@@ -21,7 +21,7 @@ def count_crossings_via_variables(c_vars):
     for c_var in c_vars.values():
         if c_var.varValue == 1:
             crossings += 1
-    print("Crossings:", crossings)
+    return(crossings)
 
 def solve_bipartite_minimization(graph_file):
     logging.info(f"Prozess für {graph_file} gestartet")
@@ -57,7 +57,23 @@ def solve_bipartite_minimization(graph_file):
     # Zielfunktion, die minimiert werden soll
     prob += lpSum(c.values())
     logging.info("Zielfunktion aufgestellt.")
+    
+    # Definieren der Crossing Constraints effizienter
+    # Crossing Constraints basierend auf Kantenpaaren
+    
+    edges.sort(key=lambda x: x[0])  # Sortieren der Kanten nach dem Startknoten
+    for idx, (i, j) in enumerate(edges):
+        for (k, l) in edges[idx + 1:]:
+            if k > i:  # Da die Liste sortiert ist, brauchen wir nur k > i zu prüfen
+                if (i, j, k, l) not in c:
+                    c[(i, j, k, l)] = LpVariable(f"c_{i}_{j}_{k}_{l}", 0, 1, cat='Binary')
+                if j > l:
+                    prob += c[(i, j, k, l)] == y[(l, j)]
+                elif l > j:
+                    prob += c[(i, j, k, l)] == 1 - y[(j, l)]
 
+
+    """
     # Crossing Constraints basierend auf Kantenpaaren
     for (i, j) in edges:
         for (k, l) in edges:
@@ -71,6 +87,7 @@ def solve_bipartite_minimization(graph_file):
                 if l > j:
                     prob += c[(i, j, k, l)] == 1 - y[(j, l)]  
     logging.info("Crossing Constraints aufgestellt.")
+    """
 
     initial_crossings = count_initial_crossings(edges)
     logging.info(f"Initial crossings edges: {initial_crossings}")
@@ -135,20 +152,32 @@ def solve_bipartite_minimization(graph_file):
                 if in_degree[neighbor] == 0:
                     zero_in_degree_queue.append(neighbor)
 
-        for b in sorted_b:
-            print(f"{b}")
-        """ # Ausgabe der sortierten Knoten
+        a = count_crossings_via_variables(c)
+
+        # Ausgabe der sortierten Knoten
         os.makedirs(os.path.dirname(output_file), exist_ok=True)
         with open(output_file, 'w') as f:
             for b in sorted_b:
                 f.write(f"{b}\n")
                 print(f"{b}")
-        count_crossings_via_variables(c)
-        logging.info(f"Ergebnisse in {output_file} gespeichert")"""
+            f.write(f"Crossings: {a}\n")        
+        print("Crossings: ", a)
+        logging.info(f"Ergebnisse in {output_file} gespeichert")
     else:
         logging.warning("Keine optimale Lösung gefunden.")
 
+def process_directory(directory_path):
+    # Durchlaufe alle Dateien im angegebenen Verzeichnis
+    for filename in os.listdir(directory_path):
+        if filename.endswith('.gr'):  # Überprüfen, ob die Datei eine .gr Datei ist
+            file_path = os.path.join(directory_path, filename)
+            solve_bipartite_minimization(file_path)  # Rufe die Verarbeitungsfunktion für jede .gr Datei auf
+            logging.info(f"Verarbeitung abgeschlossen für {file_path}")
+
+
+directory_path = 'githubtests/tiny_test_set/instances/'
+process_directory(directory_path)
 
-test_file = 'githubtests/tiny_test_set/instances/website_20.gr'
+#test_file = 'githubtests/tiny_test_set/instances/complete_4_5.gr'
 #test_file = 'test_instances/0.gr'
-solve_bipartite_minimization(test_file)
+#solve_bipartite_minimization(test_file)
diff --git a/src/main.py b/src/main.py
index 02577d6c53d358838183a4d72c24ddae31def6e0..1d8d3a80bc4b0bcd91aacbfe63d37d4812405627 100644
--- a/src/main.py
+++ b/src/main.py
@@ -48,7 +48,19 @@ def solve_bipartite_minimization(graph_file):
     # Zielfunktion, die minimiert werden soll
     prob += lpSum(c.values())
     logging.info("Zielfunktion aufgestellt.")
-
+    """
+    edges.sort(key=lambda x: x[0])  # Sortieren der Kanten nach dem Startknoten
+    for idx, (i, j) in enumerate(edges):
+        for (k, l) in edges[idx + 1:]:
+            if k > i:  # Da die Liste sortiert ist, brauchen wir nur k > i zu prüfen
+                if (i, j, k, l) not in c:
+                    c[(i, j, k, l)] = LpVariable(f"c_{i}_{j}_{k}_{l}", 0, 1, cat='Binary')
+                if j > l:
+                    prob += c[(i, j, k, l)] == y[(l, j)]
+                elif l > j:
+                    prob += c[(i, j, k, l)] == 1 - y[(j, l)]
+    logging.info("Crossing Constraints aufgestellt.")
+    """
     # Crossing Constraints basierend auf Kantenpaaren
     for (i, j) in edges:
         for (k, l) in edges:
@@ -62,6 +74,8 @@ def solve_bipartite_minimization(graph_file):
                 if l > j:
                     prob += c[(i, j, k, l)] == 1 - y[(j, l)]  # Verwende .get() für sichere Zugriffe
     logging.info("Crossing Constraints aufgestellt.")
+    
+
 
     prob.solve()
     logging.info(f"Status der Lösung: {LpStatus[prob.status]}")
@@ -76,7 +90,6 @@ def solve_bipartite_minimization(graph_file):
     for key, var in c.items():
         print(f"c[{key}] = {var.varValue}")
     """
-
     if prob.status == LpStatusOptimal:
         logging.info("Optimale Lösung gefunden. Ergebnisse werden gespeichert.")
 
@@ -122,5 +135,5 @@ def solve_bipartite_minimization(graph_file):
 
 
 #test_file = 'githubtests/tiny_test_set/instances/grid_9_shuffled.gr'
-test_file = 'test_instances/0.gr'
+test_file = 'test_instances/1.gr'
 solve_bipartite_minimization(test_file)
diff --git a/src/solution_instances/0.sol b/src/solution_instances/0.sol
index 292ff76f03cd38c78e04979106e1fcb289a304c8..c9a1c6728a5c124d4d27481f0bbc1859216e5700 100644
--- a/src/solution_instances/0.sol
+++ b/src/solution_instances/0.sol
@@ -1,3 +1,4 @@
 5
 4
 6
+Crossings: 0
diff --git a/src/solution_instances/complete_4_5.sol b/src/solution_instances/complete_4_5.sol
index b040bdf616793518cf67f1c354974d7fb51e36a5..ea99ee268e25e93ca59ca2debca04a80b3641e97 100644
--- a/src/solution_instances/complete_4_5.sol
+++ b/src/solution_instances/complete_4_5.sol
@@ -3,3 +3,4 @@
 7
 6
 5
+Crossings: 60
diff --git a/src/solution_instances/cycle_8_shuffled.sol b/src/solution_instances/cycle_8_shuffled.sol
index 3590b120515e7d1676e2cda33c21153f8137432f..b2cb16c3ab4c674f19c2d85b76579335439556d8 100644
--- a/src/solution_instances/cycle_8_shuffled.sol
+++ b/src/solution_instances/cycle_8_shuffled.sol
@@ -2,3 +2,4 @@
 7
 8
 5
+Crossings: 4
diff --git a/src/solution_instances/cycle_8_sorted.sol b/src/solution_instances/cycle_8_sorted.sol
index 5957c0fd30f1d1c724ee0cef9f31e2aa03ec8d5a..ce4c234d81787879c0a4e9f013bc57523ba513d7 100644
--- a/src/solution_instances/cycle_8_sorted.sol
+++ b/src/solution_instances/cycle_8_sorted.sol
@@ -2,3 +2,4 @@
 7
 6
 8
+Crossings: 3
diff --git a/src/solution_instances/grid_9_shuffled.sol b/src/solution_instances/grid_9_shuffled.sol
index 486c1901fbb92fd8aad5b8cf547dfa6fdc193b1c..24d0b7133eac574e6737f334af1c6cf248ea9faa 100644
--- a/src/solution_instances/grid_9_shuffled.sol
+++ b/src/solution_instances/grid_9_shuffled.sol
@@ -3,3 +3,4 @@
 7
 5
 6
+Crossings: 17
diff --git a/src/solution_instances/ladder_4_4_shuffled.sol b/src/solution_instances/ladder_4_4_shuffled.sol
index c21318104c87e7753cf77710811b96ece447c87a..d20ccb4b639a020be455749d6f544d4eb8b3d96e 100644
--- a/src/solution_instances/ladder_4_4_shuffled.sol
+++ b/src/solution_instances/ladder_4_4_shuffled.sol
@@ -2,3 +2,4 @@
 8
 5
 7
+Crossings: 11
diff --git a/src/solution_instances/ladder_4_4_sorted.sol b/src/solution_instances/ladder_4_4_sorted.sol
index 701bf8a8f0a28ca759e2be69767c8cb9ab6493be..35f149c7c8428aa5e01865c28fe73e944912d1bc 100644
--- a/src/solution_instances/ladder_4_4_sorted.sol
+++ b/src/solution_instances/ladder_4_4_sorted.sol
@@ -2,3 +2,4 @@
 8
 7
 6
+Crossings: 3
diff --git a/src/solution_instances/matching_4_4.sol b/src/solution_instances/matching_4_4.sol
index 95fc5e4e0a65822bba117e5d1693d2bb274fe32d..1370cd69a7b77b7df97b664e6eb857e43a22a361 100644
--- a/src/solution_instances/matching_4_4.sol
+++ b/src/solution_instances/matching_4_4.sol
@@ -2,3 +2,4 @@
 5
 6
 8
+Crossings: 0
diff --git a/src/solution_instances/path_9_shuffled.sol b/src/solution_instances/path_9_shuffled.sol
index e8af654cb316935458944427702fa42b22d723cc..a12444e456d1cc2ef4ff5168a617e316839b7df2 100644
--- a/src/solution_instances/path_9_shuffled.sol
+++ b/src/solution_instances/path_9_shuffled.sol
@@ -2,3 +2,4 @@
 6
 7
 9
+Crossings: 6
diff --git a/src/solution_instances/path_9_sorted.sol b/src/solution_instances/path_9_sorted.sol
index b86e09948b2f06b1fff40a5649a9cfeab507caa0..082ab63bb2e4fb8df87230c49f076c7f6031d730 100644
--- a/src/solution_instances/path_9_sorted.sol
+++ b/src/solution_instances/path_9_sorted.sol
@@ -2,3 +2,4 @@
 9
 6
 8
+Crossings: 0
diff --git a/src/solution_instances/plane_5_6.sol b/src/solution_instances/plane_5_6.sol
index e70e8bf79e2940ffedf78fd819ccda8ff13207f7..44592e234c064ce7bee5e69a50e5cf0ce6a5aeb7 100644
--- a/src/solution_instances/plane_5_6.sol
+++ b/src/solution_instances/plane_5_6.sol
@@ -4,3 +4,4 @@
 10
 7
 8
+Crossings: 0
diff --git a/src/solution_instances/star_6.sol b/src/solution_instances/star_6.sol
index dd866a9aacbaf7d0ecaa57c1d05c91901d68ee72..835c63666be0beba29833f0811654b4071ba6e29 100644
--- a/src/solution_instances/star_6.sol
+++ b/src/solution_instances/star_6.sol
@@ -4,3 +4,4 @@
 4
 6
 8
+Crossings: 0
diff --git a/src/solution_instances/tree_6_10.sol b/src/solution_instances/tree_6_10.sol
index c8e2fc5934e2f11a25743d4e3d2b8b046d00f082..dedff8a06e68c52daab6a6f2473a5355bbb2737e 100644
--- a/src/solution_instances/tree_6_10.sol
+++ b/src/solution_instances/tree_6_10.sol
@@ -8,3 +8,4 @@
 14
 15
 16
+Crossings: 13
diff --git a/src/solution_instances/website_20.sol b/src/solution_instances/website_20.sol
index 4d5dc4bcdbeb153dc564fd7db2e3231763a3368d..37dd3ec2966be51975039fac4ec4294a1765bfbb 100644
--- a/src/solution_instances/website_20.sol
+++ b/src/solution_instances/website_20.sol
@@ -8,3 +8,4 @@
 14
 16
 15
+Crossings: 17