Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Funktionsentwickler (w/m) Automobile
Entwicklung von modellbasierten Softwarelösungen in Simulink inklusive Autocode-Generierung
Bertrandt Ingenieurbüro GmbH - Frankfurt am Main

Software Entwicklungsingenieur (m/w) TargetLink
Modellbasierte Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink
Continental AG - Nürnberg

Softwareentwickler (m/w) automatische Codegenerierung
Umsetzung, Neuprogrammierung und Weiterentwicklung in Simulink, TargetLink und C
EFS - Ingolstadt, Wolfsburg

Entwicklungsingenieur/in Simulationsmodelle
Bereitstellung und Betreuung von HiL- und SiL-Fahrzeugsystemmodellen für Kunden-Projekte
Robert Bosch GmbH - Schwieberdingen

Entwickler (m/w) Fahrerassistenzsysteme - Fahrzeugnahe Funktionsentwicklung
Entwicklung von Funktionen für assistiertes und pilotiertes Fahren
Knorr-Bremse Systeme für Nutzfahrzeuge GmbH - Schwieberdingen

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Minimum einer Funktion

 

ThKo26
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 26.01.2018, 20:57     Titel:
  Antworten mit Zitat      
Hallo Harald,

in diesem Fall gebe ich diese Gewichte vor und definiere somit, auf welches J man mehr Wert lege. und variiere händisch Smile

Code:
w1 = 0,5
w2 = 1-w1


funktioniert super!

Nur für die Umsetzung für

Code:
f1 = w1 * J(:,1) + w2 * J(:,2);
f2 = w3* J(:,3) + w4 * J(:,4) + w5  * J(:,5);


f3 = f2 + f1

Code:
[fmin, pos] = min(f1)
[fmin, pos] = min(f2)
[fmin, pos] = min(f3)


kann es passieren, dass ich für f1 eine andere position erhalte als für f2. und somit habe ich um das min für f3 zu erreichen zwei vershiedene Positionen, die ich nicht umsetzen kann.

Somit muss w1, w2, ... solange optimiert werden, bis für das minf3, die positionen für f1 und f2 die gleichen sind.

Ich glaube, dass wir langsam zum Ziel kommen,

Danke Harald, dass du weiter mitmachst!

Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 17.968
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 26.01.2018, 22:31     Titel:
  Antworten mit Zitat      
Hallo,

da die Zielfunktion ganzzahlig und somit unstetig ist, bleibt an Optimierungsfunktionen nur genetischer Algorithmus ( ga ). Dann leg mal los...

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 26.01.2018, 22:50     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
da die Zielfunktion ganzzahlig und somit unstetig ist, bleibt an Optimierungsfunktionen nur genetischer Algorithmus ( ga ). Dann leg mal los...


werde ich machen! Danke.

Ich melde mich Smile

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

Forum-Meister


Beiträge: 17.968
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 26.01.2018, 23:57     Titel:
  Antworten mit Zitat      
Hallo,

mir wurde gerade klar, dass man das Problem anders auffassen kann und sollte:

Minimiere f = min(w1 * J(:,1) + w2 * J(:,2) + w3* J(:,3) + w4 * J(:,4) + w5 * J(:,5));
mit (vermutlich) NB: Summe der w = 1.

Das kannst du auch mit fmincon lösen.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 30.01.2018, 15:49     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe jetzt für die fmincon folgenden Input über das Optimization Tool.

Code:

Error running optimization.
Cannot set option: CrossoverFcn


costfunction:

Code:
function f = costfunction(w1,w2,w3,w4,w5)

    global J; global GripWL, global CzTmm
   
     f = min((w1 * J(:,1) + w2 * J(:,2)) * CzTmm + ...
         (w3* J(:,3) + w4 * J(:,4) + w5 * J(:,5))*GripWL);
   
end


ich habe mit global, die Ergebnismatrix und zwei zusätzliche feste Koeffizienten gesetzt.

Zusätzlich habe ich das System mit dem Genethischen Algorithmus aufgebaut.

