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 eines Algorithmuses

 

KeCa11
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.06.2014, 10:28     Titel: Optimierung eines Algorithmuses
  Antworten mit Zitat      
Kann mir niemand bei meinem Problem helfen??

ich habe letztens einen Post gemacht, aber es kam leider kein Feedback..Ich bin sehr aufgeschmissen...egal wie viel ich ich lese und versuche, es kommt nichts richtiges raus.

Ich hoffe immer noch auf eine hilfe euerseits..
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.06.2014, 23:03     Titel: Re: Optimierung eines Algorithmuses
  Antworten mit Zitat      
Hallo KeCa11,

Wenn Du inzwischen einiges versucht hast, wäre es eine gute Idee diese erfolglosen Versuche in dem bestehenden Thread zu erklären. Es motiviert immer sehr, wenn man sieht, dass der Fragensteller selbst an seinem Problem arbeitet und nicht einfach wartet.

Erwartest Du, dass sich die Leser jetzt auf die Suche nach Deinem anderen Thread machen?

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
KeCa11
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2014, 07:56     Titel:
  Antworten mit Zitat      
Hallo Jan,

Mein Ziel ist es, eine kraft von einem Bauteil zu erzielen, welches nah an der geforderten Kraft liegt. Dieses Bauteil (Blechstreifen) liegt in einem definierten Wertebereich für die Dicke und Breite. Außerdem sind Restriktionen wie z.B. das nichtlineare Materialverhalten, die zulässige Spannung und die konstante Masse bzw. konstanter Querschnitt gegeben. Weiterhin sind Nebenbedingungen wie eine minimale bzw. maximale Schranke der Breiten und Dicken angegeben.
Ich habe die 2 Variablen Breite b und Dicke t.

Ich habe schon ein m-File geschrieben, welches mir eine Matrix für die Strapkraft mit den jeweiligen Kräften und der Bereich für die geforderte Kraft erstellt hat, aber dennoch muss ich alles selber ablesen. Dieses will ich nun mit einem Algorithmus umgehen und möchte, dass dieser mir genau am Ende angibt, welche optimalen geometrischen Parameter und die dazugehörige Strapkraft ist. Außerdem soll er mir die Konvergenz, also die genaue Differenz zwischen der geforderten und der tatsächlichen Kraft auf die definierte Genauigkeit angeben.
Meine Frage nun an euch ist, wie ich für das aufgeführte Beispiel das Ganze in Matlab programmieren kann und wie ich das Ganze in der Optimization-Toolbox anwende.
Für die Verwendung der Optimization Toolbox benötige ich ja 2 m-files. Eines/mehrere Zielfunktionen als 1 m-file und eines für die Nebenbedingungen/Restriktionen.

Ich habe mich über verschiedene Verfahren erkundigt und bin zu dem Entschluss gekommen, dass sich das SQP-Verfahren am besten für meinen Fall eignet. Aber dennoch bin ich für anderes offen, da ich ja nicht genau weis welches wirklich besser passt.


Im Anhang findet ihr mein m-file. Ist zwar sehr simpel aufgebaut, aber es zeigt mir alle Breiten und Dicken mit den jeweiligen Kräften an...Das dumme ist, dass ich alles selber ablesen muss...

Ich wäre euch sehr dankbar wenn ihr mir helfen könntet wie die Zielfunktion und die Nebenbedingungen/Restriktionen aussehen müssen.


Code:
%%Vorgehensweise für die Berechnung der Strapkraft
% Darstellung in einer Matrix

%%  ---------Dicke t (als Zeilenvektor)--------------
tj = linspace(1,2);

%% ---------Breite b (als Spaltenvektor)-----------------
bi = linspace(10,20);          

%% -----------Koordinatenanzeige in Matrixschreibweise----------------
[TJ,BI] = meshgrid(tj,bi);
%% ---------Berechnung des Korrekturfaktors als eine Matrix------------
for i = 1:length(bi)
    for j = 1:length(tj)
        Korrekturfaktor(i,j) = (0.5+0.3333*tj(j))+(0.05*bi(i));
    end
