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 in Simulink möglich?

 

Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 13.02.2012, 17:59     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Erläuterungen.
Ich habe letzte Nacht den GA mal durchlaufen lassen. Aber erstens dauert der mir viel zu lange und zweitens fand er ein schlechteres Ergebnis als die anderen Varianten.
Ich bin jetzt gerade dabei meine selbstgeschriebene Variante mit patternsearch zu vergleichen, da diese beiden bisher die besten Ergebnisse liefern konnten.

Ich scheitere gerade an einem sehr simplen Problem, dessen Lösung mir aber absolut nicht mehr einfallen will:
Ich lasse meine eigene Variante eine grobe Abschätzung treffen und möchte diese als Eingangs-/Startwerte für patternsearch nutzen.
Mein m-File (und jetzt bitte nicht lachen) sieht (verkürzt) so aus:
Code:

große Schleife Anfang
...hier steht die eigene Suche....
[x, f] = patternsearch(@obj, ......);
.....
große Scheife Ende
function Wert = obj (x)
......
 


Dabei unterschlängelt er mir das function unten und meint:
Code:
FUNCTION keyword use is invalid here.


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


Harald
Forum-Meister

Forum-Meister


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

du versuchst hier, eine Unterfunktion zu erstellen. Dazu muss das übergeordnete jedoch selbst eine Funktion sein, also mit function beginnen. Im einfachsten Falle:

Code:
function pstest

große Schleife Anfang
...hier steht die eigene Suche....
[x, f] = patternsearch(@obj, ......);
.....
große Scheife Ende
function Wert = obj (x)


Bei GA wäre entscheidend, dass du eine HybridFcn verwendest.

Der aussichtsreichste (und mit wenig Programmieraufwand machbare) Ansatz wäre für mich an der Stelle eine Kombination deines händischen Ansatzes mit fmincon.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 14.02.2012, 10:11     Titel:
  Antworten mit Zitat      
Hallo Harald,

Rolling Eyes Embarassed Baum und Wald, man kennt das ja Wink

Danke für den Hinweis!!!

Und ebenfalls Danke für den Hinweis mit der Kombination eigene Funktion - fmincon. Werde ich ebenfalls in meinen Vergleich mit einbeziehen und mich dann für eine Variante entscheiden.

Grüße,
Ingo
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 14.02.2012, 11:40     Titel:
  Antworten mit Zitat      
Hallo Harald,

nochmal zu fmincon: Wie erreiche ich, dass er sich den Bereich um die geratenen Werte in größeren Grenzen anschaut als die standardmäßig vorgegebenen?
Für mein Problem ändert sich nämlich nur dann das Ergebnis, wenn sich die Eingangswerte mindestens um 0.01 ändern.

Grüße,
Ingo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

dann ist fmincon weniger geeignet. Es ist ja ein ableitungsbasierter Algorithmus, was in deinem Fall dann wohl keinen Sinn macht.

Da könnte man vielleicht noch fminsearch versuchen, oder eben patternsearch.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 16.02.2012, 11:11     Titel:
  Antworten mit Zitat      
Hallo Harald,

wie bekomme ich die Daten/Ergebnisse aus einer der Varianten dann denn in ein Cell-Array?

Code:

[x, f] = patternsearch(@fkt, .......
Erg(k)={ [x, f]};
 


Bekomme leider folgenden Fehler:
Code:
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

Error in ==> ... at ...
    Erg(k)={[x, f]};


Grüße,
Ingo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.02.2012, 19:04     Titel:
  Antworten mit Zitat      
Hallo,

z.B. so:
Code:
Erg(k)={x, f};


Ich würde aber eher die f-Werte in einem Vektor sammeln, und die x-Werte in einer Matrix.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 16.02.2012, 20:43     Titel:
  Antworten mit Zitat      
Hallo Harald,

die Möglichkeit hatte ich auch schon ausprobiert. Leider ohne Erfolg. Der Fehler ist der gleiche.

Grüße,
Ingo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

dass der Fehler der gleiche ist, wage ich zu bezweifeln, aber seis drum.

Warum nimmst du nicht die von mir genannte einfachere Möglichkeit?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 16.02.2012, 21:43     Titel:
  Antworten mit Zitat      
Hallo Harald,

hast natürlich Recht Wink

Hatte mich verguckt, der Fehler lautet:
Code:
??? Subscripted assignment dimension mismatch.

Error in ==> sim_eigen_fmincon at 9
Erg(1)={x, f};


Ich möchte ein Cell-Array verwenden, damit ich die Werte auch gemeinsam auswerten kann. Am besten wäre es wenn ich ein Cell-Array oder eine Matrix mit den Spalten f, x1, x2 erhalten könnte.
Vllt. kann man die Matrix/Cell-Array ja auch aus einem Vektor und einer Matrix zusammenbauen.
Wie kann ich Werte, die in einer Funktion "entstehen" in den Workspace ablegen?

Grüße,
Ingo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

warum kannst du das nicht, wenn du eine Variable für x und eine für f hast? Wenn du willst, kannst du die ja am Ende auch zusammenfügen.

Zitat:
Wie kann ich Werte, die in einer Funktion "entstehen" in den Workspace ablegen?

Wenn ich nun wüsste, was du mit "entstehen" meinst? Was du damit bezweckst?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 16.02.2012, 22:08     Titel:
  Antworten mit Zitat      
Hallo!

Wenn ich in der Funktion stehen habe:

Code:

[x, f] = fmincon(@obj, ......
Wert_a=x;
Wert_b=f;
 


dann habe ich zwar einen Vektor und eine Matrix, aber ja nur innerhalb der Funktion. Wenn die Funktion abgearbeitet ist, ist der Workspace (wieder) leer und ich kann nicht mit Wert_a und Wert_b weiterarbeiten.

Grüße,
Ingo
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.02.2012, 22:22     Titel:
  Antworten mit Zitat      
Dann gib sie doch als Rückgabeargumente zurück?
Private Nachricht senden Benutzer-Profile anzeigen
 
Hiwi-Job
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 71
Anmeldedatum: 28.09.11
Wohnort: Hannover
Version: 2013a
     Beitrag Verfasst am: 16.02.2012, 22:37     Titel:
  Antworten mit Zitat      
Rolling Eyes Danke! Exclamation
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3

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.