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

Optimierungsproblem

 

Brian
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 14:13     Titel: Optimierungsproblem
  Antworten mit Zitat      
Hallo Matlab Freunde,

ich arbeite mich im Moment in Matlab ein und bin begeistert über dessen Möglichkeiten, jedoch auch etwas überwältigt als newbie Smile

Momentan versuche ich eine 500x1 matrix (z) optimiert zu generieren, was mir noch nicht so ganz gelingt. Die Matrix x ist ebenfalls eine 500x1.

Das Ergebnis sollte eine ebenfalls 500x1 matrix x sein, welche so zu dem min Ergebnis der Formel führt. Habt Ihr da einen Tipp für mich?

min[\sum\limits_{k=1}^n (z_{k} - x_{k})^2 + \sum\limits_{k=2}^n (z_{k-1}- z_{k})^2]


Gruß

Brian
Private Nachricht senden Benutzer-Profile anzeigen


Brian
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 14:40     Titel:
  Antworten mit Zitat      
Bevor ich es vergesse, bitte keine Lösung reinschreiben, ich will es selber lernen Smile

Würde mich aber über Tipps freuen wie: Nimm 2 mal das skalaprodukt und keine Schleife, um eine 500x1 summe auszugeben reicht der befehl "sum" nicht aus usw.

Ich suche nach Strohhalmen zum selber langhangeln und würde mich auch nur über den kleinsten Tipp freuen Smile

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 14:41     Titel:
  Antworten mit Zitat      
wenn gilt z=x=0 ist das Optimum erfüllt, denn kleiner Null kann die Funktion nicht werden und dieses entspricht dann auch dem globalen Minimum
Private Nachricht senden Benutzer-Profile anzeigen
 
Brian
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 14:48     Titel:
  Antworten mit Zitat      
Hallo und vielen Dank für die Antwort,
es entsteht doch ein Differenzbetrag durch
 \sum\limits_{k=2}^n (z_{k-1} - z_{k})^2
sodass es nicht zwangsweise minimal ist wenn z=x, sondern auch die Übergänge zwischen zk-1 und zk entscheident sind oder?

gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 15:06     Titel:
  Antworten mit Zitat      
rechne einmal aus, was aus Deiner Gleichung heraus kommt, wenn sowohl z, wie auch x der Nullvektor ist, denn Du hast keine Matrix, sondern einen Vektor mit 500 Elementen
Private Nachricht senden Benutzer-Profile anzeigen
 
Brian
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 15:37     Titel:
  Antworten mit Zitat      
Hallo,

ich glaube ich habe mich missverständlich ausgedrückt, entschuldige.

Der x Vektor (oder 500x1 Matrix) besteht aus bereits existierenden Daten, insgesamt 500 unterschiedliche Werte. Es soll ein z Vektor mit ebenfalls 500 Werten erstellt werden, welcher zum einen, nicht sehr vom x Vektor abweicht und zum anderen "smooth" ist. Es soll im Grunde also der x vektor "ge-smooth´st" jedoch nicht auf ein Level, dass die Struktur des x Vektors verloren geht. Genau das macht die Formel Smile Vor der zweiten Summe kann man zudem noch einen "smoothering-Faktor" setzen, welcher die Intensität des smoothens beeinflusst. Entsprechend ist es nicht zwingend der minimale wert, wenn x=z, wenn zb x1=1 und x2=1000 wären, würde das sogar schon fast ausgeschlossen sein :=)

Aber dies hätte ich beischreiben müssen, sorry. Ferner ist dies nur ein Teilbereich der gesamten Berechnung, ich wollte es von der Matlab Implementierungsweise lernen, da sobald ich die Formel kann, ich auch den Rest der Formel können sollte.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 18:07     Titel:
  Antworten mit Zitat      
http://www.mathworks.de/help/techdoc/ref/fminsearch.html

Mathematisch leite in Richtung z ab und minimiere diesen Wert durch ein Verfahren z.B. Newton, Gradientenabstieg, Downhill-Simplex
Private Nachricht senden Benutzer-Profile anzeigen
 
