Skip to content
Snippets Groups Projects
Commit 015034dd authored by voic00's avatar voic00
Browse files

ein kommentar zur bessren verständlichkeit später

parent f017d945
Branches
No related tags found
No related merge requests found
......@@ -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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment