Hallo allerseits,
beim Stöbern nach Informationen zum Minimieren bin ich auf dieses Forum gestoßen und bitte um Eure Hilfe.
Ich suche nach einer Möglichkeit, das Minimum einer Berechnung zu ermitteln. Die Berechnung selbst ist sehr komplex, ich versuche das mal anhand eines Transport-Problems zu abstrahieren:
Eingabeparameter sind zwei oder mehr Integer-Werte. Als Beispiel 200, 100, 180, bedeutet 200 Fahrräder, 100 PKW, 180 LKW. Wichtig ist, dass maximal 200 Fahrzeuge tatsächlich eingesetzt werden können, auch wenn ich hier 480 zur (maximalen) Auswahl hätte.
In Abhängigkeit einiger Eigenschaften der Transportmittel sowie der vorgegebenen Strecke erreichen nicht alle 200 ihr Ziel. Fallen zuviele aus, wird das Gesamtziel (mindeste Transportmenge) nicht erreicht, was einem Totalverlust gleichkommt. Ich kann für jede mögliche Kombination (z.B. 100 Fahrräder, 80 PKW, 20 LKW) nun ermitteln, wieviele der Fahrzeuge ausfallen und welche Kosten dabei entstehen (ausgefallene Farräder haben einen niedrigen Verlustwert, LKW den höchsten). Das optimale Ergebnis hier könnte sein, dass aus den vorgegebenen 200 Fahrräder, 100 PKW, 180 LKW die Kombination 125 Fahrräder, 0 PKW und 75 LKW die niedrigste Verlustquote aufweist.
x = Fahrräderzahl * FahrradVerlust + PKWzahl * PKWVerlust + LKWzahl * LKWVerlust sollte für x den niedrigstmöglichen Wert aufzeigen, wobei Fahrräderzahl + PKWzahl + LKWzahl <= 200 gelten muss
Ist scipy.optimize.minimize hierfür ein geeignetes Hilfsmittel? Und wie könnte ich die Bedingung (max. 200 Fahrzeuge können eingesetzt werden) dort formulieren?
Kurz noch zu mir: Ich bin weder Mathematiker noch Programmierer. In Python lese ich mich gerade etwas ein und sehe mich in der Lage, die eigentliche Berechnung des Verlustes für eine vorgegebene Kombination zu erstellen. Die Optimierung allerdings überfordert meine Phantasie (und meine mathematischen Kenntnisse) und deshalb wollte ich zunächst fragen, ob das (für mich) überhaupt machbar ist mit optimize.minimize, ohne dass ich wissen muss, wie diese Funktion tatsächlich arbeitet.
Ich bin für jede Anregung dankbar (auch für ein "Lass' es sein").
Grüße Ben
optimize.minimize der richtige weg?
Ich bin da kein Experte. Aber in der Uni hatten wir mal lineare Optimierung, und eine der Dinge die da hängen geblieben ist: es gibt einen großen Unterschied zwischen kontinuierlichen und diskreten Verfahren. Erstere leben von Dingen wie gradienten Abstieg und Co, also der Eigenschaft, an jeder Stelle bestimmen zu können, in welche Richtung es jetzt kleiner wird. Das geht bei diskreten nicht: der LKW fährt, oder er ist kaputt. Und damit aus dem Spiel. Meines Erachtens ist die von dir genannte Funktion für kontinuierliche Probleme. Du solltest aber mal nach diskreten Lösern schauen.
Aber wie gesagt: nicht mein Fachgebiet.
Aber wie gesagt: nicht mein Fachgebiet.