Es geht um eine lineare Optimierungsaufgabe, den Code habe ich fertig.
Allerdings bekomme ich beim ausführen immer einen Fehler. Code als Screenshot : https://gyazo.com/2cea92bd95e5c8ec130168a08feb178c
Entweder meckert er mit diesem Fehler IndentationError: expected an indented block ,
wenn ich dann Leerzeichen vor bestimmten Zeilen setze ist dieser Fehler weg, dann erscheint aber
ein neuer und zwar ein Syntax Error. Bitte um Hilfe

Nochmal der Code :
from gurobipy import *
def solve(zutaten, preis, alkohol, fruchtanteil, kalorien, minAlkohol, maxAlkohol, minFruchtanteil, maxKalorien, minVolumen):
# Modell erzeugen:
model = Model("Cocktailmischung")
# Variablen erzeugen: Zunaechst leeres Dictionary.
z = {}
# Alle Variablen der Liste durchlaufen.
for zutat in zutaten:
# Fuer jede Zutat wird die Variable "x_ZUTAT" angelegt.
z[zutat] = model.addVar(name = ("z_" + zutat), obj = preis[zutat])
# Variablen dem Modell bekannt machen.
model.update()
# Erste Nebenbedingung:
# Bedeutung: Volumen muss mindestens <minVolumen> sein.
# Ungleichung: "Summe aller Variablen >= minVolumen"
model.addConstr(quicksum(z[zutat] for z in zutaten) >= minVolumen )
# Zweite Nebenbedingung:
# Bedeutung: Alkoholgehalt des Cocktails darf maximal <maxAlkohol> betragen
# Ungleichung: "Summe aller (Variablen * jeweiliger Alkoholgehalt der Variable ) <= maxAlkohol * Summe aller Variablen"
model.addConstr(quicksum(minAlkohol <= z[zutat] * alkohol[zutat] for z in zutaten) <= maxAlkohol * quicksum(z[zutat] for z in zutaten )
# Dritte Nebenbedingung:
# Bedeutung: Alkoholgehalt des Cocktails muss mindestens <minAlkohol> betragen
# Ungleichung: "Summe aller (Variablen * jeweiliger Alkoholgehalt der Variable ) >= minAlkohol * Summe aller Variablen"
model.addConstr(quicksum(minAlkohol <= z[zutat] * alkohol[zutat] for z in zutaten) >= minAlkohol * quicksum(z[zutat] for z in zutaten )
# Vierte Nebenbedingung:
# Bedeutung: Fruchtanteil muss mindestens <minFruchtanteil> sein
# Ungleichung: "Summe aller Variablen >= minFruchtanteil"
model.addConstr(quicksum(fruchtanteil[zutat] * z[zutat] for z in zutaten) >= minFruchtanteil )
# Fuenfte Nebenbedingung:
# Bedeutung: Kalorien dürfen höchstens <maxKalorien> betragen
# Ungleichung: "Summe aller Variablen <= maxKalorien"
model.addConstr(quicksum(kalorien[zutat] * z[zutat] for z in zutaten) <= maxKalorien )
# Nebenbedingungen hinzugefuegt? LP loesen lassen!
model.optimize()
model.write("Cocktailmischung.lp")
# Cocktailpreis und einzelne Mengen ausgeben.
if model.status == GRB.OPTIMAL:
print('\nPreis des Cocktails: %g' % model.ObjVal)
for zutat in zutaten:
print('Menge von %s im Cocktail: %g' % (zutat, z[zutat].x))
else:
print('Keine Optimalloesung gefunden. Status: %i' % (model.status))
# Modell zurueckgeben.
return model