Musste noch genug in andere Fächer investieren, dachte das Programm an sich würde funktionieren wenn ich das schon nach Anleitung installiere falsch gedacht...
Ja wenn ich das import Problem lösen könnte wäre mir schon mehr als genug geholfen eigentlich
Also wie krieg ich das gelöst?
Nachtrag: Dachte das import Problem liegt nur bei mir vor, deswegen der Vorschlag...
Problem bei Programmierung Cocktailmischer
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
im (wie du es nennst) "komischen cmd" folgenden Zeile eingeben:
Dann ins Verzeichnis wechseln, wo dein Skript liegt und es dort mit
Was natürlich voraussetzt, dass du Python 2.7 systemweit und nicht nur via Anaconda installiert hast.
Gruß, noisefloor
Nachtrag: ggf. musst du dann so auch andere Abhängigkeiten auflösen, die sonst via Anaconda aufgelöst werden.
im (wie du es nennst) "komischen cmd" folgenden Zeile eingeben:
Code: Alles auswählen
python -m pip install gurobipy
Code: Alles auswählen
python name_deines_skripts.py
Gruß, noisefloor
Nachtrag: ggf. musst du dann so auch andere Abhängigkeiten auflösen, die sonst via Anaconda aufgelöst werden.
Hallo,
danke für deine Antwort. Also ich habe Anaconda Prompt geöffnet. Es öffnet sich ein cmd Fenster und der Pfad liegt direkt bei C:\Users\User...
Ich habe jedoch Daten von Anaconda auf D und auf C. Auf die Festplattenpartition D kann ich garnicht wechseln. Wenn ich die von dir genannten Befehl direkt eingebe kann cmd nichts damit anfangen. Folgendes gibt er aus:
Muss ich bei der Eingabe iwas beachten oder in einen speziellen Ordner navigieren?
Danke
danke für deine Antwort. Also ich habe Anaconda Prompt geöffnet. Es öffnet sich ein cmd Fenster und der Pfad liegt direkt bei C:\Users\User...
Ich habe jedoch Daten von Anaconda auf D und auf C. Auf die Festplattenpartition D kann ich garnicht wechseln. Wenn ich die von dir genannten Befehl direkt eingebe kann cmd nichts damit anfangen. Folgendes gibt er aus:
Code: Alles auswählen
[Anaconda] C:\Anaconda>python -m install gurobipy
C:\Anaconda\python.exe: No module named install
Danke
@Maschine9: es gibt ja auch kein Pythonskript das install heißt. Also entweder:
[codebox=powershell file=Unbenannt.ps1]C:\Anaconda> conda install gurobipy
[/code]
oder
[codebox=powershell file=Unbenannt.ps1]C:\Anaconda> python -m pip install gurobipy
[/code]
[codebox=powershell file=Unbenannt.ps1]C:\Anaconda> conda install gurobipy
[/code]
oder
[codebox=powershell file=Unbenannt.ps1]C:\Anaconda> python -m pip install gurobipy
[/code]
Ich habe mal geschaut was das überhaupt für ein Modul ist. Das ist zwar im Package Index, hat dort aber nur einen Link zur Webseite des Anbieters. Kostenlos kommt man dort an eine abgespeckte Version, die man anscheinend erst herunterladen kann, wenn man sich dort registriert hat.
Herzlichen Dank an Alle es hat geklappt Also das import ist kein Problem, allerdings bekomme ich komische Fehlermeldungen.
Also die Aufgabe ist folgende: Für das aus der Übung bekannte Cocktailmischungs-Problem sind uns die beiden Datensätze cocktaildata.py (kalorienreduziert) und cocktaildata2.py (Originalrezept) gegeben. Der zu mischende Cocktail soll dabei den folgenden Anforderungen genügen (die Parameter sind jeweils in den Datensätzen gegeben):
• hat ein Volumen von mindestens min_volume × 100 ml
• der Alkoholgehalt liegt zwischen min_alcohol und max_alcohol
• enthält mindestens min_sugar g Zucker
• hat nicht mehr als max_calories Kalorien Der Cocktail soll dabei so günstig wie möglich sein.
Eine Liste der Zutaten ist in den Datensätzen als Liste ingredients gegeben. Die vier Dictionaries prizes, alcohol, sugar und calories beinhalten entsprechend für jeden Eintrag in ingredients den Preis in Euro je 100 ml, den Alkoholgehalt, den Zuckergehalt in g je 100 ml und schließlich die Kalorienanzahl je 100 ml. ModellierenSiediesesProblemalsLPundergänzenSiedieDateicocktailmodel.pyandenin der Datei vorgegebenen Stellen, d.h. ergänzen Sie ggf. Attribute für die orgegebenen Entscheidungsvariablen(z.B. lb, ub, obj) und ergänzen Sie die fehlenden linearen Nebenbedingungen (aka Constraints). Die Variable x_i soll als Wert die Menge (Volumen) erhalten, die von Inhaltsstoff i zum Mischen des Cocktails verwendet wird (in 100 ml). Sie können Ihr Modell testen indem Sie den Code in cocktaildata.py bzw. cocktaildata2.py ausführen (dort wird die von Ihnen ergänzte solve()-Methode aus cocktailmodel.py aufgerufen).
Der Code dazu sieht wie folgt aus:
[Pastebin]
from gurobipy import *
# diese Methode wird aus den Datenfiles (hier cocktaildata und cocktaildata2) heraus aufgerufen
# fuehren Sie daher den Code in den Datenfiles aus
def solve(ingredients, prices, alcohol, sugar, calories, min_alcohol, max_alcohol, min_sugar, max_calories, min_volume):
model = Model("Cocktail")
x = {}
for i in ingredients:
#!!! x entspricht der Menge (Volumen), die von Inhaltsstoff i zum Mischen des Cocktails verwendet wird (in 100 ml) !!!
# ergaenzen Sie ggf. untere und obere Schranken, sowie Zielfunktionskoeffizienten
x = model.addVar(name="x_%s" % i,obj=prices)
z = model.addVar()
z = quicksum(x for i in ingredients)
model.modelSense = GRB.Minimize
# Zielfunktionsorientierung ist Minimieren
model.update()
# ergaenzt hier die linearen Nebenbedingungen (aka constraints):
model.addConstr(quicksum(x for i in ingredients >= min_volume
#Es gibt ein Mindestvolumen von min_volume
model.addConstr(quicksum(alcohol*x for i in ingredients) >= (min_alcohol*z))
model.addConstr(quicksum(alcohol*x for i in ingredients) <= (max_alcohol*z))
#der Alkoholgehalt liegt über min_alcohol und unter max_alcohol
model.addConstr(quicksum(sugar*x[i] for i in ingredients) >= min_sugar)
#enthält mindestens min_sugar g Zucker
model.addConstr(quicksum(calories[i]*x[i] for i in ingredients) <= max_calories)
model.optimize()
def print_model():
if model.status == GRB.OPTIMAL:
print "Preis des Cocktails: %g" % model.ObjVal
for i in ingredients:
print "Menge von %s im Cocktail: %g" % (i, x[i].X)
else:
print "No solution found. Status of model is: %i" % model.status
print_model()
return model[/Pastebin]
Ich erhalte folgende Fehlermeldung:
runfile('C:/Users/User/Downloads/Gurobi/cocktaildata.py', wdir='C:/Users/User/Downloads/Gurobi')
File "cocktailmodel.py", line 29
model.addConstr(quicksum(alcohol[i]*x[i] for i in ingredients) >= (min_alcohol*z))
^
SyntaxError: invalid syntax
Kann mir jemand sagen, was ich verändern müsste damit das funktioniert? weiß nicht wieso das nicht läuft model.addConstr ist doch die richtige Syntax oder irre ich mich?
Also die Aufgabe ist folgende: Für das aus der Übung bekannte Cocktailmischungs-Problem sind uns die beiden Datensätze cocktaildata.py (kalorienreduziert) und cocktaildata2.py (Originalrezept) gegeben. Der zu mischende Cocktail soll dabei den folgenden Anforderungen genügen (die Parameter sind jeweils in den Datensätzen gegeben):
• hat ein Volumen von mindestens min_volume × 100 ml
• der Alkoholgehalt liegt zwischen min_alcohol und max_alcohol
• enthält mindestens min_sugar g Zucker
• hat nicht mehr als max_calories Kalorien Der Cocktail soll dabei so günstig wie möglich sein.
Eine Liste der Zutaten ist in den Datensätzen als Liste ingredients gegeben. Die vier Dictionaries prizes, alcohol, sugar und calories beinhalten entsprechend für jeden Eintrag in ingredients den Preis in Euro je 100 ml, den Alkoholgehalt, den Zuckergehalt in g je 100 ml und schließlich die Kalorienanzahl je 100 ml. ModellierenSiediesesProblemalsLPundergänzenSiedieDateicocktailmodel.pyandenin der Datei vorgegebenen Stellen, d.h. ergänzen Sie ggf. Attribute für die orgegebenen Entscheidungsvariablen(z.B. lb, ub, obj) und ergänzen Sie die fehlenden linearen Nebenbedingungen (aka Constraints). Die Variable x_i soll als Wert die Menge (Volumen) erhalten, die von Inhaltsstoff i zum Mischen des Cocktails verwendet wird (in 100 ml). Sie können Ihr Modell testen indem Sie den Code in cocktaildata.py bzw. cocktaildata2.py ausführen (dort wird die von Ihnen ergänzte solve()-Methode aus cocktailmodel.py aufgerufen).
Der Code dazu sieht wie folgt aus:
[Pastebin]
from gurobipy import *
# diese Methode wird aus den Datenfiles (hier cocktaildata und cocktaildata2) heraus aufgerufen
# fuehren Sie daher den Code in den Datenfiles aus
def solve(ingredients, prices, alcohol, sugar, calories, min_alcohol, max_alcohol, min_sugar, max_calories, min_volume):
model = Model("Cocktail")
x = {}
for i in ingredients:
#!!! x entspricht der Menge (Volumen), die von Inhaltsstoff i zum Mischen des Cocktails verwendet wird (in 100 ml) !!!
# ergaenzen Sie ggf. untere und obere Schranken, sowie Zielfunktionskoeffizienten
x = model.addVar(name="x_%s" % i,obj=prices)
z = model.addVar()
z = quicksum(x for i in ingredients)
model.modelSense = GRB.Minimize
# Zielfunktionsorientierung ist Minimieren
model.update()
# ergaenzt hier die linearen Nebenbedingungen (aka constraints):
model.addConstr(quicksum(x for i in ingredients >= min_volume
#Es gibt ein Mindestvolumen von min_volume
model.addConstr(quicksum(alcohol*x for i in ingredients) >= (min_alcohol*z))
model.addConstr(quicksum(alcohol*x for i in ingredients) <= (max_alcohol*z))
#der Alkoholgehalt liegt über min_alcohol und unter max_alcohol
model.addConstr(quicksum(sugar*x[i] for i in ingredients) >= min_sugar)
#enthält mindestens min_sugar g Zucker
model.addConstr(quicksum(calories[i]*x[i] for i in ingredients) <= max_calories)
model.optimize()
def print_model():
if model.status == GRB.OPTIMAL:
print "Preis des Cocktails: %g" % model.ObjVal
for i in ingredients:
print "Menge von %s im Cocktail: %g" % (i, x[i].X)
else:
print "No solution found. Status of model is: %i" % model.status
print_model()
return model[/Pastebin]
Ich erhalte folgende Fehlermeldung:
runfile('C:/Users/User/Downloads/Gurobi/cocktaildata.py', wdir='C:/Users/User/Downloads/Gurobi')
File "cocktailmodel.py", line 29
model.addConstr(quicksum(alcohol[i]*x[i] for i in ingredients) >= (min_alcohol*z))
^
SyntaxError: invalid syntax
Kann mir jemand sagen, was ich verändern müsste damit das funktioniert? weiß nicht wieso das nicht läuft model.addConstr ist doch die richtige Syntax oder irre ich mich?