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

Restriktion in Matrixform C.x<=d zu bringen

 

legacys01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2017, 14:38     Titel: Restriktion in Matrixform C.x<=d zu bringen
  Antworten mit Zitat      
Hallo zusammen,

ich versuche ein lineares Optimierungsproblem in Matlab zu lösen. leider bin ich auf ein problem gestoßen, wo ich euere Hilfe benötige.
es geht im Gunde um ein Matrix in der Form (A.x=b):
a_1_1.x_1_1+........+a_1_(_n_-_1_).x_1_(_n_-_1_)+a_1_n.x_1_n=b_1
a_2_1.x_2_1+........+a_2_(_n_-_1_).x_2_(_n_-_1)+a_2_n.x_2_n=b_2
.
.
a_m_1.x_m_1+........+a_m_(_n_-_1_).x_m_(_n_-_1_)+a_m_n.x_m_n=b_m

das Problem liegt in der Umsetzung eine Restriktion hinsichtlich der beiden letzten variablen der obigen Gleichungen:
x_1_(_n_-_1_) .. x_1_n
x_2_(_n_-_1_) .. x_2_n
.
.
x_m_(_n_-_1_) .. x_m_n

die Restriktion regeln den Anstieg bzw. Abstieg der Variabl x(n-1) und xn so:
x_i_(_n_-_1_)-x_i_-_1_(_n_-_1_)<= c
und
x_i_-_1_n-x_i_n <= d

i:index für Zeit.

wie kann ich es hinkriegen, dass die Restriktionen in Form einer untergeordneten Matrix C mit: C.x<=k dargestellt werden??

ich hoffe, dass ich das Problem einigermaßen gut schildern könnte.
bin dankbar für eure Hilfe

Grüße
Legacy


legacys01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2017, 13:22     Titel: Restriktion in Matrixform C.x<=d zu bringen
  Antworten mit Zitat      
mir ist es gelungen ein bisschen Code für das genannte Problem zu schreiben.
Code:

t = ones(N,1);
i=zeros(N,N);

bup1 = 10*t;   %hochfahren für variable x_i_(n-1)zwischen zeit i und i+1 nur mit mengen <= 10 möglich
bdown1=20*t;   %runterfahren für variable x_i_(n-1) zwischen zeit i und i+1 nur mit mengen >=20
bup2 = 30*t;   %hochfahren für variable x_i_(n) zwischen zeit i und i+1 nur mit mengen <= 30 möglich
bdown2=40*t;   %runterfahren für variable x_i_(n)zwischen zeit i und i+1 nur mit mengen <=40

Aup1 = spdiags([t -t],[0 -1],N,N); % x_i_(n-1)-x_(i-1)_(n-1)<= bup1
Aup1=[i i i i Aup1]; % Da die gesamte Matrix A aus 5*N Elemente besteht

Adown1 = spdiags([t -t],[0 1],N,N); % x_(i-1)_n-x_i_n <= bdown1
Adown1 = [i i i i Adown1];

Aup2 = spdiags([t -t],[0 -1],N,N);  % x_i_(n)-x_(i-1)_(n)<= bup2
Aup2=[i i i i Aup2];

Adown2 = spdiags([t -t],[0 1],N,N); % x_(i-1)_n-x_i_n <= bdown2
Adown2 = [i i i i Adown2];

Aup1(1,: )=[]; %initialwerte löschen
bup1(1,: )=[];
Aup2(1,: )=[];
bup2(1,: )=[];

Adown1(end,: )=[]; %letzte werte löschen
bdown1(end,: )=[];
Adown2(end,: )=[];
bdown2(end,: )=[];

A=[Aup2;Aup1;Adown2;Adown1]; %zusammenführen in einer Matrix
b=[bup2;bup1;bdown2;bdown1];
 


nach der Ausführung sind die Ergebnisse für die zweite Nebenbedingung (Aup1 und bdwon1) ok aber nicht für erste NB.

bin für jede Unterstützung Dankbar.

Grüße
Legacys
 
legacys01

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2017, 02:22     Titel: Restriktion in Matrixform C.x<=d zu bringen
  Antworten mit Zitat      
Hallo zusammen,

habe die Lösung gefunden....lag daran dass für die 2 NB die Matrix i und Aup2 vertauscht wurden.
Code:

Aup1=[i i i i Aup1]
 

aber,
Code:

Aup2=[i i i Aup2 i]
 

und nicht
Code:

Aup2=[i i i i Aup2]
 


trotzdem danke an alle Smile
 
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.