end
%% ---------Berechnung der Strapkraft als eine Matrix------------
for i = 1:length(bi)
    for j = 1:length(tj)
        Fstrap(i,j) = ((Korrekturfaktor(i,j)*470*((bi(i)*tj(j).^3)/12))/(7.5*(tj(j)/2))*2);
    end
end

%% ----------------Werte aus Matrix filtern-----------
Fstrap_neu=Fstrap;
Fstrap_neu(Fstrap_neu<=1550)=0;     %mindest zulässige Kraft
Fstrap_neu(Fstrap_neu>1650)=0 ;     %maximal zulässige Kraft
%% ---------------Erstellung von Vektoren für das Ablesen der jeweiligen Ergebnissen-----------
k = 1;
I = [];
J = [];
for i = 1:100
    for j = 1:100
        if Fstrap(i,j)>1550 && Fstrap(i,j)<1650; %Bereich für die Kraft
            I(k) = i;   %Erstellen der Breiten-Werte als Vektor die im Bereich liegen
            J(k) = j;   %Erstellen der Dicken-Werte als Vektor die im Bereich liegen
            k = k+1;    %immer +1 damit man bis zur gewählten Länge berechnen kann
        end
    end
end
%% --------%Strapkraft-Matrix als Oberflächendiagramm anzeigen------
figure;
surf(tj,bi,Fstrap,Fstrap_neu);%durch das Fstrap_neu wird die Fläche anders angezeigt

% Achsen- und Titelbeschriftung
title('Oberflächendiagramm Strapkraft','FontSize',14);
xlabel('Dicke t','FontSize',12);
ylabel('Breite b','FontSize',12);  
zlabel('Kraft','FontSize',12);
colormap spring                %farbliche Darstellung des Diagramms
colormap jet

%% --------%Korrekturfaktor-Matrix als Oberflächendiagramm anzeigen------
figure;
surf(tj,bi,Korrekturfaktor);
% Achsen- und Titelbeschriftung
title('Oberflächendiagramm Korrekturfaktor','FontSize',14);
xlabel('Dicke t','FontSize',12);
ylabel('Breite b','FontSize',12);  
zlabel('Korrekturfaktor C','FontSize',12);
colormap winter               %farbliche Darstellung des Diagramms
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 16.06.2014, 09:33     Titel:
  Antworten mit Zitat      
Was liest du denn ab? Wo?
mal ins Blaue:
Code:

_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
KeCa11
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2014, 09:42     Titel:
  Antworten mit Zitat      
Hallo Andy386,

es gibt ja einen Bereich von der geforderten Kraft die ich erreichen soll..dazu habe ich folgendes geschrieben

Code:
%% ----------------Werte aus Matrix filtern-----------
Fstrap_neu=Fstrap;
Fstrap_neu(Fstrap_neu<=1550)=0;     %mindest zulässige Kraft
Fstrap_neu(Fstrap_neu>1650)=0 ;     %maximal zulässige Kraft
%% ---------------Erstellung von Vektoren für das Ablesen der jeweiligen Ergebnissen-----------
k = 1;
I = [];
J = [];
for i = 1:100
    for j = 1:100
        if Fstrap(i,j)>1550 && Fstrap(i,j)<1650; %Bereich für die Kraft
            I(k) = i;   %Erstellen der Breiten-Werte als Vektor die im Bereich liegen
            J(k) = j;   %Erstellen der Dicken-Werte als Vektor die im Bereich liegen
            k = k+1;    %immer +1 damit man bis zur gewählten Länge berechnen kann
        end
    end
end


dadurch bekomme ich I und J als Vektor raus..diese sind die Werte mit dene ich dann in den Vektor von der Breite bzw. Dicke reingehe und diese dann ablese...dazu kann ich dann in der Matrix von der Strapkraft FStrap den Wert auch ablesen...

