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

fmincon & "Warning:Matrix is singular, close to sin

 

Waldemar
Themenstarter

Forum-Century

Forum-Century


Beiträge: 100
Anmeldedatum: 14.10.11
Wohnort: Neuss
Version: R2011b
     Beitrag Verfasst am: 29.01.2013, 20:09     Titel:
  Antworten mit Zitat      
Hallo Harald,

sucht patternsearch eigentlich sofort nach "single global solution" , es ist gibt ja noch die Möglichkeit mit patternsearch nach "single local solution" zu suchen?

Oder müsste ich hierfür noch eine zusätzliche Angabe machen?


MfG, Waldemar
_________________

Im "ich brauch Hilfe"-Status
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.01.2013, 20:52     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß nicht, was du da zitierst oder wo du etwas unterscheiden willst.

patternsearch verwendet eine Strategie, die es wahrscheinlicher macht, dass man ein globales Minimum findet, als wenn man einen Algorithmus aus der Optimization Toolbox verwendet. Man hat jedoch (wie bei allen anderen Solvern auch) keine Garantie, dass das globale Minimum gefunden wird.

Zur Arbeitsweise von patternsearch siehe z.B. hier
http://www.mathworks.com/help/relea.....hat-is-direct-search.html

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

Forum-Meister


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

hier noch eine Seite allgemein zum Thema Optimierung und Simulation.
http://www.mathworks.de/de/help/opt.....ifferential-equation.html

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

Forum-Century

Forum-Century


Beiträge: 100
Anmeldedatum: 14.10.11
Wohnort: Neuss
Version: R2011b
     Beitrag Verfasst am: 30.01.2013, 16:20     Titel:
  Antworten mit Zitat      
Hallo Harald,

nochmals vielen Dank für deine Unterstützung!...mit folgender Lösung kriege ich ziemlich gute Ergebnisse hin:

Code:

  Betriebspunkt=[6.70,2.50,58;
                 -8.30,2.30,397;
                 8.494,4.80,20.14;
                 -8.30,4.20,356;
                 -8.50,4.13,389;
                 ...
                 -4.115,1.914,352.6;
                 -8.272,4.90,391.4;
                 -7.997,1.583,140.8;];

size_Betriebspunkt=size(Betriebspunkt);
             
for i=1:size_Betriebspunkt(1,1)
             
      CA50=Betriebspunkt(i,1)      
      IMEP=Betriebspunkt(i,2)
      NOx=Betriebspunkt(i,3)
     
lb=[0;0;0;0;0;0];
ub=[30;30;30;30;30;30];
optopt= optimset('Display','iter','MaxIter',40);
[x, fval, exitflag]=patternsearch(@Regelung_auto,[0.1;0.1;0.5;1;3;1],[],[],[],[],lb,ub,[],optopt);

X={[x]};
Optimum_W(i,1)=X; % Optimale Elemente (R1, R2, R3, Q1, Q2 und Q3) für die Wichtungsmatrizen!
Fval={[fval]}
Optimum_R(i,1)=Fval; % Optimale (minimale) Regelguete

end

 filenameW=['C:\Users\Niko\Desktop\zzTempDA\Optimum_W_auto.txt'];
 dlmwrite(filenameW, Optimum_W, 'delimiter','\t', 'newline', 'pc', '-append');
 filenameR=['C:\Users\Niko\Desktop\zzTempDA\Optimum_R_auto.txt'];
 dlmwrite(filenameR, Optimum_R, 'delimiter','\t', 'newline', 'pc', '-append');
 


&
Code:
function y = Regelung_auto(x)

CA50_S = evalin('base', 'CA50');
IMEP_S = evalin('base', 'IMEP');
NOx_S = evalin('base', 'NOx');

% Unterordner einbinden
path(genpath(pwd),path);
path(genpath('..\MODELLBILDUNG'),path);

% Simulationsschrittweite
stepSize = 0.03;

% Simulationsdauer vordefinieren
simTime = 12;

% PT1-Zeitkonstante
T_PT1    = 2;