Code:
function f = costfunction_ga(w1,w2,w3,w4,w5)

    global J; global GripWL, global CzTmm
   
     f = (w1 * J(:,1) + w2 * J(:,2)) * CzTmm + ...
         (w3* J(:,3) + w4 * J(:,4) + w5 * J(:,5))*GripWL;
   
end


Code:
-----------------------------
Optimization running.
Error running optimization.
Inner matrix dimensions must agree.


Danke für die Unterstützung.

Grüße

ga.JPG
 Beschreibung:

Download
 Dateiname:  ga.JPG
 Dateigröße:  110.52 KB
 Heruntergeladen:  6 mal
fmincon.JPG
 Beschreibung:

Download
 Dateiname:  fmincon.JPG
 Dateigröße:  108.18 KB
 Heruntergeladen:  7 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.968
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 30.01.2018, 19:20     Titel:
  Antworten mit Zitat      
Hallo,

du musst w1 bis w5 zu einem Vektor w zusammenfassen.
Ansonsten auch mal einen Haltepunkt setzen, um den Fehler zu finden. Das ist bei Aufruf aus dem Command Window oft einfacher.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 31.01.2018, 12:14     Titel:
  Antworten mit Zitat      
Hallo,

ich habe w1, ...,w5 zu einem Vektor zusammengefasst und habe für ga eine Lösung erhalten.

Code:
function f4 = costfunction_ga(w)

    global J; global GripWL, global CzTmm
   
     f4 = min((w(1) * J(:,1) + w(2) * J(:,2)) * CzTmm + ...
         (w(3)* J(:,3) + w(4) * J(:,4) + w(5) * J(:,5))*GripWL);
   
end


ich verstehe nur 'min' nicht, aber ohne funktioniert es nicht.


für fmincon lautet die Funktion gleich, bekomme aber weiterhin folgendne Fehler
Bild fmincon.

Grüße und Danke.

fmincon.JPG
 Beschreibung:

Download
 Dateiname:  fmincon.JPG
 Dateigröße:  108.18 KB
 Heruntergeladen:  9 mal
ga.JPG
 Beschreibung:

Download
 Dateiname:  ga.JPG
 Dateigröße:  178.25 KB
 Heruntergeladen:  8 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.968
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 31.01.2018, 13:14     Titel:
  Antworten mit Zitat      
Hallo,

für feste w1 bis w5 kannst du ja schauen, welcher Run das Minimum liefert:
[fmin, pos] = min(f3) mit f3 = f2 + f1

Jetzt möchtest du w1 bis w5 so anpassen, dass der minimale Run minimal wird.


Mit der Fehlermeldung von fmincon kann ich nichts anfangen. Hast du evtl. im rechten Teil des Tools irgendwelche Einstellungen gemacht? Es kann auch einen Versuch wert sein, die Eingaben im Tool nochmal von vorne zu machen.
Alternativ File --> Generate Code und den entstehenden Code ansehen.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 31.01.2018, 13:35     Titel:
  Antworten mit Zitat      
Hallo Harald,


Code:
für feste w1 bis w5 kannst du ja schauen, welcher Run das Minimum liefert:
[fmin, pos] = min(f3) mit f3 = f2 + f1


genau, so habe ich das gelöst für von mir vorgegebene w.

Jetzt möchte ich, dass die w variiert werden, damit ich das absolute Minimum bekomme.

Zitat:
Mit der Fehlermeldung von fmincon kann ich nichts anfangen. Hast du evtl. im rechten Teil des Tools irgendwelche Einstellungen gemacht?


nein habe ich nicht. ich werde alles nochmal eingeben und einen Code generiren lassen.

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

Forum-Meister


Beiträge: 17.968
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 31.01.2018, 13:51     Titel:
  Antworten mit Zitat      
Hallo,

ist deine indirekte Frage
Zitat:
ich verstehe nur 'min' nicht

dann jetzt beantwortet?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 31.01.2018, 14:06     Titel:
  Antworten mit Zitat      
Hallo,


Zitat:

dann jetzt beantwortet?
]

jupp, da ich ja nur einen Wert haben möchte.

