Problem bei Programmierung Cocktailmischer

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Maschine9
User
Beiträge: 12
Registriert: Freitag 24. Juni 2016, 19:24

Musste noch genug in andere Fächer investieren, dachte das Programm an sich würde funktionieren wenn ich das schon nach Anleitung installiere :D falsch gedacht...

Ja wenn ich das import Problem lösen könnte wäre mir schon mehr als genug geholfen eigentlich :D
Also wie krieg ich das gelöst?

Nachtrag: Dachte das import Problem liegt nur bei mir vor, deswegen der Vorschlag...
Benutzeravatar
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:

Code: Alles auswählen

python -m pip install gurobipy
Dann ins Verzeichnis wechseln, wo dein Skript liegt und es dort mit

Code: Alles auswählen

python name_deines_skripts.py
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.
Maschine9
User
Beiträge: 12
Registriert: Freitag 24. Juni 2016, 19:24

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:

Code: Alles auswählen

[Anaconda] C:\Anaconda>python -m install gurobipy
C:\Anaconda\python.exe: No module named install
Muss ich bei der Eingabe iwas beachten oder in einen speziellen Ordner navigieren?

Danke
Sirius3
User
Beiträge: 17745
Registriert: Sonntag 21. Oktober 2012, 17:20

@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]
BlackJack

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.
Maschine9
User
Beiträge: 12
Registriert: Freitag 24. Juni 2016, 19:24

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?
Sirius3
User
Beiträge: 17745
Registriert: Sonntag 21. Oktober 2012, 17:20

@Maschine9: ist doch ziemlich klar, dass davor etliche Klammern fehlen.
Maschine9
User
Beiträge: 12
Registriert: Freitag 24. Juni 2016, 19:24

Edit: hat sich erledigt, danke allen für ihre Hilfe :)
Maschine9
User
Beiträge: 12
Registriert: Freitag 24. Juni 2016, 19:24

Kann jemand bitte den Teil mit der Aufgabenstellung und dem Code löschen? Wurde darum gebeten das zu löschen aber kriege das iwie selber nicht hin
Antworten