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

Abbrechen aus Funktion ODER Optimalitätskriterien fmincon

 

elfriede

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2017, 12:14     Titel: Abbrechen aus Funktion ODER Optimalitätskriterien fmincon
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Problem mit fmincon. Und zwar möchte ich gerne ein Optimalitätskriterium selbst vorgeben, welches ich in der Funktion berechne, die die Zielfunktion übergibt.
Jetzt möchte ich gerne fmincon abbrechen, sobald dieses Kriterium erfüllt ist.

Wenn ich aber in die Zielfunktion bzw. Gradientenberechnung ein return schreibe, kehrt die Funktion ja zurück zu fmincon.

Gibt es eine Möglichkeit sowas zu sagen wie: Beende das Programm?

Ein Beispiel:

Code:

function [x,fval,exitflag,output,lambda,grad,hessian] = run()
   
    % Objective
    fun = build_objective(1, 2);
   
    % Start at
    x0 = [-1;2;0];

    [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(fun,x0,[],[],[],[],[],[],[],options);
end

function objective = build_objective(some, parameters)    
    model = 1;
    objective = @rosenbrock;
    return
   
    % Nested function definitions follow

    function [f, g] = rosenbrock(x)
        f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2 + some*model*x(3)^2 + parameters;

        if nargout < 2
            return
        end

        g = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1));
             200*(x(2)-x(1)^2);
             some*model*2*x(3)];
         if norm(g,1) < 1e-06
             return
         end

    end
end
 


Also was schreibe ich anstelle von "return"? Oder kann ich freie Optimalitätskriterien vorgeben?

Vielen Dank für Eure Hilfe
elfriede


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.446
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.11.2017, 14:18     Titel:
  Antworten mit Zitat      
Hallo,

dafür kannst du Output Functions verwenden.
https://www.mathworks.com/help/optim/ug/output-function.html

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2017, 14:40     Titel:
  Antworten mit Zitat      
Habe ich da nicht das gleiche Problem?
 
Harald
Forum-Meister

Forum-Meister


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

nein, denn wenn stop auf true gesetzt wird, bricht fmincon ab.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2017, 16:29     Titel:
  Antworten mit Zitat      
Ah, super, dankeschön Smile
 
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.