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: Überlagerung mehrerer Graphen

 

Tobisase
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
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: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     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.

____________________________________
Matlab Cheat Sheet
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-Anfänger

Forum-Anfänger


Beiträge: 11
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:  168 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
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: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     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.

____________________________________
Matlab Cheat Sheet
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-Anfänger

Forum-Anfänger


Beiträge: 11
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.448
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-Anfänger

Forum-Anfänger


Beiträge: 11
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.448
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
 
Tobisase
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 12.07.22
Wohnort: ---
Version: 2022
     Beitrag Verfasst am: 17.08.2022, 14:02     Titel:
  Antworten mit Zitat      
Hallo,
ich habe mal ein paar Testsignale erstellt. Es fällt mir wahrscheinlich leichter, deinen Ansatz an einem konkreten Problem mit recht kleinen Vektoren zu verstehen. Könntest du deinen Ansatz bitte auf mein kurzes Beispiel anwenden?

Ich glaube am meisten Probleme habe ich damit, dass die Signale unterschiedlich lang sein können. Irgendwas durchdenke ich da falsch. Was genau, weiß ich leider auch noch nicht.

Code:
% mein vereinfachtes Bsp.:


% Signale S
S1 =  [17 19 20  22 -21 -20 -18 -17 -3];
S2 =  [52 61 24 -55 -49  -8];
S3 =  [ 4 14  9   7  -7 -12 -11];

% Pause = 2 Zeiteinheiten, wird um es zu vereinfachen erstmal konstant
% gesetzt, soll idealerweise aber später für jeden Graphen(P1, P2, ...) unterschiedlich
% sein, also in bestimmten Grenzen optimiert werden
P = zeros(1,2);

% Graphen -> Häufigkeit der Signale in einem Graph wird von der Signallänge, Startzeit und
% Pausenzeit bestimmt
G1 = [S1 P S1]; % Länge: 20 Zeitschritte -> Graph passt 2 mal mit Startzeit in T rein
G2 = [S2 P S2 P S2]; % Länge: 22 Zeitschritte -> Graph passt 3 mal mit Startzeit in T rein
G3 = [S3 P S3 P S3]; % Länge: 25 Zeitschritte -> Graph passt 3 mal mit Startzeit in T rein

% Gesamtzeit: 30 Zeitschritte -> kann variabel festgelegt werden. Irgendwo
% muss der Betrachtungszeitraum aber eingegrenzt werden.
T = 30;

% Startzeit zwischen 0 bis 5 Zeiteinheiten wählbar (-> Grenzen). Muss so gewählt werden, dass die Bilanz
% möglichst minimal wird
G1 = [zeros(1,start1) G1];
G2 = [zeros(1,start2) G2];
G3 = [zeros(1,start3) G3];


% Zu jedem Zeitschritt wird der Absolutwert der Bilanz gebildet.
% Danach wird der Bilanzvektor aufsummiert -> soll minimal werden
Ergebnis = sum(abs(G1(t) + G2(t) + G3(t)));

% Im ersten schritt soll nur die Startzeit optimiert werden, im
% zweiten Schritt auch die Pausenzeiten für jeden Graphen.

 



Viele Grüße
Tobi

PS: Das Onramp hat mir leider nicht wirklich weiter geholfen, war aber trotzdem sehr informativ.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das Onramp stellt den Ansatz vor, den ich dir vorgeschlagen habe. Es sollte also sehr wohl weiterhelfen.
Fang doch zumindest mal an, die zu optimierenden Größen mit optimvar und das Optimierungsproblem mit optimproblem aufzubauen. Ein paar Beispiele gibt es da auch schon im Forum.

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-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 12.07.22
Wohnort: ---
Version: 2022
     Beitrag Verfasst am: 06.09.2022, 14:43     Titel:
  Antworten mit Zitat      
Hallo,

ich habe mal ein bisschen rumprobiert und dafür mein Problem stark vereinfacht. Dabei ist Folgendes rausgekommen.
Code:

function [E] = opt_func(x)

% Pause
P = zeros(2,1);

% Aufrunden -> integer?
x = ceil(abs(x));

% Signale S
S1 =  [17 19 20  22 -21 -20 -18 -17 -3]';
S2 =  [52 61 24 -55 -49  -8 -8  -4]';
S3 =  [ 4 14  9   7  -7 -12 -11 -4  15]';

% Profile
G1 = vertcat(zeros(x(1),1), S1, P, S1);
G2 = vertcat(zeros(x(2),1), S2, P, S1);
G3 = vertcat(zeros(x(3),1), S3, P, S1);

% Auf einheitliche Länge kürzen
l = min([length(G1), length(G2), length(G3)]);
G = horzcat(G1(1:l), G2(1:l), G3(1:l));

% E soll minimal werden
E = sum(abs(sum(G,2)));

end
 


Code:

% Startwert
x0 = [0 0 0];

% Grenzen
ub = ones(1,3) * 5;
lb  = zeros(1,3);

problem = createOptimProblem('fmincon','x0',x0,...
    'objective',@opt_func,'lb',lb,'ub',ub);

