Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Digitale Signalverarbeitung in der Nachrichtenübertragung

Fachkräfte:
weitere Angebote

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Optimierungsproblem: Überlagerung mehrerer Graphen

 

Tobisase
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.07.22
Wohnort: ---
Version: 2022
     Beitrag Verfasst am: 03.08.2022, 18:08     Titel: Optimierungsproblem: Überlagerung mehrerer Graphen
  Antworten mit Zitat      
Hallo,

vlt könnt ihr mir helfen, einen Ansatz zu finden.

Ich habe 10 Graphen/Matrizen. Sie können positive und negative Werte annehmen. Die Graphen/Matrizen sind unterschiedlich lang.
Jeder Graph sollen mehrere Male hintereinander aufgereiht werden (also, der gleiche Graph nur z. B. 12-mal hintereinander). Zwischen Ende und wieder Anfang des Graphen soll eine Pause sein. Die Pause kann in ihrer Länge in bestimmten Grenzen variieren.
Das bedeutet, ich habe 10 Profile aus unterschiedlichen Graphen, die jeweils 12-mal hintereinander gesetzt worden (gleicher Graph hintereinander), mit Pausen dazwischen.
Die Graphen sollen an jedem Zeitschritt summiert werden, sodass sich positive Werte des einen Graphen und negative Werte des anderen Graphen negieren.

Das Ziel ist, dass sich die Graphen möglichst gut gegenseitig aufheben (über positive und negative Werte) und die resultierende Kurve somit eine möglichst geringe Fläche aufweist.

Das möchte ich vom Prinzip her in Matlab optimieren lassen. Also die Startzeit und die Pausen zwischen den Graphen in bestimmten Grenzen verändern und so eine optimale Lösung generieren. (also die Graphen möglichst clever aufeinander abstimmen)

Dafür fehlt mir leider ein cleverer Ansatz.
Mir fällt hierfür nur eine For schleife ein. Bei so vielen Kombinationsmöglichkeiten stößt das aber schnell an machbare Grenzen.

Kann Matlab so eine Aufgabenstellung mit einer Optimierungsfunktion lösen? Ich hatte evtl. an fminsearch gedacht.
Was wäre ein cleverer Mathematischer Ansatz?
Ist es evtl. ratsamer, das Problem zu vereinfachen?

Für jede Hilfe oder Input bin ich euch sehr dankbar!
Viele Grüße 😊
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.993
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2022a
     Beitrag Verfasst am: 04.08.2022, 10:07     Titel:
  Antworten mit Zitat      
Hallo,

kannst du evtl. das ganze mit einer Skizze veranschaulichen? Ich bin ca. beim 3x "Graphen" ausgestiegen.

Grundsätzlich klingt es nach einem Optimierungsproblem. fminsearch ist da bestimmt ein guter erster Ansatz und richtig, deine Problemstellung sollte in mathematische Funktionen übersetzt werden. Es klingt danach, als wäre dies auch möglich (wie so vieles...), nur muss dazu das Problem verständlich sein (siehe Eingangssatz).

Gruß,
Steve
_________________

>> I told me to.

____________________________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobisase
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.07.22
Wohnort: ---
Version: 2022
     Beitrag Verfasst am: 04.08.2022, 15:21     Titel:
  Antworten mit Zitat      
Hi Steve,

ich hab mal versucht es im Prinzip zu skizzieren.

Ich habe 10 unterschiedliche Graphen/Matrizen. Sie können nicht in eine Funktion über eine Regression umgewandelt werden. Es sind eher Matrizen aus mehreren Tausend unregelmäßigen Werten.

Ein Graph ist quasi ein Zyklus. Jeder Graph wird so oft ausgeführt, wie er in die Zeit T reinpasst (mehrere Zyklen hintereinander). Zwischen jeden Zyklus ist eine Pause. Die Pause kann variiert werden. Auch die Startzeit kann variiert werden -> die ersten Zyklen der einzelnen Graphen müssen nicht gleichzeitig beginnen.

Zu jedem Zeitschritt wird die Bilanz (Summe der Werte der 10 Graphen am Zeitpunkt t) gebildet. Insgesamt soll die Bilanz möglichst klein sein.

