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 fmincon/fminsearch

 

Matse1878
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 03.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2020, 17:10     Titel: Optimierung mit fmincon/fminsearch
  Antworten mit Zitat      
Hallo zusammen,

nach langer Zeit hätte ich mal wieder eine Frage.
Ich möchte eine Optimierung durchführen. Dazu habe ich zwei Vektoren mit Kaffee und Arbeitseinheiten erstellt. Dadurch möchte eine optimale Gerade durchlegen und ohne den Befehl polyfit zu nutzen. Arbeitseinheiten sind dabei mein Eingang und Kaffee mein Ausgang. Der Fehler liegt irgendwo bei der Matrizen Schreibweise, aber ich finde ihn nicht. Könnt ihr mir wohl helfen?

Code:

kaffee = [1 4 8 30 40 65];
Arbeitseinheiten = [1 3 4 8 9 10];

figure,plot(Arbeitseinheiten,kaffee,'o'),ylabel Kaffee,xlabel Arbeitseinheiten
 
kostenfunktion = @(m,b) sum((kaffee - (m*Arbeitseinheiten+b))^2);

x0 = [0,0];
fminsearch(kostenfunktion,x0)

p = polyfit(Arbeitseinheiten,kaffee,2);
x1 = linspace(0,60);
y1 = polyval(p,x1);
figure,plot(x1,y1), hold all, plot(Arbeitseinheiten,kaffee,'o'),ylabel Kaffee,xlabel Arbeitseinheiten


Danke Danke Danke Smile

viele Grüße

Matthias

Unbenannt2.PNG
 Beschreibung:

Download
 Dateiname:  Unbenannt2.PNG
 Dateigröße:  11.95 KB
 Heruntergeladen:  174 mal
Unbenannt.PNG
 Beschreibung:
Fehlermeldung

Download
 Dateiname:  Unbenannt.PNG
 Dateigröße:  14.51 KB
 Heruntergeladen:  176 mal


Zuletzt bearbeitet von Matse1878 am 20.03.2020, 17:45, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

woraus schließt du denn, dass es einen Fehler gibt?
Wenn du eine Fehlermeldung bekommst, kopiere sie bitte. Das bitte bei jeder Frage :).

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Matse1878
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 03.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2020, 17:44     Titel:
  Antworten mit Zitat      
danke Harald.
Fehler wurde angehängt Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

fminsearch benötigt eine Funktion, die mit einem Input aufgerufen werden kann.

Code:
kostenfunktion = @(x) sum((kaffee - (x(1)*Arbeitseinheiten+x(2)))^2);


Ansätze wie polyfit, lsqlin, lsqcurvefit wären für dieses Problem aber (in dieser Reihenfolge) besser geeignet.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Matse1878
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 03.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2020, 08:25     Titel:
  Antworten mit Zitat      
Morgen Harald,

polyfit müsste doch auf solch eine Funktion wie fmincon/fminsearch basieren oder? Letztenendes macht polyfit über einen eigen gesuchten Solver nichts anderes als die Kostenfunktion zu minimieren oder?
Ich wollte polyfit mit meinem eigenen Verständnis nachprogrammieren.

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

Forum-Meister


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

du kannst dir polyfit ansehen.
Code:


Das stellt "nur" ein lineares Gleichungssystem auf und löst es. Dahinter ist zwar auch ein iterativer Algorithmus, aber ein deutlich einfacherer.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 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.