Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Optimierung einer Funktion mit fmincon

 

Hilbert80
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.12.2018, 15:41     Titel: Optimierung einer Funktion mit fmincon
  Antworten mit Zitat      
Liebe Gemeinde,

ich möchte ein Optimierungsproblem lösen und möchte dafür symbolische Ausdrücke verwenden, da meine Zielfunktion zum einen aus einer Doppelsumme und zum anderen aus vielen zusammengesetzten Funktionen besteht, was es zu komplex macht, die Funktion als geschlossenen Ausdruck zu formulieren.

Hier ist mal ein kleines Beispielprogramm, an welchem ich versucht habe das umzusetzen - jedoch ohne Erfolg. Wenn es hier funktioniert sollte es auch im "großen" Programm funktionieren.

Ich habe folgenden Code:

Code:

clc
clear all

%symbolische Variablen
syms t1 t2

%symbolische Ausdrücke
l = t1;
f = t2;

%symbolische Summenfunktion als Zielfunktion
g = l-f;

%Umwandlung in eine Funktion @(t1,t2)
objective = matlabFunction(g)

% linear constraints
Ao = [];
bo = [];
Aeq = [];
beq = [];

% nonlinear constraints
c = [];
ceq = [];

% optimize with fmincon
%[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN]
% = fmincon(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)
t = fmincon(objective,[0,0],Ao,bo,Aeq,beq,[1,1],[5,5],[]);
 

Da man an fmincon ja keine symbolischen Ausdrücke übergeben kann, wandle ich den symbolischen Ausdruck der Zielfunktion mit dem Befehl
Code:

in eine für fmincon passende Funktion um.

Ich erhalte folgende Fehlermeldung:
Code:

Error using makeFhandle/@(t1,t2)t1-t2
Not enough input arguments.

Error in fmincon (line 635)
      initVals.f = feval(funfcn{3},X,varargin{:});

Error in test22 (line 40)
t = fmincon(objective,[0,0],Ao,bo,Aeq,beq,[1,1],[5,5],[]);
Caused by:
    Failure in initial user-supplied objective function evaluation. FMINCON cannot continue.
 


Das sollte doch funktionieren. Ich weiß nicht wo das Problem dabei sein soll.

Kann mir jemand helfen?

VG
Dominic
Private Nachricht senden Benutzer-Profile anzeigen


Friidayy
Forum-Century

Forum-Century


Beiträge: 223
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 29.12.2018, 16:05     Titel:
  Antworten mit Zitat      
hallo dominic,

hier ein potenzieller fix:

Code:
%Umwandlung in eine Funktion @(t1,t2)
objective = matlabFunction(g)
objfcn = @(x) objective(x(1), x(2));

% linear constraints
Ao = [];
bo = [];
Aeq = [];
beq = [];

% nonlinear constraints
c = [];
ceq = [];

% optimize with fmincon
%[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN]
% = fmincon(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)
t = fmincon(objfcn,[0,0],Ao,bo,Aeq,beq,[1,1],[5,5],[]);


gruß,
michael
Private Nachricht senden Benutzer-Profile anzeigen
 
Hilbert80
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.12.2018, 19:51     Titel: Optimierung einer Funktion mit fmincon
  Antworten mit Zitat      
Danke dir Friidayy. Funktioniert.
Darauf wäre ich aber nie gekommen. Ich hoffe, das funktioniert dann auch in komplexerer Form.

VG
Dominic
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 - 2019 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.