Ich weis es ist jetzt für dich bestimmt ein bisschen unverständlich beschrieben.

Wenn ich solve eingebe im command window kommt folgender Fehler

Code:
Trial>> solve
License checkout failed.
License Manager Error -5
Cannot find a license for symbolic_toolbox.
Error using symengine (line 18)
Could not check out Symbolic Math Toolbox license.

Error in solve (line 158)
eng = symengine;
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 16.06.2014, 10:21     Titel:
  Antworten mit Zitat      
Steht doch da!

"Could not check out Symbolic Math Toolbox license. "

Hast du die symbolic math toolbox? Wenn nein, kauf sie dir oder schreibe deine eigene solve funktion.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin
Admin

Admin



Beiträge: 652
Anmeldedatum: 16.06.07
Wohnort: Bietigheim-Bissingen
Version: ---
     Beitrag Verfasst am: 17.06.2014, 09:37     Titel:
  Antworten mit Zitat      
Hallo KeCa11 und Andy386,

ich habe gerade zwei Beiträge von Euch gelöscht, welche verbal nicht mit den Nutzungsbedingungen von goMatlab.de zusammenpassen.

Bitte schaltet ihr Beide einen Gang in der Wortwahl zurück.
Das Forum ist für seinen guten Umgangston bekannt und jeder hat mal einen schlechten Tag.

Bei weiteren Entgleisungen werde ich diesen Beitrag schließen!

Viele Grüße und Danke für Euer Verständnis...
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

meine Empfehlung wäre, das mit fmincon anzugehen.
Zu minimieren ist der Unterschied zwischen geforderter Kraft und erzielter Kraft (--> Objective Function). Alle anderen Restriktionen müssen als Nebenbedingungen umgesetzt werden.

Verwenden würde ich hier fmincon (Optimization Toolbox).

Sollte diese Toolbox nicht vorhanden sein, ist eine Alternative fminsearch. Dabei können Nebenbedingungen als Strafterme für die Zielfunktion Berücksichtigung finden.

Die Umsetzung ist so oder so eine gewisse Herausforderung, also bitte die Beispiele in der Doku sorgfältig durcharbeiten und auch mal das Forum nach fmincon durchstöbern - ich habe hierzu schon viele Fragen beantwortet.

Zum Thema "Kaufen vs. selbst schreiben":
Es ist generell natürlich möglich, sich alles an Toolbox-Funktionalität selbst zu schreiben. Das bedeutet jedoch teilweise einen beträchtlichen Aufwand. Ich würde z.B. nie auf die Idee kommen, eine Funktion SOLVE selbst zu schreiben.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 24.04.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2014, 14:58     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Hilfe, inzwischen habe ich mich auch schlau gemacht, und bin auch der Meinung das ich fmincon benutzen werde.

Ich habe bei der Arbeit die Lizenz für das Curve Fitting und Optimization Toolbox, also kann ich es damit lösen.

Harald ich bin dir vorerst sehr dankbar das du dich kompetent geäußert hast und mir helfen willst mein Problem zu lösen.
Ich habe zwar einiges zu fmincon hier im forum gelesen, aber bin der Meinung, dass es auf mein problem nicht ganz zutrifft, da ich eine schwierigere Aufgabenstellung habe.

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

Forum-Meister


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

die Schwierigkeit liegt meist in der Komplexität der Zielfunktion und der nichtlinearen Nebenbedingungen. Für fmincon ist das aber relativ egal, solange das Interface der Funktion passt.

Mein Vorschlag also:
Versuchs mal mit fmincon, stelle insbesondere die benötigten Eingabeargumente für fmincon zusammen.

Wenn es dabei dann Probleme gibt, schaue ich gerne noch einmal drauf. Dazu dann bitte den bisherigen Code inkl. eventueller Testdaten zur Verfügung stellen.

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.