Die veränderbaren Parameter sind die Längen der Pausenzeiten und die Startzeiten. Die sollen so ausgelegt werden, dass die Bilanz minimal wird.


Ich hoffe, ich konnte es einigermaßen verdeutlichen und die Problematik erklären Very Happy

Evtl. hast du nun eine Idee für mich Smile

Viele Grüße
Tobi

IMG_20220804_151348.jpg
 Beschreibung:

Download
 Dateiname:  IMG_20220804_151348.jpg
 Dateigröße:  2.35 MB
 Heruntergeladen:  16 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ich würde generell den Problem-Based Approach empfehlen. Vorteile gegenüber fminsearch: Nebenbedingungen sind möglich, und der Aufbau des Optimierungsproblems ist viel intuitiver.
https://de.mathworks.com/help/optim/problem-based-approach.html

Ganz wirst du aber dennoch nicht um die von Steve angesprochene Übersetzung in mathematische Funktionen herumkommen.

Zitat:
Mir fällt hierfür nur eine For schleife ein.

Wie sähe diese for-Schleife denn aus? Ein Problem sehe ich gegenwärtig darin, dass pro Graph unterschiedlich viele Signale gewählt werden können. Das erschwert für mich die Formulierung.

Viele Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.993
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2022a
     Beitrag Verfasst am: 05.08.2022, 12:51     Titel:
  Antworten mit Zitat      
Hallo,

interessante Aufgabenstellung. Das Aufsummieren zu jedem Zeitpunkt t ist noch am einfachsten.

Mir stellen sich folgende Fragen:
1. Minimum pro Zeitpunkt t ist eine Sache, soll es auch über die Gesamtzeit T minimal sein? >> Hier kommt die Wahl des Startzeitpunktes, der ja variabel ist, ins Spiel: Wenn dieser sehr groß gewählt wird, ist über eine sehr lange Periode die Bilanz gleich 0, da weder positives noch negatives Signal vorhanden ist. Das Gleiche gilt für die Pausenzeiten.
2. Was bestimmt die Gesamtzeit T? Ist diese vorgegeben?
3. Gibt es einen "Basisgraph", welcher über seine Anzahl an Wiederholungen und/oder Pausenzeiten die Gesamtzeit T definiert?
4. Gibt es einen spätesten Startzeitpunkt und/oder eine maximale Pausenlänge?
5. Ist die Pausenlänge für alle Graphen gleich oder kann diese pro Graph individuell festgelegt werden?

Vielleicht helfen dir diese Fragen bei Problemformulierung für den von Harald vorgeschlagenen Ansatz. (Danke, den Link kannte ich noch nicht!)

Gruß,
Steve
_________________

>> I told me to.

____________________________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobisase
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.07.22
Wohnort: ---
Version: 2022
     Beitrag Verfasst am: 05.08.2022, 14:29     Titel:
  Antworten mit Zitat      
Hallo,
danke euch erstmal für euren Input!

Das Ziel der gesamten Optimierung ist, dass sich die Graphen möglichst gut gegenseitig neutralisieren. Deswegen soll die Bilanz über die gesamte Zeit möglichst minimal werden.

steve hat Folgendes geschrieben:
Mir stellen sich folgende Fragen:
1. Minimum pro Zeitpunkt t ist eine Sache, soll es auch über die Gesamtzeit T minimal sein? >> Hier kommt die Wahl des Startzeitpunktes, der ja variabel ist, ins Spiel: Wenn dieser sehr groß gewählt wird, ist über eine sehr lange Periode die Bilanz gleich 0, da weder positives noch negatives Signal vorhanden ist. Das Gleiche gilt für die Pausenzeiten.
2. Was bestimmt die Gesamtzeit T? Ist diese vorgegeben?
3. Gibt es einen "Basisgraph", welcher über seine Anzahl an Wiederholungen und/oder Pausenzeiten die Gesamtzeit T definiert?
4. Gibt es einen spätesten Startzeitpunkt und/oder eine maximale Pausenlänge?
5. Ist die Pausenlänge für alle Graphen gleich oder kann diese pro Graph individuell festgelegt werden?


