positionalVariables={(i,j):LpVariable(f"y_{i}_{j}",0,1,cat='Binary')foriinrange(number_of_nodes_in_A+1,number_of_nodes_in_A+number_of_nodes_in_B+1)forjinrange(number_of_nodes_in_A+1,number_of_nodes_in_A+number_of_nodes_in_B+1)ifi!=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
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)}")