% Laden der MAT-Files für die Streckenmodelle und Ableitungsmodelle
load('modLOLIMOT_3In_CA50');
load('modLOLIMOT_3In_IMEP');
load('modLOLIMOT_3In_DPMAX');
load('modLOLIMOT_3In_HC');
load('modLOLIMOT_3In_NOX');

simOut=sim('OPT2_auto','SrcWorkspace','current','SaveOutput','on','OutputSaveName','youtNew');

simOutVars = simOut.who;
yout = simOut.get('youtNew');
Regelguete=yout.signals(1,1).values;
y=max(Regelguete);
% length_Regelguete=length(Regelguete);
% y=Regelguete(length_Regelguete);

% OPTstell=yout.signals(1,2).values;
 


(OPT2_auto.mdl als Anhang bei einem anderen Beitrag!)

2 Fragen hätte ich noch:

- Gibt es vielleicht ein Abbruchkriterium für die Optimierung? Also wenn zum Beispiel patternsearch für einen Arbeitspunkt in NaN oder Inf läuft (und da nicht mehr rauskommt), so dass direkt zum nächsten Arbeitspunkt gewechselt wird?...wäre ja praktisch, da die Optimierung aller Betriebspunkte die ganze Nacht (oder noch länger) dauern kann und man ja nicht daneben sitzt.

- Hätte nochmal eine Frage zu unterschiedlichen Arbeitsspeichern und den Austausch von Variablen dazwischen!...
Wenn ich eine Funktion habe und von dort Variablen an mein Skript ('base'-Workspace) oder an andere Funktionen übergeben möchte, allerdings nicht [...]=functionname() nutzen kann (wie oben bei mir) oder nutzen möchte, welche Möglichkeit habe ich??
(Vom 'base'-Workspace Variablen in Funktionen zu überführen, geht ja mit:
Code:
CA50_S = evalin('base', 'CA50');
.
Da ich ja keinen Namen von den Arbeitsspeichern der Funktionen kenne, kann ich damit ja nicht arbeiten, oder doch?
Wenn ja, wie müsste der Befehl aussehen, wenn ich Variablen aus meiner Funktion (z.B: OPTstell) in mein 'base'-Workspace transferieren möchte?)

MfG, Waldemar
_________________

Im "ich brauch Hilfe"-Status
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

zu 1.: das sollte an sich nicht passieren, es sei denn der Startpunkt liefert NaN. Man könnte so etwas über eine Output Function abfangen.
http://www.mathworks.com/help/relea...../ug/output-functions.html

zu 2.: zumindest für die Übergabe von Parametern an die Zielfunktion gibt es schöne Möglichkeiten.
http://www.mathworks.com/help/relea.....ing-extra-parameters.html
Mein bevorzugter Weg sind die anonymous functions.
Nested functions böten den Vorteil, dass du auch Informationen in den aufrufenden Workspace schreiben kannst. Du musst dir allerdings darüber im klaren sein, dass das dann in jeder Funktionsauswertung gemacht wird und nicht nur in den Endpunkten einer Iteration.

Mehr in die von dir erwähnte Richtung wäre "assignin", was ich aber vermeiden würde.

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

Forum-Century

Forum-Century


Beiträge: 100
Anmeldedatum: 14.10.11
Wohnort: Neuss
Version: R2011b
     Beitrag Verfasst am: 05.02.2013, 19:19     Titel:
  Antworten mit Zitat      
Hallo Harald,

entschuldige das mega späte Dankeschön.
Vielen lieben Dank für alle Tipps.


MfG, Waldemar
_________________

Im "ich brauch Hilfe"-Status
Private Nachricht senden Benutzer-Profile anzeigen
 
blub

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2013, 11:49     Titel:
  Antworten mit Zitat      
Waldemar hat Folgendes geschrieben:


Hättest du einen Tipp, wie ich die Nicht-Negativ-Nebenbedingungen bei fminsearch einbinden kann?



alternativ zu haralds idee müsste auch
Code:
sqrt(parameter^2)

funktionieren
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.