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

Vektoroptimierung

 

Richi
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 21.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2012, 11:05     Titel: Vektoroptimierung
  Antworten mit Zitat      
Hallo,
Ich habe folgendes Problem.
Ein Vektor L hat 1:n Werte, diese Werte sind abhängig von einem Vektor p der abhängig ist von einem Vektor T1. Nun möchte ich dass der Vektor L in Abhängigkeit von den Werten der Vektoren T1,p optimierten. Hier mal der Code mit einer Schleife zum besseren Verständnis, so hoffe ich.

Code:

L=[3,4,7,10,12,12]*100;
T1=repmat([4 5 6],1,2)  %Startwert T1
p=repmat([1 1 138],1,2) %Startwert p
t=1;6;

for i=1;length(t)
        if T1(1,i)==3
            p(1,i)=1;
            T1(1,i+1)=4;
        end
        if T1(1,i)==4,
            p(1,i)=1;
            T1(1,i+1)=5;
        end
        if T1(1,i)==5
            p(1,i)=138          
            T1(1,i+1)=3
            %oder
            p(1,i)==6;
            T1(1,i+1)=7;
        end
        if T1(1,i)==6
            p(1,i)=1
            TP(1,i)=7
            %oder
            p(1,i)=138
            TP(1,i+1)=4;
        end      
end
 


Die Optimierung soll so entwickelt werden, dass
Code:

n=(Anordnungsmöglichekeiten)
for j=1:n
    L(j)=(L(1,i)(j)-p(1,i)(j))^2
    Sum(L(j))<=sum(L(j-1))
end
 

die Option gewählt wird deren Summe von (L(j)-p(j))^2 minimal ist.
Habe mir schon verschiede Optimierungsfunktionen wie
[]=linprog() ; []=quadprog usw. angeschaut und versucht das Problem mittels diesen Verfahren zu lösen, bin aber auf keine Lösungsmöglichkeit gekommen.

Wäre sehr dankbar für Tipps oder dergleichen, da mir nichts mehr einfällt

Gruß Richi
Private Nachricht senden Benutzer-Profile anzeigen


MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 06.12.2012, 14:40     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe leider nur Bahnhof. Wie soll denn L(1,i)(j) funktionieren, wenn L ein 1:n Vektor ist?

Das ist aber eher das geringste Übel. Kannst du mal bitte grundsätzlich was zu der Aufgabe erzählen. Handelt es sich um eine Reihenfolgeproblem?

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Richi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 21.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2012, 16:17     Titel:
  Antworten mit Zitat      
Ok, das habe ich befürchtet und es tut mir Leid für die schlechte Darstellung.

Ich habe 3 Vektoren (L,p,T1) die alle gleich Lang sind (L=v=T1=1:n*Werte*)
Der Vektor L wird mir übergeben und soll minimiert werden indem p so verschoben wird, dass Sum((L-p)^2) minimal wird.

Dabei muss p aber die Bedingungen erfüllen die ich in die schleife geschrieben habe, also
z.B.: P(1,i)=1 an wenn T1(1,i)=3 oder p(1,i)=138 wenn T1(1,i)=7 usw.

j sollte alle Iterationen angeben (die man berechnen kann), die durchlaufen werden bis sum((L-p)^2) minimal ist.
Hoffe jetzt ein wenig verständlicher.
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 06.12.2012, 17:00     Titel:
  Antworten mit Zitat      
Richi hat Folgendes geschrieben:

Ich habe 3 Vektoren (L,p,T1) die alle gleich Lang sind (L=v=T1=1:n*Werte*)
Der Vektor L wird mir übergeben und soll minimiert werden indem p so verschoben wird, dass Sum((L-p)^2) minimal wird.


Also soll jetzt L oder Sum((L-p)^2) minimiert werden? Wobei zu klären wäre, was L -> min überhaupt heißen soll. Was bedeutet hier p wird verschoben? Ich kann es mir denken, möchte aber nicht raten...

Richi hat Folgendes geschrieben:

Dabei muss p aber die Bedingungen erfüllen die ich in die schleife geschrieben habe, also
z.B.: P(1,i)=1 an wenn T1(1,i)=3 oder p(1,i)=138 wenn T1(1,i)=7 usw.

j sollte alle Iterationen angeben (die man berechnen kann), die durchlaufen werden bis sum((L-p)^2) minimal ist.
Hoffe jetzt ein wenig verständlicher.


