|
|
| Brian |

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 26.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 14:13
Titel: Optimierungsproblem
|
 |
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
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?
Gruß
Brian
|
|
|
|
|
|
| Brian |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 26.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 14:40
Titel:
|
 |
Bevor ich es vergesse, bitte keine Lösung reinschreiben, ich will es selber lernen
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
Gruß
|
|
|
|
| flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 14:41
Titel:
|
 |
|
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
|
|
|
|
| Brian |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 26.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 14:48
Titel:
|
 |
Hallo und vielen Dank für die Antwort,
es entsteht doch ein Differenzbetrag durch
sodass es nicht zwangsweise minimal ist wenn z=x, sondern auch die Übergänge zwischen zk-1 und zk entscheident sind oder?
gruß
|
|
|
|
| flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 15:06
Titel:
|
 |
|
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
|
|
|
|
| Brian |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 26.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 15:37
Titel:
|
 |
| |
 |
|
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 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ß
|
|
|
|
| flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 18:07
Titel:
|
 |
|
|
|
| Brian |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 26.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 18:20
Titel:
|
 |
Vielen Dank, werde sofort beginnen
|
|
|
|
| Brian |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 26.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 18:25
Titel:
|
 |
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ß
|
|
|
|
| flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 19:14
Titel:
|
 |
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.
|
|
|
|
|
| Brian |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 26.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 19:22
Titel:
|
 |
|
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.
|
|
|
|
| flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 20:15
Titel:
|
 |
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.
|
|
|
|
| Brian |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 26.06.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 20:48
Titel:
|
 |
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ß
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 21:27
Titel:
|
 |
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
|
|
|
|
| flashpixx |

Forum-Guru
|
 |
Beiträge: 355
|
 |
|
 |
Anmeldedatum: 19.04.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2012, 22:36
Titel:
|
 |
| 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
|
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|