|
|
fmincon(Optimierungsproblem) |
|
matel |
Forum-Newbie
|
|
Beiträge: 1
|
|
|
|
Anmeldedatum: 06.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2011, 20:30
Titel: fmincon(Optimierungsproblem)
|
|
|
|
|
Hallo!
ich möchte folgende Polynom mit 4 parameter(x1,x2,x3,x4) optimisieren:
f=1054.4372-351.0852.*x(2)-72.9064.*x(3)+1416.2477.*x(1).^2-349.3091.*x(1).*x(2)+81.2973.*x(1).*x(4)+815.8691.*x(2).^2-1076.9907.*x(1).^3+952.576.*x(1).^2.*x(2)+578.7052.*x(1).*x(2).^2-113.2848.*x(1).*x(3).^2-57.5303.*x(1).*x(3).*x(4)-121.6719.*x(1).*x(4).^2-1131.8391.*x(2).^3+107.4973.*x(2).^2.*x(4)+64.6476.*x(2).*x(3).*x(4)+91.0026.*x(3).*x(4).^2-134.1675.*x(4).^3;
Mit fmincon würde die minimalen Werten von x1,x2,x3 , x4 und den Wert von meinem Polynom in dieser Stelle ermitteln.
Mit folgendem Code
[x,fval] = fmincon(@myfun,x0,)
kann ich zwar diese Werte bestimmen ,wenn x von -inf zu inf lauft.
ich möchte aber diese optimierung nur in folgenden Intervallen machen:
x1=1:1:100;
x2=0.1:0.1:10;
x3=1:10:1000;
x4=1:1:100;
Wie kann ich das strukturieren?
ich habe bis jetzt nicht geschafft und werde sehr dankbar wenn ihr mir behilflich sein könnt.
Danke!
Maty
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.08.2011, 20:54
Titel:
|
|
Hallo,
FMINCON ist nur für Probleme geeignet, bei denen die Variablen kontinuierlich variiert werden dürfen.
In der Praxis behilft man sich oft, indem man FMINCON anwendet und dann die Ergebnisse rundet (und vielleicht die Umgebung "systematisch" absucht).
Beispiele für Alternativen:
- genetische Algorithmen (GA). Da ist allerdings etwas Aufwand nötig.
- brute force (durchprobieren; hier vielleicht eben noch möglich, bei ca. 100 Mio. Funktionsauswertungen)
Grüße,
Harald
|
|
|
eupho |
Forum-Meister
|
|
Beiträge: 777
|
|
|
|
Anmeldedatum: 07.01.09
|
|
|
|
Wohnort: Marburg
|
|
|
|
Version: R2009b
|
|
|
|
|
|
Verfasst am: 08.08.2011, 06:43
Titel:
|
|
fmincon() unterstützt doch über lb und ub Intervalle (siehe Hilfe dazu):
"x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) defines a set of lower and upper bounds on the design variables in x, so that the solution is always in the range lb ≤ x ≤ ub. If no equalities exist, set Aeq = [] and beq = [].
If x(i) is unbounded below, set lb(i) = -Inf, and if x(i) is unbounded above, set ub(i) = Inf."
Danach kannst du die Werte ja auf deine Schrittlängen runden.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|