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