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 mit Parametern

 

Bruce Leeds

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2011, 17:49     Titel: Optimierung mit Parametern
  Antworten mit Zitat      
Hallo,
ich möchte gerne eine Optimierung mit mehreren Veränderlichen durchführen - erst ohne Nebenbedingungen (fminunc), später dann auch mit Nebenbedingungen (fmincon). Ich fand dazu auch schon etwas hier im Forum, aber ich glaube nicht, dass was ich schrieb schon stimmt.

In der Hauptfunktion (bzw. im Command Window) gebe ich ein:

Code:

Psrd0 = 5;
om0   = 1000;
Msoll = [2 2];
Mw    = [2 2];
x0 = [4 100];

options = optimset(@fminunc);
options = optimset(options,'Display','final','LargeScale','off');
Jkosten = @(x)Jcost(x,Psrd0,om0,Msoll,Mw,p);
[xopt, fval] = fminunc(@Jkosten, x0, options )
 


wobei die letzten zwei Zeilen die sind, deren Korrektheit ich am ehsten bezweifle. Die eigentlich zu minimierende Kostenfunktion ist in einem anderen File, im gleichen Ordner mit

Code:

function J = Jcost(x)
   J = Psrd0 + om0 + Msoll(1) + Msoll(2) + Mw(1) + Mw(2) + x(1)^2 + x(2)^2;
end
 


definiert, wobei die Addition natürlich nur ein Pseudocode ist. Wie muss ich das Ganze so schreiben - besonders die oben genannten zwei Zeilen, - damit ich meiner Kostenfunktion nicht nur die zu optimierenden Variablen, sondern auch Kostanten als Parameter übergeben kann?

Gruß, Bruce


Harald
Forum-Meister

Forum-Meister


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

das @ vor Jkosten ist zuviel, da das schon ein Function Handle ist.

Zudem muss die Funktion Jcost auch Psrd0,om0,Msoll,Mw,p als Eingabeparameter annehmen.

Ansonsten siehts auf den ersten Blick gut aus. Bitte auch immer dazu sagen, warum man Fehler vermutet etc.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Bruce Leeds

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2011, 18:19     Titel: Optimierung mit Parametern
  Antworten mit Zitat      
Vielen Dank, das scheint zu funktionieren. Wo ich den Fehler vermutete, schrieb ich ja. In der Syntax der genannten zwei Zeilen.

Könntest du vielleicht noch erklären, was es bedeutet, wenn man

Code:

@(x)funktion(x,par1,par2)
 


schreibt? Ich verstehe, dass es bedeutet, dass par1 und par2 gesetzt werden sollen, aber x nicht. Kann man das irgendwie noch allgemeiner sagen, denn es wird scheinbar keine Funktion (die verstehe ich) aufgerufen, sondern irgendwie das FunctionHandle direkt vor die Funktion geschrieben. Die Syntax ist irgendwie... merkwürdig...
 
Harald
Forum-Meister

Forum-Meister


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

aber nicht, warum du da einen Fehler vermutest, und das ist ebenso wichtig Wink

Die Schreibweise bedeutet, dass die Variablen in Klammern "Dummy-Variablen" oder lokale Variablen sind; die anderen werden aus dem Workspace entnommen. Siehe auch die Doku unter
MATLAB --> Programming Fundamentals --> Types of Functions --> Anonymous Functions.

Grüße,
Harald
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 - 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.