From 015034dd3de4d31492503112d20a0d386fe8022d Mon Sep 17 00:00:00 2001
From: voic00 <voic00@mi.fu-berlin.de>
Date: Fri, 7 Jun 2024 18:23:38 +0200
Subject: [PATCH] =?UTF-8?q?ein=20kommentar=20zur=20bessren=20verst=C3=A4nd?=
 =?UTF-8?q?lichkeit=20sp=C3=A4ter?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main_iterative_opt.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/main_iterative_opt.py b/src/main_iterative_opt.py
index 268f6c4..ccc098f 100644
--- a/src/main_iterative_opt.py
+++ b/src/main_iterative_opt.py
@@ -199,9 +199,10 @@ def solve_bipartite_minimization(graph_file):
     #     for (k, l) in edges:
 
             
-    positionalVariables = {(i, j): LpVariable(f"y_{i}_{j}", 0, 1, cat='Binary') for i in range(number_of_nodes_in_A + 1, number_of_nodes_in_A + number_of_nodes_in_B + 1) for j in range(number_of_nodes_in_A + 1, number_of_nodes_in_A + number_of_nodes_in_B + 1) if i != j and not (i, j) in positional_vars_degree_one_nodes_only}
-    # Variable c(i,j,k,l) : Kreuzt die Kante zwischen i-j die Kante zwischen k-l
-    crossingVariables = {(i, j, k, l): LpVariable(f"c_{i}_{j}_{k}_{l}", 0, 1, cat='Binary') for (i, j) in edges for (k, l) in edges}
+    positionalVariables = {(i, j): LpVariable(f"y_{i}_{j}", 0, 1, cat='Binary') for i in range(number_of_nodes_in_A + 1, number_of_nodes_in_A + number_of_nodes_in_B + 1) for j in range(number_of_nodes_in_A + 1, number_of_nodes_in_A + number_of_nodes_in_B + 1) if i != j}# and not (i, j) in positional_vars_degree_one_nodes_only}
+    # Variable c(i,j,k,l) : Kreuzt die Kante zwischen i-j die Kante zwischen k-l (wobei i, k Knoten in A und j,l Knoten in B)
+    # Da sich Kanten nicht im Knoten Kreuzen können müsst man i!=k und j!=l als Bedingung einfügen  
+    crossingVariables = {(i, j, k, l): LpVariable(f"c_{i}_{j}_{k}_{l}", 0, 1, cat='Binary') for (i, j) in edges for (k, l) in edges if (i,j)!=(k,l) and j!=l}
     logging.info("y und c geladen.")
     logging.info(f"Positions Variablen y: gesamt erwartet {number_of_nodes_in_B * (number_of_nodes_in_B - 1)}, davon wirklich gesamt {len(positional_vars_degree_one_nodes_only) + len(positionalVariables)}, für Knoten mit Grad 1: {len(positional_vars_degree_one_nodes_only)}, für Knoten mit Grad > 1: {len(positionalVariables)}")
 
@@ -210,6 +211,8 @@ def solve_bipartite_minimization(graph_file):
 
     for (i, j) in edges:
         for (k, l) in edges:
+            if j==l or (i,j)==(k,l):
+                continue
             if k > i:
                 if j > l:
                     prob += crossingVariables[(i, j, k, l)] == positionalVariables[(l, j)]
@@ -313,5 +316,5 @@ def process_directory(directory_path):
 
 # test_file = 'githubtests/tiny_test_set/instances/complete_4_5.gr'
 test_file = 'githubtests/medium_test_set/instances/10.gr'
-#test_file = 'mytests/instances/80.gr'
+# test_file = 'mytests/instances/99.gr'
 solve_bipartite_minimization(test_file)
-- 
GitLab