OK, es gibt also noch diese Nebenbedingungen. Die müssen natürlich mit eingepflegt werden in das Verfahren.

Ich würde von der Schreibweise p(1,i) wegkommen. p(i) reicht völlig. Das ist aber Geschmackssache, und streiten möchte ich deswegen nicht... Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Richi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 21.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2012, 17:52     Titel:
  Antworten mit Zitat      
ok dann mit (i) Smile
denke anhand eines Beispiels wird es am deutlichsten

L=[300,400,700,1000,1200,1200] %Anfangswert
T1=[4,5,6,4,5,6] %Anfangswert
p1=[1,1,138,1,1,138] %Anfangswert orientiert an T1


%sinkt T1(i+1) muss p(i)=138 sein aber es kann nur in zwischen Zwei Grenzen sinken oder steigen.
Minimiert werden soll die Summe aus (L(i)-p(i))^2

erste Iteration
T1(erste Iteration)=[4,5,6,4,5,3]
p(erste Iteration)=[1,1,138,1,138,1]
summe (L(erste Iteration)-p(erste Iteration)

zweite Iteration
T1(zweite Iteration)=[4,5,6,7,5,6]
p(zweite Iteration)=[1,1,1,138,138,1]
summe(L(erste Iteration)-p(zweite Iteration))=...

usw. Anzahl der Iterationen beträgt 2*3^n mit n=länge(L)/3

Das Minimum aller Summen soll gewählt werden

Und danke für die Geduld
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 07.12.2012, 09:33     Titel:
  Antworten mit Zitat      
Das ist zwar ein konkretes Beispiel, aber dennoch bin ich nicht in der Lage, das von dir angestrebte Verfahren damit zu verallgemeinern. Es wäre gut, wenn du das Problem in einer universellen Sprache beschreiben könntest, nämlich der Mathematik. Siehe hier als Unterstützung: http://www.reiter1.com/Glossar/Kombinatorik.htm
Private Nachricht senden Benutzer-Profile anzeigen
 
Richi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 21.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2012, 11:19     Titel:
  Antworten mit Zitat      
Guten morgen.
Leider konnte/kann ich das Problem nicht so übersetzen das es eine Form der Kombinatorik annimmt.
Ich versuche es nochmal ausführlich und hoffe das es ich Klarheit schaffen kann.

Der Vektor T1 läuft zwischen den Grenzen [3;7] und kann dabei wobei der Anfangszustand
T1=[4,5,6,4,5,6]
und die Kombinationsmöglichkeiten
T1=[4,5,6,4,5,3];T1=[4,5,6,7,5,6];T1=[4,5,6,7,5,3];T1=[4,5,3,4,5,6];T1=[4,5,3,4,5,3]
wir haben 6 Werte, die 5 ist dabei immer fix. D.h. wir haben 3 mögliche Stellen an denen wir den Vektor ändern können um 2 Werte.

Daher haben wir:
2(Werte um den der Vektor geändert werden kann)*3(Positionen an denen die Werte geändert werden können)^1.
Bei einer Länge von T1=9 wären es 2*3^2 Kombinationsmöglichkeiten.

Nun Orientiert sich der P-Vektor an den Einträgen des T1 Vektors nach obigen Schema.

Als letzten Schritt wird nun für jede Kombinationsmöglichkeit von T1 und damit P
die Summe von (L(i)-P(i))^2 gebildet und optimiert

Gruß
Richi
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 09.12.2012, 20:50     Titel:
  Antworten mit Zitat      
Hallo Richi,

Richi hat Folgendes geschrieben:

Der Vektor T1 läuft zwischen den Grenzen [3;7] ...

Was bedeutet das? Dass die Komponenten des Vektors den Wert k=3,...,7 annehmen können?

Richi hat Folgendes geschrieben:

...und kann dabei wobei der Anfangszustand
T1=[4,5,6,4,5,6]
und die Kombinationsmöglichkeiten
T1=[4,5,6,4,5,3];T1=[4,5,6,7,5,6];T1=[4,5,6,7,5,3];T1=[4,5,3,4,5,6];T1=[4,5,3,4,5,3]
wir haben 6 Werte, die 5 ist dabei immer fix. D.h. wir haben 3 mögliche Stellen an denen wir den Vektor ändern können um 2 Werte.

Wenn Komponenten mit dem Wert 5 aus dem Anfangszustand T1=[4,5,6,4,5,6] fix sind, betrifft das zwei Werte, nämlich Position 2 und 5. Dann bleiben aber 4 Positionen, an denen der Vektor variiert werden kann. Du sprichst aber von 3 Positionen. Aus deinem Beispiel entnehme ich, dass die erste Position ebenfalls fix ist. Ist das der Fall?
Dann schreibst du, dass es 2 Werte gibt, welche die Komponenten annehmen können. Gibt es dazu eine bestimmte Regel?

Richi hat Folgendes geschrieben:

Daher haben wir:
2(Werte um den der Vektor geändert werden kann)*3(Positionen an denen die Werte geändert werden können)^1.
Bei einer Länge von T1=9 wären es 2*3^2 Kombinationsmöglichkeiten.

Wie kommst du auf 2*3^2 Kombinationsmöglichkeiten? Das hieße ja, dass Positionen variiert werden können?!

Richi hat Folgendes geschrieben:

Nun Orientiert sich der P-Vektor an den Einträgen des T1 Vektors nach obigen Schema.

Als letzten Schritt wird nun für jede Kombinationsmöglichkeit von T1 und damit P
die Summe von (L(i)-P(i))^2 gebildet und optimiert

OK, das ist, denke ich, soweit klar...

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Richi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 21.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2012, 10:35     Titel:
  Antworten mit Zitat      
Hallo Marc

Zitat:
Der Vektor T1 läuft zwischen den Grenzen [3;7] ...

Was bedeutet das? Dass die Komponenten des Vektors den Wert k=3,...,7 annehmen können?


Genau, der Vektor T1 kann die Grenzen (3,4,5,6,7) annehmen.

Zitat:
Wenn Komponenten mit dem Wert 5 aus dem Anfangszustand T1=[4,5,6,4,5,6] fix sind, betrifft das zwei Werte, nämlich Position 2 und 5. Dann bleiben aber 4 Positionen, an denen der Vektor variiert werden kann. Du sprichst aber von 3 Positionen. Aus deinem Beispiel entnehme ich, dass die erste Position ebenfalls fix ist. Ist das der Fall?


Bei diesem Beispiel richtig, hier ist die erste stelle ebenfalls fix. Ein Mögliches Beispiel in dem das nicht gegeben wäre wenn der Vektor T1 den Anfangszustand T1=[5,6,4,5,6,4] hat.

Zitat:
Dann schreibst du, dass es 2 Werte gibt, welche die Komponenten annehmen können. Gibt es dazu eine bestimmte Regel?


Ja die Regel hatte ich in die Schleife geschrieben, in meinem ersten Beitrag.
Wenn T1(i)== 3,4 -->P(i)=1 und T(i+1)=T(i)+1;
Wenn T1(i)== 5,6 --> P(i)=1 dann T(i+1)=T(i)+1 oder P(i)=138 dann T(i+a)=T(i)-2
Wenn T1(i)=7--> P(i)=138 und T(i+1)=T(i)-2

Also die Kombinationsmöglichkeiten ergeben sich so, wenn ich mehrere Beispiele durchrechne.

Gruß Richi
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 10.12.2012, 14:53     Titel:
  Antworten mit Zitat      
OK! Jetzt hatte ich wohl die "Erleuchtung"... Nehmen wir an, der Vektor T1 habe die Länge n, dann gibt es n-3 (wegen T1(i+1) und T1(i-2)) Positionen, die variiert werden können. Insgesamt gibt es 5 verschiedene Werte zwischen 3 und 7 und somit, als obere Schranke, 5^(n-3) verschiedene Variationen.

Das bedeutet also, dass du zunächst die Bedingungen anpassen musst wegen des Randes:

Wenn T1(i)== 3,4 und i<n -->P(i)=1 und T(i+1)=T(i)+1;
Wenn T1(i)== 5,6 und i<n --> P(i)=1 dann T(i+1)=T(i)+1 oder P(i)=138 dann T(i+1)=T(i)-2
Wenn T1(i)=7 und i>2--> P(i)=138 und T(i+1)=T(i)-2

Nun geht es um das Optimierungsverfahren. Sowas wie linprog usw. macht hier keinen Sinn. Man muss schlicht vollständig Enumerieren.
D.h. du verwendest eine Schleife, die ausgehend von der Startlösung 5^(n-3) Variationen untersucht. Allerdings sollte man eine geschickte Abbruchbedingung implementieren. Wenn nämlich die Startlösung im Laufe der Iteration erneut auftaucht, kann man abbrechen. Ich vermute, dass das Verfahren Fixpunkte hat.

Grüße, Marc
Private Nachricht senden Benutzer-Profile anzeigen
 
Richi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 21.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2012, 17:20     Titel:
  Antworten mit Zitat      
Also als mögliche Kombinationsmöglichkeiten habe 2*3^(n) mit n=erhöht um 1 je weiterer 3 variablen.
Bsp:
Bei t=[1,2,3];
T1(1)=[4,5,6];P1(1)=[1,1,138] und
T1(2)=[4,5,3];P1(2)=[1,138,1]

hier also eine änderbare Stelle mit 2 Kombinationen. 2*3^(0)=1

Bei t=[1,2,3,4,5,6];
T1(1)=[4,5,6,4,5,6];P1(1)=[1,1,138,1,1,138];
T1(2)=[4,5,6,4,5,3];P1(2)=[1,1,138,1,138,1];
...
T1(6)=[4,5,3,4,5,3];P1(6)=[1,138,1,1,138,1]

hier also 3 änderbare Stellen mit jeweils 2 kombinantionen. 2*3^(1)=6.
Und bei t=[1,2,3,4,5,7,8,9]--> Kombinationsmöglichkeiten 2*3^(2)=18

Zitat:
Nun geht es um das Optimierungsverfahren. Sowas wie linprog usw. macht hier keinen Sinn. Man muss schlicht vollständig Enumerieren.
D.h. du verwendest eine Schleife, die ausgehend von der Startlösung 5^(n-3) Variationen untersucht


Genau das war mein Problem, dass Einbinden einer Schleife die alle Kombinationen durchläuft und mir dann die optimale Lösung angibt. Die Bedingungen sind dabei in der inneren Schleife abgebildet.

Für eine einen vektor mit t=1:9
Code:

for j=1:(2*3^2)
    for i=1:length(L)
        opt(j)=sum(L-p)^2;
            if T(1,i)== 3
                p(1,i)=1;
                T(1,i+1)=T(1,i)+TW;
            end
            if T(1,i)== 4
                p(1,i)=1;
                T(1,i+1)=T(1,i)+TW;
            end
            if T(1,i)== 5
                p(1,i)=1;
                T(1,i+1)=T(1,i)+TW;
            end
            if T(1,i)== 6
                p(1,i)=1;
                T(1,i+1)=T(1,i)+TW;
            end
            if T(1,i)== 5
                p(1,i)=138;
                T(1,i+1)=T(1,i)+TK;
            end
            if T(1,i)== 6
                p(1,i)=138;
                T(1,i+1)=T(1,i)+TK;
            end
            if T(1,i)== 7
                p(1,i)=138;
                T(1,i+1)=T(1,i)+TK;
            end
    end
end
 


Das ist genau der Punkt bei dem es bei mir hakt.

Gruß Richi
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 10.12.2012, 17:45     Titel:
  Antworten mit Zitat      
Was die Anzahl der Kombinationsmöglichkeiten betrifft, habe ich eine obere Schranke verwendet, weil ich ich schlicht zu faul war, die genaue Anzahl zu ermitteln.

Allerdings habe ich noch einen Schnitzer in meinen Vorschlägen, denn der Fall, dass von i zwei abgezogen wird, kommt ja gar nicht vor!

OK, und warum funktioniert der zuletzt angegebene Code nicht?
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 11.12.2012, 11:06     Titel:
  Antworten mit Zitat      
Bei deinem Ansatz fehlt natürlich noch die eigentliche Iteration. Wenn du aus dem Startvektor T1_0 ein T1_1 berechnest, führst du die gleiche Rechnung mit T1_1 aus und erhältst ein T1_2 usw.
Private Nachricht senden Benutzer-Profile anzeigen
 
Richi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 21.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2012, 13:59     Titel:
  Antworten mit Zitat      
Hallo Marc.

Danke nochmal für die tatkräftige Unterstützung und deine Geduld.
Mit deinem Ansatz funktioniert es.

Gruß Ricardo.
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.