WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Optimierung mit Matlab (allgemeine Diskussion)

 

matthias_senn

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2009, 16:37     Titel: Genetische Optimierer
  Antworten mit Zitat      
Hallo,
gibt es mitlerweile einen genetischen Optimierer für Matlab?
Viele Grüße Matthias


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.450
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.11.2009, 17:35     Titel:
  Antworten mit Zitat      
Hallo,

es gibt (mittlerweile seit etlichen Jahren) die Genetic Algorithm and Direct Search Toolbox
http://www.mathworks.de/products/gads/

Der darin enthaltene genetische Optimierer:
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Student_Muc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.02.2010, 15:54     Titel: Optimierungsproblem in Matlab
  Antworten mit Zitat      
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!!!

Mfg Marc
 
Bijick
Themenstarter

Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 25.02.2010, 20:06     Titel:
  Antworten mit Zitat      
Hallo Marc,

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. Cool

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Justus

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2010, 07:55     Titel: optimierte Linie
  Antworten mit Zitat      
Hallo,
im Rahmen meiner Projektarbeit beschäftige ich mich unter anderem mit der Optimierung eines Verbrauchskennfeldes.
Code:

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: ---
     Beitrag Verfasst am: 04.05.2010, 15:59     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 09.06.2010, 12:31     Titel: Zwei Geraden und ihr Schnittpunkt
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 21.06.2010, 18:12     Titel:
  Antworten mit Zitat      
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?

Schon mal im Vorraus vielen Dank!

Grüße
Angelika
 
oppemaniac
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 03.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2011, 18:59     Titel: Zielfunktion hat (Nicht)-lineare Bedingungen anderer variabl
  Antworten mit Zitat      
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

Code:

objective..                      w =e= q_area - cost
;
demandarea..                     q_area =e= sum (n, (a(n)*q(n)+0.5*m(n)*sqr(q(n))))
;
costs..                          cost =e= sum((n,s), g(n,s)*c(n,s))
;
energy_balance(n)..              sum((s),g(n,s)) - q(n) - netinput(n) =e= 0
;
gen_constraint(n,s)..            g(n,s) =l= revision(s)*g_max(n,s)
;
Constraint_NetInput_NLP(n)..     NetInput(n) - SUM((nn), B(n,nn) * Delta(nn))=e= 0
;
Constraint_LineFlow(l)..         LineFlow(l) - SUM(n, H(l,n) * Delta(n) ) =e= 0
;
Constraint_LineFlow_pos(l)..     LineFlow(l) =l= + P_max(l)
;
Constraint_LineFlow_neg(l)..     LineFlow(l) =g= - P_max(l)
;
Constraint_Slack(N)..            Slack(n) * Delta(n) =e= 0

 


Frage: Ist es möglich eine Zielfunktion zu optimieren, deren Bedingungen wiederum eigene Variablen haben? Bin leider nur Matlab - Anfänger
Private Nachricht senden Benutzer-Profile anzeigen
 
festigkeit

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2011, 16:25     Titel: Optimierung: Zielfunktion mit Nebenbedingungen
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 25.04.2012, 18:40     Titel: Optimierung eines Simulink Modells
  Antworten mit Zitat      
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))


Ein Aufruf würde dann mit
Code:
X0 = [0.5 0.5]
zum Beispiel aussehen:

Code:
Lsg = fmincon(@Energiebedarf_RBG_ZF,X0);
 
DGL

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2012, 15:32     Titel: Ermitteln ein Zielfunktion
  Antworten mit Zitat      
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.
 
jasicha
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 22.10.12
Wohnort: ---
Version: 2014a
     Beitrag Verfasst am: 20.12.2012, 20:01     Titel: Re: Optimierung: Zielfunktion mit Nebenbedingungen
  Antworten mit Zitat      
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 Wink.

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, 20:25, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
jasicha
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 22.10.12
Wohnort: ---
Version: 2014a
     Beitrag Verfasst am: 20.12.2012, 20:17     Titel:
  Antworten mit Zitat      
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=[0 0 0];       %Startwert x0 für die Bestimmung von D
[d, ~ ,exitflag] = fmincon(@e_fun_discomfort, x0, [], [], [], [], [0 0 0], [70 30 6], [], options);
D=fun(d);           %Punkt mit dem geringsten Discomfort, d.h. höchsten Energieverbrauch

disc_exit=exitflag;

en_max = D(1,:);    %Energiemaximum
clear ('x0','options');

display('Einzieloptimierungen bzgl. discomfort ist abgeschlossen');


Ich hoffe ich konnte das Problem ausreichend erklären,
Private Nachricht senden Benutzer-Profile anzeigen
 
jasicha
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 22.10.12
Wohnort: ---
Version: 2014a
     Beitrag Verfasst am: 21.12.2012, 17:29     Titel: Re: Optimierung: Zielfunktion mit Nebenbedingungen
  Antworten mit Zitat      
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 Wink.

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.

Gruß,
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3, 4, 5  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.