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

Optimierungsproblem

 

HasanK
Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 23.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2008, 12:02     Titel: Optimierungsproblem
  Antworten mit Zitat      
Hallo,
habe folgendes Optimierungsproblem:

als Input habe ich ein Datens [x,y], wobei x z.b im Intervall [0;100] sich bewegt.
Jetzt möchte ich eine Funktion an diesen Datensatz fitten, z.B. f(x, a),
wobei a den Parametersatz darstellt.
Habe hierbei 2 Nebenbedingungen:
1. bei der Extrapolation von x (z.B. über den Intervall [-50; 200]) soll folgendes gelten:
f(xi,a)> f(xj,a), wobei xi>xj
2. g(x,a) > f(x,a) für jedes x (die Funktionen g(x) und f(x) verwenden den selben Parametersatz.

Habe bisher herausgefunden, dass ich dieses Problem mit fmincon lösen könnte, führt leider aber nicht zu meinem gewünschten Ergebnis.
Hoffe dass mir jmd. helfen kann und bedanke ich schon im Voraus.

Gruß,
Hasan
Private Nachricht senden Benutzer-Profile anzeigen


Schrank
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 10.07.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 29.10.2008, 23:34     Titel:
  Antworten mit Zitat      
Hallo HasanK,
ääh, wie wäre es mit polyfit?
mit g(x,a) = f(x,a) +1 ist diese Nebenbedingung leicht zu erfüllen.Oder verschweigst du noch irgendetwas zu g?
Außerdem sind Extrapoleration und Optimierung nicht irgendwie zwei unterschiedliche paar Schuhe?
Gib uns doch mal ein paar Beispieldaten.

Gruß Schrank
Private Nachricht senden Benutzer-Profile anzeigen
 
HasanK
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 23.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2008, 12:33     Titel: Optimierungsproblem
  Antworten mit Zitat      
Hallo Schrank,

ich glaube wenn ich mein Problem auf folgende Weise erkläre ist es verständlicher:

Input: [x,z], x=[0;100], y=1

zu fittende Funktion (nichtlinear): f(x,y,a), wobei a= Parametersatz,

Gültigkeitsbereich: x=[-50;200] und y=[1;10]

Nebenbedingungen für diesen Gültigkeitsbereich:
1. d f(x,y,a) / dx >=0;
2. d f(x,y,a) / dy >=0;

Bitte um Nachsicht, meine Erklärungsweise lässt zu wünschen übrig.
Hoffe aber dass ich mein Problem rüberbringen konnte.

Vielen Dank im Voraus und Gruß
HasanK
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 31.10.2008, 14:44     Titel:
  Antworten mit Zitat      
Hallo HasanK,

ich beschreibe mal, wie ich Dein Problem verstehe:

Du hast Werte x gegeben und dazu gehörende Bildpunkte y = f(x). Die Funktion f ist Dir aber nicht bekannt. Deshalb möchtest Du sie durch ein Modell approximieren. Dieses Modell von f enthält einen Parameter a. Durch die Optimierung möchtest Du den Parameter a bestimmen, der am besten zu Deinen Daten x und y passt. Zusätzlich hast Du zwei Nebenbedingungen, die die Wahl von a einschränken.

Stimmt das so? Teilweise klingt es so, als sei f eine Funktion von zwei Variablen (und einem Parameter). Dann hättest Du Werte x und y und dazu gehörende Bildpunkte z = f(x,y) gegeben.

Insgesamt ist dann fmincon die richtige Wahl. Leichter wäre es, mit den Curve-Fitting-Funktionen zu arbeiten, aber die gestatten keine komplexen Nebenbedingungen. Weitere Schritte sind jetzt:

1. Formulierung der Zielfunktion als Funktion von a (bei festen Daten x, y und eventuell z)
2. Formulierung der Nebenbedingungen als Ungleichung in a
3. Korrekter Aufruf der Funktion fmincon.

Was hast Du denn bereits? Poste doch mal den Code, den Du bisher probiert hast. Nützlich wäre auch eine Beschreibung, inwiefern das Ergebnis vom "gewünschten Ergebnis" abweicht. Gibt es Fehlermeldungen? Oder ist die Approximation nicht gut genug?

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
HasanK
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 23.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2008, 17:01     Titel:
  Antworten mit Zitat      
Hallo Bijick,

ja so ungefähr meine ich es. wie gesagt meine Erklärungsweise ist nicht die beste.

Die Funktion ist bekannt:
und zwar: f(x,y,ai)= a1*(x^2+x^(2*y))+a2*(x+x^(1-y))......
...könnten mehrere Parameter sein mit verschiedenen Ausdrücken in der Klammer.

für für y=1 wird die Funktion an den Input daten gefittet. wobei der Inputbereich kleiner ist als der Gültigkeitsbereich: z.b:
Inputbereich x=[0;100]; Gültigkeitsbereich: x=[-50;200];
Folgende Nebenbedingungen müssen erfüllt werden:
- die Ableitung nach x muss für alle y monoton steigend sein,
- die Ableitung nach y muss für alle x monoton steigend sein.

die Input daten habe ich in der Excel-Datei "E" drin,
und die Klammerausdrücke sind in der Datei "B".
In diesem Beispiel-file sollte es genau die selbe Genauigkeit wie bei der herkömmlichen Regression erreicht werden, da die Beispiel-Nebenbedingungen so weit gewählt sind.
Leider ist es sehr stark von den Startwerten abhängig.

Gruß,
Hasan

Fmincontest3.m
 Beschreibung:

Download
 Dateiname:  Fmincontest3.m
 Dateigröße:  314 Bytes
 Heruntergeladen:  687 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
mb_matlab
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 02.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2008, 20:44     Titel:
  Antworten mit Zitat      
Hallo,

probier doch mal eine Optimierung mit Differentieller Evolution:

http://www.mathworks.com/matlabcentral/fileexchange/18593

Du musst dazu eine Funktion schreiben die einen Parametersatz a entgegennimmt und einen Fehlerwert zurückliefert. Wenn eine deiner Nebenbedinungen verletzt ist sollte die Funktion einen großen Fehlerwert zurückliefern, so dass ein solcher Parametersatz nicht akzeptiert wird.

Ich kann dir bei der Bedienung meines Pakets gerne weiterhelfen.

Gruß
Markus
Private Nachricht senden Benutzer-Profile anzeigen
 
HasanK
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 29
Anmeldedatum: 23.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2008, 17:03     Titel:
  Antworten mit Zitat      
Hi,
habe die Dateien runtergeladen...äähm stehe etwas auf dem schlauch...
Private Nachricht senden Benutzer-Profile anzeigen
 
mb_matlab
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 02.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2008, 00:07     Titel:
  Antworten mit Zitat      
Hast du dir die Demos gut angesehen? Ich gebe zu das Paket ist sehr umfangreich, aber mit den Demos solltest du eigentlich gut reinkommen.

Gruß
Markus
Private Nachricht senden Benutzer-Profile anzeigen
 
Gorbi
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.11.08
Wohnort: ---
Version: 7.8.0 R 2009 a
     Beitrag Verfasst am: 04.11.2008, 17:25     Titel: Iterative Mittelpunktbestimmung
  Antworten mit Zitat      
Hallo, Markus,

Respekt vor Deiner Leistung! Kann ich Deinen Code auch für das folgende Problem verwenden bzw. was müßte ich anders machen:

Ich habe Meßwerte aus einem axialsymmetrischen Phänomen, die in der Form

[y, z, u]

vorliegen, d. h. in einer Tabelle, deren erste beiden Spalten die Koordinaten und die folgende Spalte die Meßwerte enthalten.

Idealerweise würden die Meßwerte konzentrische Isolinien um den Mittelpunkt bilden. In der Realität bilden sie jedoch eine "turbulente Pfütze", deren Rand sich durch z. B. 1% des Mittelwertes definieren läßt.
Von dieser "Pfütze" möchte ich den Mittelpunkt bestimmen, aber ich sehe nur einen Teil davon.
Nun dachte ich mir, ich trage u(r) in einem Diagramm auf, wobei

r² = (y-y0)²+(z-z0)² ist, mit dem gesuchten Mittelpunkt M=(y0, z0).

Die Kurve u(r) kenne ich nicht, aber ich weiß, daß die Meßwerte umso mehr streuen, je schlechter der Mittelpunkt bestimmt ist.
Der Vorteil dieser Auftragung ist, daß die Form der Kurve erhalten bleibt, egal wie groß das "Tortenstück" der Daten/des Meßfeldes ist.

Wäre es möglich, eine Optimierung derart durchzuführen, daß der Nullpunkt iterativ so lange variiert wird, bis die Streuung/Abweichung minimal ist? Dazu brächte ich eine Fitfunktion (Polyfit) der Meßwerte, doch diese hängt ja auch wieder vom Nullpunkt ab! Außerdem weiß ich nicht, welchen Grad das Polynom haben muß...

Hast Du einen Tip für mich oder auch eine ganz andere Idee? Danke im voraus!

Smile

Viele Grüße
Gorbi
Private Nachricht senden Benutzer-Profile anzeigen
 
Gorbi
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.11.08
Wohnort: ---
Version: 7.8.0 R 2009 a
     Beitrag Verfasst am: 05.11.2008, 11:53     Titel:
  Antworten mit Zitat      
Was mache ich falsch, daß nie jemand auf meine Anfragen antwortet? Crying or Very sad
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.