Brian
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 18:20     Titel:
  Antworten mit Zitat      
Vielen Dank, werde sofort beginnen Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Brian
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 18:25     Titel:
  Antworten mit Zitat      
Hmm, ich verstehe nicht wirklich wieso ich nach z ableiten soll, da die Summe der gesamten Funktion minimiert werden sollte und nicht der zielvektor z. Entweder verstehe ich die Logik dahinter nicht oder ich habe mich wieder missverständlich ausgedrückt :S Aber ich werde Dir mal blind vertrauen und es versuchen.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 19:14     Titel:
  Antworten mit Zitat      
Was bedeutet "minimieren", dass Du letztendlich ein Optimum bestimmt, d.h. die erste Ableitung = 0 wird. Deine X-Werte sind fest, d.h. Du kannst nur z verändern

http://de.wikipedia.org/wiki/Optimierungsalgorithmus
Zitat:

Das einfachste Optimierungsproblem ist das Auffinden eines Minimums oder Maximums einer analytischen eindimensionalen Funktion , was in der Regel durch Auffinden der Nullstellen der ersten Ableitung gelingt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Brian
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 19:22     Titel:
  Antworten mit Zitat      
Das habe ich schon verstanden, nur ist mir nicht ganz klar wie da ein 500x1 Vektor (z), welcher in korrekter Abhängigkeit zu dem jeweilig gegebenen 500x1 Vektor (x), entstehen soll. In meinem Verständnis ergibt die Ableitung nach z nur einen Wert, welcher beim Einsetzen das min erzeugen würde und nicht 500 verschiedene z Werte.
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 20:15     Titel:
  Antworten mit Zitat      
Schau Dir bitte die verschiedenen Optimierungsalgorithmen an. Ich kann eine zufällige Belegung des Vektors wählen, bestimme dann die abgeleitete Funktion. Das ganze wiederhole ich nun n-fach und nehme aus dieser Menge eben die Belegung, die minimal ist. Ob die gefundene Lösung das globale Optimum ist und/oder für Dich hinreichend gut ist, das musst Du entscheiden.

Wie man in Deiner "Funktion" konkret optimiert, hängt von Deinem konkreten Problem ab, denn es gilt http://de.wikipedia.org/wiki/No-free-Lunch-Theoreme
Es gibt mehrere Möglichkeiten zu optimieren, Du musst eben entscheiden welches Verfahren die für Dich beste Lösung liefert. Da Du hier einen quadratischen Fehler zwischen Zielwert und einem bestehenden Wert bestimmst, kannst Du mit Hilfe der Ableitung eine aktuelle Lösung weiter verbessern.
Private Nachricht senden Benutzer-Profile anzeigen
 
Brian
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 20:48     Titel:
  Antworten mit Zitat      
Ok werde dann mal suchen und gucken ob ich da eine geeignete Methode finde, zumal da noch Nebenbedingungen rein sollen.

Schon mal danke für deine Mühe, wenn alle Stricke reißen kann ich ja zur not diese "Flickschuster-Methode" verwenden.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.06.2012, 21:27     Titel:
  Antworten mit Zitat      
Hallo,

sofern die Optimization Toolbox vorhanden ist, sollte hier meiner Meinung nach quadprog verwendet werden, da es genau für diese Problemstruktur geschaffen ist. Man muss das Problem nur zunächst geeignet umformen.

Bei quadprog kann man auch mit linearen Nebenbedingungen arbeiten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2012, 22:36     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

sofern die Optimization Toolbox vorhanden ist, sollte hier meiner Meinung nach quadprog verwendet werden, da es genau für diese Problemstruktur geschaffen ist.


Das würde aber hier nur gehen, sofern wir annehmen können, dass die Werte innerhalb des Vektors als Stützstellen einer Funktion verhalten. Wenn wir hier von irgendwie gearteten diskreten (iid) Werten ausgehen, dann ist es ein kombinatorisches Problem, wobei ich dann wohl eher in die Richtung Metropolis- / Simulated Annealing / genetische Algorithmen tendieren würden
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  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 - 2025 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.