# -*- coding: utf-8 -*- """ Warehouse Location Problem vereinfacht """ from gurobipy import Model, GRB, quicksum """ Parameter """ # Fixkosten der Eröffnung der Standorte i f = [5, 6] # Kapazitäten der Standorte i a = [8, 9] # Nachfrage der Kunden j b = [5, 3, 7] # Kosten für die Lieferung einer Einheit von Standort i zu Kunde j c = [[9, 6, 7], [7, 3, 6]] """ Definition Modell """ model_general = Model("WLP Vorlesung allgemein") m = 2 # Mögliche Standorte i n = 3 # Kunden j M = range(m) N = range(n) ## Variablen ################################################################## # Transportmenge von Standort i zu Kunde j x = model_general.addVars(M, N, lb=0, vtype=GRB.CONTINUOUS, name="x") # Eröffnung Standort i y = model_general.addVars(M, vtype=GRB.BINARY, name="y") model_general.update() # Variablen werden System bekannt gemacht ## Nebenbedingungen ########################################################## # Kapatzitätsbegrenzung der Standorte i model_general.addConstrs(quicksum(x[i, j] for j in N) <= y[i] * a[i] for i in M) # Erfüllung der Nachfrage für Kunden j model_general.addConstrs(quicksum(x[i, j] for i in M) == b[j] for j in N) ## Zielfunktion ############################################################## model_general.setObjective(quicksum(c[i][j] * x[i, j] for i in M for j in N) + quicksum(y[i] * f[i] for i in M), GRB.MINIMIZE) # Definition Ende ############################################################# model_general.optimize() model_general.write("general.lp") """ Ausgabe Lösung """ print(" ") print("Optimale Loesung gibt Gesamtkosten von: %s" % model_general.objVal) model_general.getVars() print(" ") for i in M: if (y[i].x == 1): print("Eroeffne Standort %s" % i) print(" ") print("Transportmenge von Standort i zu Kunde j:") print(" ") for i in M: if (y[i].x == 1): print(" ") for j in N: if (x[i, j].x > 0): print("Von Standort %s Kunde %s: %s" % (i, j, x[i, j].x))