ms = MultiStart;
x = run(ms,problem,2000);
 

Meine Probleme sind jetzt folgende:
- die x-Werte sollen nur integer sein
- das globale Minimum soll möglichst effektiv gefunden werden
- die Pausenzeiten sollen ebenfalls optimiert werden

Habt ihr/du da vlt. noch ein paar gute Hinweise? Auch welcher Solver am besten geeignet ist?

Danke und viele Grüße
Tobi
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.09.2022, 15:59     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe offen gesagt nicht, warum du auf den Solver-basierten Ansatz umschwenkst. Der Problem-basierte Ansatz ist an sich deutlich einfacher. Insbesondere würde automatisch der richtige Solver ausgewählt werden, der hier vermutlich ga ist.
Es ist nicht sinnvoll, fmincon auf ein solches Problem anzuwenden, da es in den entscheidenden Punkten nicht differenzierbar ist. Da hilft auch MultiStart nur sehr begrenzt, weil für fmincon jeder Startpunkt ein lokales Minimum ist. Das siehst du schön, wenn du den Code zu
Code:
ms = MultiStart("Display","iter");

abänderst.

Sinnvoller ist wie gesagt ga, weil man dort Integer-Vorgaben machen kann.
Code:
[x, f] = ga(@opt_func, 3, [], [], [], [], lb, ub, [], 1:3)


Mir sind auch mutmaßliche Copy-Paste-Fehler aufgefallen:
Code:
% Profile
G1 = vertcat(zeros(x(1),1), S1, P, S1);
G2 = vertcat(zeros(x(2),1), S2, P, S1); % Wechsel von S2 auf S1 beabsichtigt??
G3 = vertcat(zeros(x(3),1), S3, P, S1); % Wechsel von S3 auf S1 beabsichtigt??

Hier kannst du auch die Pausen variabel machen, indem du zeros(x(4),1) etc. verwendest. Natürlich musst du dann auch lb und ub erweitern.

Durch den momentanen Ansatz kann es passieren, dass kürzere Pausen bevorzugt werden, weil kürzere Signale erstellt werden und die summierten Abweichungen dann natürlich geringer werden. Ist das beabsichtigt? Wenn nicht, würde ich zu
Code:

wechseln.

Wenn die Anzahl der zu optimierenden Variablen nicht deutlich größer wird, kann es das einfachste sein, einfach alle Kombinationen durchzuprobieren. Derzeit sind es ja nur 6^3, und das "rechtfertigt" an sich kein Optimierungsproblem.
Code:
for k1 = 1:6
    for k2 = 1:6
        for k3 = 1:6
            f(k1,k2,k3) = opt_func([k1-1; k2-1; k3-1]);
        end
    end
end
[M, pos] = min(f, [], "all")


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-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 12.07.22
Wohnort: ---
Version: 2022
     Beitrag Verfasst am: 14.09.2022, 09:05     Titel:
  Antworten mit Zitat      
Hallo,

Harald hat Folgendes geschrieben:
ich verstehe offen gesagt nicht, warum du auf den Solver-basierten Ansatz umschwenkst. Der Problem-basierte Ansatz ist an sich deutlich einfacher.


Ich habe mehrere Ansätze ausprobiert und der Problem-basierte Ansatz hat erst nicht funktioniert. Jetzt funktioniert er aber und nimmt, wie du schon vermutet hast, den ga.

Harald hat Folgendes geschrieben:
Wenn die Anzahl der zu optimierenden Variablen nicht deutlich größer wird, kann es das einfachste sein, einfach alle Kombinationen durchzuprobieren.


Leider ist das mit Kombinieren recht schwierig. Es gibt 10 verschiedene Start- und 10 verschiedene Pausenzeiten. Also insgesamt 20 Optimierungsvariablen.

Die Signalvektoren beinhalten mehrere Tausend Zeilen, die Start bzw. Pausenzeiten auch.
Das gesamte Profil über die zu betrachtende Zeit wird knappe 500000 Zeilen lang sein.

Ich denke, dass Matlab da recht lange brauchen wird, um das zu optimieren. Deswegen werde ich glaube nicht drumherum kommen, das Problem zu reduzieren. Oder?

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

Forum-Meister


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

Zitat:
der Problem-basierte Ansatz hat erst nicht funktioniert.

In solchen Fällen poste bitte generell, was du genau versucht hast und was daran nicht funktioniert hat.

Zitat:
Es gibt 10 verschiedene Start- und 10 verschiedene Pausenzeiten. Also insgesamt 20 Optimierungsvariablen.

Dann ist Durchprobieren keine Option. ga ist dann besser.

Zitat:
Ich denke, dass Matlab da recht lange brauchen wird, um das zu optimieren.

Das ist durchaus möglich. Bei einem Problem, das seit über einem Monat diskutiert wird, kann man MATLAB ja aber auch mal ein paar Stunden rechnen lassen?

Zitat:
Deswegen werde ich glaube nicht drumherum kommen, das Problem zu reduzieren.

Wenn es möglich ist, ein Problem zu vereinfachen, schadet das nie.

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
.





 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.