Verfasst am: 23.02.2010, 14:54
Titel: Optimierungsproblem in Matlab
Hallo zusammen,
für meine Seminararbeit im Fach Finanzwirtschaft muss ich eine Optimierung in Matlab vornehmen. Leider bin ich ein vollkommener Neuling was Matlab angeht und habe noch keine Erfahrung damit.
Es handelt sich um folgende zu maximierende Fkt siehe Bild:
Es geht dabei um die Optimierung eines Aktienportfolios anhand von firmenspezifischen Chrakteristika.
Die Formel ganz unten ist die die maximiert werden soll, wobei für das r(p,t+1) die Formel ganz oben eingesetzt wird. bis auf y, Nt und T handelt es sich um Matrizen. Maximiert werden soll nach Theta, wobei Theta ein Vektor mit drei Elementen ist.
wäre cool wenn ihr mir nen Tipp geben könntet wie in etwa man das mit Matlab anstellt. Vielen Dank!!!
schau Dir doch mal die anderen Beiträge in dieser Diskussion an, da bekommst Du schon mal ein Anfangsgerüst. Stell Dir die wesentlichen Fragen: Was sind die Variablen? Sind sie kontinuierlich? Ist die Zielfunktion linear oder nichtlinear von den Variablen abhängig? Gibt es Nebenbedingungen? Welcher Art sind die? Und: Hast Du die Optimization Toolbox zur Verfügung?
Aus den Antworten kann man ermitteln, welche Optimierungsfunktion Du brauchst.
In jedem Fall brauchst Du Deine Zielfunktion als Matlab-Funktion. Kriegst Du das hin? Ansonsten stell eine entsprechende Frage mit möglichst vielen Informationen in der allgemeinen Programmier-Kategorie. Gib an, ws Du schon selber probiert hast.
Wenn Du in Wirklichkeit möchtest, dass jemand Dein Problem für Dich löst, stell Deine Frage in der Kategorie Programmieraufträge. Nichts für ungut.
Herzliche Grüße
Bijick
_________________
>> why
Justus
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 03.05.2010, 06:55
Titel: optimierte Linie
Hallo,
im Rahmen meiner Projektarbeit beschäftige ich mich unter anderem mit der Optimierung eines Verbrauchskennfeldes.
liefert mir den Punkt des optimalen Verbrauchs. Gibt es eine Funktion zur Ermittlung der optimierten Linie über der x-Achse (in meinem Fall die Drehzahl)?
Vielen Dank im Voraus
Justus
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 04.05.2010, 14:59
Titel:
Hallo zusammen,
um mein Problem etwas genauer zu beschreiben:
Mir liegt das Verbrauchskennfeld als sfit object vor, das ich mit der Option 'cubicinterp' in der sfit toolbox erstellt habe.
Mein Gedanke war dass ich das Optimum für eine feste Drehzahl n berechnen lasse und dies für den gesamten Drehzahlbereich durchführe.
Wie kann ich der Optimierungsfunktion einen feste Variable übergeben?
MfG
Naniki
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 09.06.2010, 11:31
Titel: Zwei Geraden und ihr Schnittpunkt
Hallo,
ich weiß garnicht, ob ich hier ganz richtig bin... aber trotzdem mal meine Frage:
Ich habe Messdaten (Steifigkeit über Schwingsspielzahl) und soll in etwa den Versagenspunkt-/bereich ermitteln.
Da die daten arg verrauscht sind und dazu noch eine Mittelwertschwankung kommt habe ich mir überlegt Geraden zu bauen, die sich dann hoffentlich in dem Versagensbereich schneiden.
Im Prinzip kenne ich ja den Anfangspunkt der einen Gerade und den Endpunkt der anderen.
Der Anfangspunkt der einen Gerade ist dann gleichzeitig der Endpunkt der anderen.
im Moment habe ich diesen Schnittpunkt einfach Pi*Daumen angenommen, was natürlich nicht Sinn der Sache ist. Drum wollte ich fragen, ob es vielleicht ein Optimierungsverfahren gibt, mit dem ich diesen variablen Punkt mit Hilfe von Randbedingungen, etc. bestimmen kann? Ich kämpfe mich derzeit durch die Hilfe, bin allerdings nicht wirklich erfolgreich.
Wär super , wenn ihr mir helfen könntet!
Viele Grüße
Angelika
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 21.06.2010, 17:12
Titel:
Hallo!
Ich habe derzeit an der Uni ein Seminar, bei dem wir einen Vortrag mit Matlab vorbereiten müssen. Unser Thema ist die Nichtlineare Optimierung und in diesem Zusammenhang stellen wir das Nelder-Mead-Verfahren und die Implementierung fminsearch vor.
Bisher habe ich keinerlei Informationen dazu gefunden, wie bei diesem Befehl die Konatanten, also Reflektions-, Expansions- und Kontraktionskonstante, gewählt werden.
Weiß jemand darüber etwas? Vielleicht sogar, wie man die ausgeben lassen kann?
Folgende Frage: Ist es möglich eine Zielfunktion (diese ist vektorisiert) zu optimieren, deren Bedingungen (auch vektorisiert) wiederum eigene Variablen haben? Ich habe den grundsätzlichen Aufbau leider nur im GAMS (General Algebraic Modeling System , math. Programm zur Optimierung) code vorliegen, jedoch ist jenes Programm nicht für dynamische Berechnung sinnvoll, sondern nur für statische. Deswegen will ich Matlab zur dynamischen OPtimierung (parameter sollen sich ändern) nutzen.
Code:
load Incidence;
load skalare;
load qref;
%workspace mit allen parametern und variablen aus
%C:\Users\carsten\Documents\MATLAB laden
%Berechnung parameter H mit i-Leitungen und k-knoten
[m,n]=size(Incidence);
H = zeros(m,n);
e = ones(m,1);
for i=1:m
for k=1:n
if((reak(i)*e(i)*Incidence(i,k))== 0) %Schleife um 1/0 zu vermeiden
H(i,k) = 0;
else
H(i,k)=1/(reak(i) * e(i) * Incidence(i,k));
end end end
%Berechnung parameter B
B = zeros(n,n);
for i = 1:n
for k = 1:n
B(k,i) = sum(Incidence(:,k) .* H(:,i));
end end
%Slack Parameter zur Spannungswinkelbestimmung
Slack = zeros(15,1);
Slack(1,1) = 1;
%Parameter m(n) als M(n), a(n) als A(n) mit zählindex o = 7 für 7 knoten
M = zeros(7,1);
A = zeros(7,1);
for o = 1:7
M(o) = scalars(1)/(scalars(2)*scalars(3)*qref(o));
A(o) = scalars(1)-scalars(3)*qref(o)*M(o);
end
Hier soll dann der Zielfunktionsaufruf [funcWohlfahrt] erfolgen...
Jedoch enthalten meine Bedingungen Variablen [netinput ,netinput,revision,gmax,B,Delta,LineFlow,Slack ] die nicht in der ZFK [w] vorkommen (sie aber einschränken), hier in GAMS-Code, die Parameter werden im obigen Code berechnet
Frage: Ist es möglich eine Zielfunktion zu optimieren, deren Bedingungen wiederum eigene Variablen haben? Bin leider nur Matlab - Anfänger
festigkeit
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.08.2011, 15:25
Titel: Optimierung: Zielfunktion mit Nebenbedingungen
Hallo erstmal!
Ich habe ein Optimierungsproblem:
Ich habe eine Zielfunktion mit 4 Unbekannten. Dazu habe ich noch 3 Nebenbedingungen.
Nun möchte ich die Lösung der 4 Unbekannten für das Minimum der Zielfunktion herausbekommen.
Ich habe die Zielfunktion (linear) definiert und die 3 Nebenbedingungen (nichtlinear) als Spaltenvektor definiert.
Nun wollte ich mit "fmincon" die Lösung herausbekommen.
Trotz stundenlangem herumprobieren mit verschiedenen Startbedingungen komme ich auf keine Lösung.
Es kommt immer solch eine Meldung:
"Local minimum possible. Constraints satisfied.
fmincon stopped because the predicted change in the objective function
is less than the default value of the function tolerance and constraints
were satisfied to within the default value of the constraint tolerance.
<stopping criteria details>"
Ich weiß damit leider nichts anzufangen.
Ob ich irgendwelche Setup-Einstellungen in Matlab vornehmen muss...?
Bin Matlab-Neuling.........
Vielleicht kann mir ja jemand weiterhelfen!
Vielen Dank!!!
Oli R
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.04.2012, 17:40
Titel: Optimierung eines Simulink Modells
Hi,
ich habe ein Problem und war die letzten tage auf der Suche nach einer Lösung, dieser Thread erscheint mir einigermaßen der richtige zu sein.
Also: Ich habe ein Modell zur Berechnung des Energiebedrafs bei einem technsichen gerät in Simulink vorliegen. Der Energiebedarf berecht sich durch Integration der Gesamtleistung. Diese ist in Form von Daten über die Zeit angegeben, d.h. ich habe in Matlab einen Spaltenvektor mit ca. 300 Einträgen und integriere diese "Kurve" mit trapz (vektor)
Ich möchte nun die Eingangsparameter dieses simulink Modells (5 an der Zahl) optimieren. Dafür habe ich mir eine Zielfunktion gebaut, in der ich die Simulation mit den Werten des Vektors X0 für die Eingangsparameter starte, und dann den Vektor für die Gesamtleistung aus dem Workspace mit trapz(vektor) integriere. Diesen Wert gebe ich dann in meiner ZF zurück.
Wenn ich nun eine Funktion wie fminsearch oder fmincon anwende (es sollen noch obere und untere Grenzen für die Eingnagsparameter hinzu kommen) dann ist meine Startlösung zugleich auch immer das lokale Minimum. Der Algorithmus verändert die Werte von X0 überhaupt nicht.
Liegt das an der Definition meiner ZF? Ist das was ich vorhabe überhaupt möglich? Vielleicht habe ich das Problem mathematisch auch nciht genügend durchdrungen ... Vielleicht habt ihr Ideen, wie ich weiterkomme. Mein Code hier zum nachlesen:
Das function File, was ich als Zielfunktion nutze:
Code:
function[VAL]= Energiebedarf_RBG_ZF (X0) set_param('RBG_v46_1_erweiterteVersion/Bewegung_und_Algorithmus','a_max_x','X0(1)');
set_param('RBG_v46_1_erweiterteVersion/Bewegung_und_Algorithmus','a_max_y','X0(2)');
sim('RBG_v46_1_erweiterteVersion')
VAL = trapz(E_Bilanz(:,2))
Verfasst am: 13.05.2012, 14:32
Titel: Ermitteln ein Zielfunktion
Hallo Leute,
ich habe folgendes Problem:
Ich habe in Simulink ein Modell, welches mit anhand von Messdaten mit Hilfe von Lookup-Tables verschiedene Ausgangsparameter berechnet(durch Interpolation).
Jetzt möchte ich aber z.B. einen Wirkungsgrad(ist eins der Ausgangsparameter) optimieren.
Die Eingangsparameter sind abhängig von der Zeit und ich habe die Möglichkeit bestimmte Parameter am System zu ändern.
Jetzt würde ich aber gerne um es zu optimieren, mir eine Zielfunktion berechnen lassen, die mir das Verhalten der Ausgangsparameter beschreibt.
Denn so könnte ich mir ja unter Nebenbedingungen einen Lösungsraum erstellen, in der z.B. der Wirkungsgrad optimiert werden soll.
Meine Frage an euch:
Gibt es eine derartige Möglichkeit und wenn ja wie mache ich das am besten.
Bin für jede Hilfe dankbar.
Verfasst am: 20.12.2012, 19:01
Titel: Re: Optimierung: Zielfunktion mit Nebenbedingungen
festigkeit hat Folgendes geschrieben:
Hallo erstmal!
Es kommt immer solch eine Meldung:
"Local minimum possible. Constraints satisfied.
fmincon stopped because the predicted change in the objective function
is less than the default value of the function tolerance and constraints
were satisfied to within the default value of the constraint tolerance.
Hallo,
ich bin gerade auch dabei mit fmincon eine Pareto-Optimierung durchzuführen.
Meiner Meinung nach ist die von dir beschriebene Meldung ein Abbruch aufgrund der Toleranzen TolX bzw. TolCon, d.h. es wurde im Rahmen der eingestellten Bedingungen ein Minimum gefunden. Ich habe es leider auch nicht hinbekommen bei allen Punkten "Local minimum found" stehen zu haben, sodass ich die "Local minimum possible" Punkte aufgrund der eingehaltenen Nebenbedingung auch als gefundenes Minimum betrachte. Da ich aber auch kein Matlab-Profi bin kann ich nicht sagen ob man das so einfach machen kann. Würde es aber gerne wissen .
Versuch doch einfach mal unter optimset die 'TolCon' und 'TolX' zu verändern.
Zitat:
Parameter tolerance: The optimization terminates when successive parameter values change by less than this number. For more details, refer to the discussion of the parameter TolX in the reference page for the Optimization Toolbox function fmincon.
Constraint tolerance: This number represents the maximum relative amount by which the constraints can be violated and still allow a successful convergence.
Function tolerance: The optimization terminates when successive function values are less than this value. Changing the default Function tolerance value is only useful when you are tracking a reference signal or using the Simplex search method. For more details, refer to the discussion of the parameter TolFun in the reference page for the Optimization Toolbox function fmincon.
Zuletzt bearbeitet von jasicha am 20.12.2012, 19:25, insgesamt einmal bearbeitet
Hallo,
ich stehe gerade bei meiner Optimierung mit fmincon auch vor folgendem Problem:
Ich bin dabei verschiedene Paretofronten für Unterschiedliche Anregungsfrequenzen und Amplituden eines aktiven Fahrwerks zu suchen.
Ich führe also zu Beginn zwei Einzieloptimierungen bzgl. der beiden konkurrierenden Ziele durch um meine Start-/Endwerte der Paretofront im Bildraum zu erhalten.
Das Problem ist, dass wenn ich bei gleichbleibender Anregung nur den Startwert x0 der Parameter ändere, ändern sich auch meine Parameter für das gefundene Optimum. Ich dachte, je näher man den Startwert an das vermutete Optimum legt, desto schneller kommt fmincon zu einem Ergebnis (braucht weniger Interationen).
Ich habe jetzt schon mehrere Einzieloptimierungen mit gleichen Anregungen und unterschiedlichen x0 durchgeführt, welche mir immer andere Werte für d liefern.
Wie sollte ich x0 wählen? Wie kann ich das 'wirkliche' optimum finden. Ich verwende normalerweise den Algorithmus 'Interior-point' wobei ich auch schon 'sqp' verwendet habe.
Hier mal der Code des aufrufenden *.m files
Code:
%% Einzieloptimierung
%discomfort
options = optimset('Algorithm','interior-point','Display','iter');
x0=[000]; %Startwert x0 für die Bestimmung von D
[d, ~ ,exitflag] = fmincon(@e_fun_discomfort, x0, [], [], [], [], [000], [70306], [], options);
D=fun(d); %Punkt mit dem geringsten Discomfort, d.h. höchsten Energieverbrauch
Verfasst am: 21.12.2012, 16:29
Titel: Re: Optimierung: Zielfunktion mit Nebenbedingungen
jasicha hat Folgendes geschrieben:
festigkeit hat Folgendes geschrieben:
Hallo erstmal!
Es kommt immer solch eine Meldung:
"Local minimum possible. Constraints satisfied.
fmincon stopped because the predicted change in the objective function
is less than the default value of the function tolerance and constraints
were satisfied to within the default value of the constraint tolerance.
Hallo,
ich bin gerade auch dabei mit fmincon eine Pareto-Optimierung durchzuführen.
Meiner Meinung nach ist die von dir beschriebene Meldung ein Abbruch aufgrund der Toleranzen TolX bzw. TolCon, d.h. es wurde im Rahmen der eingestellten Bedingungen ein Minimum gefunden. Ich habe es leider auch nicht hinbekommen bei allen Punkten "Local minimum found" stehen zu haben, sodass ich die "Local minimum possible" Punkte aufgrund der eingehaltenen Nebenbedingung auch als gefundenes Minimum betrachte. Da ich aber auch kein Matlab-Profi bin kann ich nicht sagen ob man das so einfach machen kann. Würde es aber gerne wissen .
Versuch doch einfach mal unter optimset die 'TolCon' und 'TolX' zu verändern.
Zitat:
Parameter tolerance: The optimization terminates when successive parameter values change by less than this number. For more details, refer to the discussion of the parameter TolX in the reference page for the Optimization Toolbox function fmincon.
Constraint tolerance: This number represents the maximum relative amount by which the constraints can be violated and still allow a successful convergence.
Function tolerance: The optimization terminates when successive function values are less than this value. Changing the default Function tolerance value is only useful when you are tracking a reference signal or using the Simplex search method. For more details, refer to the discussion of the parameter TolFun in the reference page for the Optimization Toolbox function fmincon.
Nochmal was dazu. Also es ist so das bei dieser Ausgabe (exitflag 2) ein locales Minimum gefunden wurde mit den angegebenen Toleranzen. Normalerweise kann das aber als gleichwertig zu "local minimum found" (exitflag 1) gewertet werden. Die Toleranz TolX liegt bei 1e-10 und ist daher für die meisten Fälle ausreichend.
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.