Die Sache ist, ich versuche, passende Prozedur für meine Zwecke zu entwerfen und scipy Differential Evolutionsalgorithmus als ein allgemeiner Schätzer der Anfangswerte zu verwenden, die dann in LM-Algorithmus für eine bessere Anpassung verwendet werden. Die Funktion, die ich mit DE minimieren möchte, sind die kleinsten Quadrate zwischen analytisch definierter nichtlinearer Funktion und einigen experimentellen Werten. Punkt, an dem ich feststecke, ist das Funktionsdesign. Wie es in scipy Referenz angegeben: "Funktion muss in der Form sein f (x, * args) , wo x ist das Argument in Form eines 1-D-Array und args ist ein Tupel von zusätzlichen festen Parameter benötigt vollständig die Funktion "angebenScipy, differential evolution
es ist ein hässliches Beispiel für Code, die ich nur zu Veranschaulichungszwecken geschrieben:
def func(x, *args):
"""args[0] = x
args[1] = y"""
result = 0
for i in range(len(args[0][0])):
result += (x[0]*(args[0][0][i]**2) + x[1]*(args[0][0][i]) + x[2] - args[0][1][i])**2
return result**0.5
if __name__ == '__main__':
bounds = [(1.5, 0.5), (-0.3, 0.3), (0.1, -0.1)]
x = [0,1,2,3,4]
y = [i**2 for i in x]
args = (x, y)
result = differential_evolution(func, bounds, args=args)
print(func(bounds, args))
ich als Tupel in die Funktion Rohdaten liefern wollte, aber es scheint, dass sein nicht wie es sein soll, da der Dolmetscher nicht mit der Funktion zufrieden ist. Das Problem sollte einfach lösbar sein, aber ich bin wirklich frustriert, so dass Ratschläge sehr geschätzt werden.
leider jeder für beunruhigend, aber ich schaffte diesen Code zu machen zu arbeiten (* facepalm *) ... –
Das ist in Ordnung, @Tierpot, froh, dass Sie es heraus :) Willkommen zu den [ damit]! Da Sie das Problem gelöst haben, löschen Sie entweder Ihre Frage oder posten Sie Ihre Lösung als Antwort. Vielen Dank! – askewchan
Posted Lösung ^)) –