Hallo zusammen. Ich möchte mit fmincon eine nichtlineare Optimierung durchführen. Dabei kommt folgende Fehlermeldung:
Code:
Error using sqpLineSearchMex
Requested 676287x676287 (3407.6GB) array exceeds maximum array size
preference. Creation of arrays greater than this limit may take a long time
and cause MATLAB to become unresponsive. See array size limit or preference
panel formore information.
Hast du mal die Zielfunktion und die Nebenbedingungsfunktion für x0 aufgerufen? Tritt der Fehler da schon auf? Kommt was vernünftiges raus? Zur Not mal Schritt für Schritt mit dem Debugger durchgehen.
Und der Fehler taucht erst bei der fmincon-Funktion zum Schluss auf. Ich habe mal Grenzen hinzugefügt (Zielwert x0 +/- 1), aber das führt zum gleichen Fehler. Zumal die gesuchten Werte nicht stark von x0 abweichen dürften.
Würde ich sagen, denn du willst ja wahrscheinlich 581 Ungleichungen haben und nicht 581*581 Ungleichungen. Vielleicht sind da irgendwo Zeilen- und Spaltenvektoren durcheinander geraten.
Harald ... Ich glaube ernsthaft, dass ich durch dich meine Abschlussarbeit bestehe. Es hat funktioniert. Ich habe ".*" statt "*" verwendet... Die Basics mal wieder. Die Optimierung hat zwar 20 Minuten gebraucht, aber sie hat glaube ich ein brauchbare Ergebnis erzeugt. Das gilt es jetzt zu zeigen.
Könntest du mir bei der Performance noch helfen? Ich müsste die Optimierung für ca. 900 Zeitintervalle durchführen. Ein Zeitintervall hat wie gesagt 20 Min gedauert. Ich könnte mir vorstellen, dass man aus den Schleifen (in optDist) etwas in Matrizenrechnung umwandeln kann und so Rechenzeit einspart.
Ich nehme an, dass es daran liegt, dass Spalte 1 nicht als Datum formatiert ist. Kann ich das irgendwie mit "dateformat" oder "str2double" überschreiben? Ist mir bisher nicht gelungen.
das ist die Funktionsdeklaration, ja. Dabei sind c und ceq die Rückgabeargumente.
Bei der Definition eines Function Handles sind in @( ) aber die Eingabeargumente.
habe es mit unstack versucht und es klappt gut. Nur leider kann ich nun meine Matrixoperation nicht mehr machen. Habe alle möglichen Kombinationen an eckigen Klammern versucht, da es sonst an denen lag.
Code:
>> Return=(Pivot_P(3:end,2:end)./Pivot_P(2:end-1,2:end))-1;
Undefined operator './' forinput arguments of type 'table'.
>> Return=(Pivot_P[3:end,2:end]./Pivot_P[2:end-1,2:end])-1;
Return=(Pivot_P[3:end,2:end]./Pivot_P[2:end-1,2:end])-1;
↑
Error: Unbalanced or unexpected parenthesis or bracket.
>> Return=[Pivot_P(3:end,2:end)./Pivot_P(2:end-1,2:end)]-1;
Undefined operator './' forinput arguments of type 'table'.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.