Wenn ich ga nutze, und es öftes wiederhole, komme teilweise unterschiedliche Ergebnisse raus. sind minimal, aber unterschiedlich.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 31.01.2018, 14:55     Titel:
  Antworten mit Zitat      
Hallo,

mit der Toolbox funktioniert mein ga, jetzt habe ich einen Code generiert und möchte es erneut starten und bekomme die fehlermeldung.

Code:
Error using ga
Too many input arguments.

Error in ga (line 11)
ga(@costfunction_ga,nvars,[],[],Aeq,beq,lb,ub,[],[],options);
 


kann aber damit leider nicht wirklich etwas anfangen.

mein Skript.

Code:
N = 5; % N: Anzahl der Gewichtungen
Aeq = ones (1,N);
A = [];
beq = 1;
b =[];
lb = [0 0 0 0 0];
ub = [1 1 1 1 1];
nvars = 5;


Code:
tic
[x2,fval2,exitflag2,output2,population2,score2] = ga(nvars,Aeq,beq,lb,ub);
toc



Code:
function [x2,fval2,exitflag2,output2,population2,score2] = ga(nvars,Aeq,beq,lb,ub)
%% This is an auto generated MATLAB file from Optimization Tool.

%% Start with the default options
options = gaoptimset;
%% Modify options setting
options = gaoptimset(options,'CrossoverFcn', {  @crossoverintermediate [] });
options = gaoptimset(options,'Display', 'iter');
options = gaoptimset(options,'PlotFcns', {  @gaplotbestf @gaplotbestindiv @gaplotexpectation @gaplotscorediversity @gaplotscores @gaplotselection @gaplotstopping });
[x2,fval2,exitflag2,output2,population2,score2] = ...
ga(@costfunction_ga,nvars,[],[],Aeq,beq,lb,ub,[],[],options);


Code:
function [fmax4, pos4] = costfunction_ga(w)

    global J; global LTGripWL, global LTCzTmm
   
     f4 = ((w(1) * J(:,1) + w(2) * J(:,2)) * LTCzTmm + ...
         (w(3)* J(:,3) + w(4) * J(:,4) + w(5) * J(:,5))*LTGripWL);
     
     [fmax4, pos4] = max(f4);
   
end


Ich möchte für die Optimierung die Position haben, wie vorher auch schon mein den händisch variirten w.

Danke und Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 31.01.2018, 15:07     Titel:
  Antworten mit Zitat      
Hallo,

für fmincon erhalte ich dieselbe Fehlermeldung.

Code:
Error using fmincon
Too many input arguments.

Error in fmincon (line 12)
fmincon(@costfunction,x0,[],[],Aeq,beq,lb,ub,[],options);


der Code unterscheidet sich nur in folgenden Code:

Code:
function [x1,fval1,exitflag1,output1,lambda1,grad1,hessian1] = fmincon(x0,Aeq,beq,lb,ub)
%% This is an auto generated MATLAB file from Optimization Tool.

%% Start with the default options
options = optimoptions('fmincon');
%% Modify options setting
options = optimoptions(options,'Display', 'iter');
options = optimoptions(options,'FunValCheck', 'off');
options = optimoptions(options,'PlotFcns', {  @optimplotx @optimplotfunccount @optimplotfval @optimplotconstrviolation @optimplotstepsize @optimplotfirstorderopt });
options = optimoptions(options,'Diagnostics', 'off');
[x1,fval1,exitflag1,output1,lambda1,grad1,hessian1] = ...
fmincon(@costfunction,x0,[],[],Aeq,beq,lb,ub,[],options);
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 17.968
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 31.01.2018, 15:23     Titel:
  Antworten mit Zitat      
Hallo,

du solltest deine eigene Funktion nicht fmincon nennen, weil du damit die Standardfunktion fmincon überlagerst.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 83
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 31.01.2018, 15:28     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
http://vieta.math.tu-cottbus.de/~kunath/WiSe201011/Modellierung/Aufgaben/Blatt02/optiMatlabEinf.pdf


leutet ein! Very Happy

aber, bei ga sollte es ja prinzipiell funktionieren.


Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3  Weiter

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 goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 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.