1. Die Bilanz soll über die Gesamtzeit T minimal werden.
2./3. Die Gesamtzeit T kann frei gewählt werden. Das Ziel ist, dass die Graphen sich möglichst gut neutralisieren. Deswegen sollte die Gesamtzeit nicht allzu kurz sein, sodass die Optimierung am Ende recht aussagekräftig ist.
4. Ja, es gibt einen spätesten Startzeitpunkt und die Pausenzeiten dürfen sich nur in bestimmten Grenzen bewegen.
5. Die Grenzen der Pausenlängen sind je nach Graph unterschiedlich. Die Pausenlängen können individuell festgelegt werden. (innerhalb der jeweiligen Grenzen)

Danke für den Link, ich werde mich da am Wochenende mal durcharbeiten.


Harald hat Folgendes geschrieben:
Ganz wirst du aber dennoch nicht um die von Steve angesprochene Übersetzung in mathematische Funktionen herumkommen.


Ja, leider habe ich da gerade noch nicht wirklich eine Ahnung, wie ich das Problem mathematisch beschreibe, sodass es auch in Matlab lösbar ist.
Ich habe leider noch recht wenig Ahnung von Optimierungen in Matlab.

Für die Forschleife würde ich alle Pausenlängen konstant machen und nur die Startzeiten verändern. So wird die For Schleife aber auch 10^n mal ausgeführt und die Lösung ist nicht wirklich optimal. (n wären dann die Anzahl der unterschiedlichen Startzeiten)
Es wäre ein sehr vereinfachter Ansatz.

Viele Grüße
Tobi
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.040
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.08.2022, 18:11     Titel:
  Antworten mit Zitat      
Hallo,

zum Einstieg hilft das Optimization Onramp.
https://www.mathworks.com/learn/tut...../optimization-onramp.html

Ich sehe gerade, dass für jeden Graph immer das gleiche Signal verwendet wird? Wenn die Pause auch innerhalb jedes Graphen gleich lang ist, dürfte sich das mit dem oben genannten Ansatz recht schnell aufstellen lassen. Als Ausgangspunkt hast du 2 Optimierungvariablen:
Graphnummer, #Graphen x 1, integer zwischen 1 und #verfügbarer Signale
Pause, #Graphen x 1, innerhalb der von dir anzugebenden Grenzen. Sinnvoll ist vermutlich, die Pause als Integer * Abtastzeit anzusetzen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobisase
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 12.07.22
Wohnort: ---
Version: 2022
     Beitrag Verfasst am: 09.08.2022, 16:13     Titel:
  Antworten mit Zitat      
Hallo,

ich werd das Onramp mal machen, danke dir.

Harald hat Folgendes geschrieben:
Ich sehe gerade, dass für jeden Graph immer das gleiche Signal verwendet wird?

Was meinst du mit Signal?

Harald hat Folgendes geschrieben:
dürfte sich das mit dem oben genannten Ansatz recht schnell aufstellen lassen.


So wirklich habe ich deinen Ansatz nicht verstanden. Kannst du deine Idee bitte nochmal erklären?

Ich selbst hab leider noch keinen wirklichen Ansatz gefunden, um das Problem mathematisch aufzustellen.


Viele Grüße und vielen Dank für den Input
Tobi
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.040
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.08.2022, 16:48     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Was meinst du mit Signal?

Das, was du "Graph" genannt hattest. Bei dir waren mehrere "Graphen" ein "Profil", bei mir mehrere "Signale" ein "Graph".

Zitat:
So wirklich habe ich deinen Ansatz nicht verstanden.

Oft sind das, was zum Verständnis fehlt, nur 1 oder 2 Worte. Bitte solche Fragen nach Möglichkeit konkretisieren. Ich versuche es nochmal und mit begrifflichen Anpassungen:

Graphnummer, #Profile x 1, integer zwischen 1 und #verfügbarer Graphen
--> also eine ganzzahlige Variable, die angibt, welcher verfügbare "Graph" für ein Profil verwendet wird. Wahrscheinlich wird die Optimierung im übrigen besser klappen, wenn du die Graphen möglichst nach ihrer Charakteristik (Richtung, Amplitude, etc.) ordnest.

Pause, #Profile x 1, innerhalb der von dir anzugebenden Grenzen. Sinnvoll ist vermutlich, die Pause als Integer * Abtastzeit anzusetzen.
--> Die Länge der Pause in jedem Profil.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2022 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.