ich bin mal wieder auf meine absolute Unfähigkeit und Unverständnis gestoßen und benötige Hilfe!
Es handelt sich um das minimieren von Funktionen....
Hier ein erstes Beispiel:
Code: Alles auswählen
def funktion(parameter):
x, y, z = parameter
return x + y**2 + z**3
start_werte = [3, 2, 1]
ergebnis = optimize.minimize(funktion, start_werte)
print(ergebnis)
https://docs.scipy.org/doc/scipy-0.19.1 ... imize.html
https://docs.scipy.org/doc/scipy-0.14.0 ... esult.html
Kann mir da jemand die Lösung nennen?
Weiterhin verstehe ich ehrlich gesagt nicht, wie das genau mit den Minimieren geht.....Theoretisch wäre ja das kleinste Ergebnis für oben, wenn alle Parameter 0 sind und nicht irgendwas anderes....Also was genau geht da vor sich? Ich verstehe es leider nicht!
Soweit zum Verständis...Klärt mich bitte auf....
Nun zum eigentlichen Problem:
Ich habe eine sehr komplizierte Funktion, für welche ich Werte minimieren möchte, dies allerdings nicht hinbekomme....Vielleicht ist scipy.minimize auch der falsche Ansatz...
Mein Problem ist stark vereinfacht (und in diesem Fall unsinnig) hier im Code zu sehen:
Code: Alles auswählen
meine_Liste = [2, 16, 17, 19, 15, 97, 23, 45, 34, 65]
mein_Wert = 5
def meine_Funktion(Wert, Liste):
x=np.array(Liste) # im richtigen Programm beeinflusst Wert auch die Liste
a = min(x) # Auslesen des Maximums/Minimums
b = max(x)
a1 = a + 4*Wert
b1 = b - 6*Wert
c = a + b
return a1, b1, c
Berta = meine_Funktion(mein_Wert, meine_Liste)
print (Berta)
Gustav = optimize.minimize(meine_Funktion(mein_Wert, meine_Liste), mein_Wert)
print(Gustav)
Ich habe eine Liste an Messwerten, welche ich meiner Funktion übergebe....Diese rechnet damit rum und gibt mir für die Weiterverarbeitung einen relevanten Wert (in diesem unsinnigen Beispiel c) heraus.....Dieser Wert soll aber "optimiert" sein....Diese Optimierung hängt von 2 anderen Werten ab (a1 und a2), welche ich minimieren möchte. Mit Minimieren meine ich, dass Sie beide möglichst klein sein sollen, aber nahe beieinander....., im echten Programm liegen sie ganzzahligen Bereich, zwischen 0 und vermutlich 20....Beide sollen möglichst klein, aber ähnlich groß sein (also nicht einer 18 und der andere 0.....da wären mir beide bei 8 lieber).....Die Minimierung hängt nur von einem Wert ab (hier mein_Wert), welchem ich einen Startwert (hier 5) vorgebe....
Respekt, wenn ihr noch dabei seid und danke für eure Hilfe und Tipps....
Zusammenfassung:
1. Funktion bekommt Liste und soll einen Wert errechen (c)
2. Dieser Wert soll aber nur für optimierte Parameter (a1 und b1) ausgegeben werden (Ja ich weiß, im Beispiel haben diese keinen Einfluss auf das Ergebnis, mir geht es aber um das Prinzip)
3. Die einzige Stellschraube/Variable ist "mein_Wert"
Hat jemand mein Problem verstanden und kann mir helfen?
Ich weiß ich drücke mich sehr umständlich aus und ohne das konkrete Problem vor Augen zu haben ist es etwas schwer, aber ich wollte euch nicht ca. 400 Zeilen unverständlichen Code vor den Latz knallen, vielleicht kann ich das Thema morgen nochmal besser verdeutlichen, mit einem anderen Code....Dieser hier ist natürlich unsinnig, zeigt aber mein Problem auf grundsätzliche Weise.....