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

Lineare Optimierung - interne Variable für Nebenbedingung

 

Demian
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2009, 14:54     Titel: Lineare Optimierung - interne Variable für Nebenbedingung
  Antworten mit Zitat      
Hallo,
ich habe folgendes Problem:
Matlab verlangt für die lineare Optimierung folgende Form der Nebenbedingung:
[A]* (x) <= (b) , wobei x: Entscheidungsvariable der Zielfunktion, b: Restriktion ist

Ist es möglich, interne Variablen zu definieren, die nur einen Teil der Zielfunktionsvariablen enthalten?
Bsp.: [A] * (xa;xb) <= (b) mit Zielfunktionsvariablen (x1,...x6)
und xa= x1+x2+x3 und xb=x4+x5+x6 ?

Danke und Gruß
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: 16.02.2009, 15:44     Titel:
  Antworten mit Zitat      
Hallo Demian,

ja, das ist gewiss möglich. Schreib mal die genauen Nebenbedingungen, die Du modellieren möchtest, dann bringen wir das zusammen in Matlab-Notation.

Herzliche Grüße
Bijick
_________________

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2009, 18:32     Titel:
  Antworten mit Zitat      
Hi,danke für die schnelle Antwort.

Also die Zielfunktion lautet:
f=c1*x1+c2*x2 + c3*x3 + c4*x4 .... mit x als Entscheidungsvariable

nun muss die Nebenbedingung der Form A * x >= b sein,
wobei die Elemente von
A =
[ A11, A12
A21, A22]

Die Nebenbedingungen in ausgeschriebener Form:
A11 * (x1+x2) + A12 * (x3+x4) <= b1
A21 * (x1+x2) + A22 * (x3+x4) <= b2

Ist es verständlich, was ich meine? Ich will eine innere Verrechnung der Entscheidungsvariablen über eine Variable oder ähnliches.

dank dir!
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: 16.02.2009, 18:44     Titel:
  Antworten mit Zitat      
Hallo Demian,

wie wäre es mit:

Code:
A = [A11 A11 A12 A12;
     A21 A21 A22 A22];

b = [b1;b2];


Dann entspricht A*x <= b genau Deinen Nebenbedingungen.

Herzliche Grüße
Bijick

P.S. A*x >= b erreicht man mittles -A*x <= -b, falls das nicht nur ein Tippfehler in Deinem Beitrag war.
_________________

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2009, 18:49     Titel:
  Antworten mit Zitat      
Hallo Bijick,
die Möglichkeit hatte ich mir überlegt. Da Grundmatrix A recht groß ist und eine Menge an Entscheidungsvariablen vorliegen, wird die Matrix dann gewaltig groß und unüberschaubar.
Siehst du da eine andere Lösung?
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: 16.02.2009, 19:17     Titel:
  Antworten mit Zitat      
Hallo Demian,

in der linearen Optimierung sind die Werkzeuge sehr mächtig, wenn man Ihnen die stark standardisierten Probleme in der Form übergibt, wie sie erwartet werden. Wenn man am Format herumtrickst, verschlechtert sich die Performance immer eklatant. Für die Komplexität des Programms ist eine Zusammenlegung der Variablen "unüberschaubarer" als die Vergrößerung der Matrix, da sie nur von der Variablenzahl und der Zahl der Nebenbedingungen abhängt.

Wenn es nur um die Übersichtlichkeit im Code geht, kann man sicher mit
Code:

für eine Vereinfachung sorgen.

Herzliche Grüße
Bijick
_________________

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2009, 19:26     Titel:
  Antworten mit Zitat      
mmm, hat Matlab irgendwelche Grenzen, was die Größe der Matrix in der Nebenbedingung angeht?
Ich habe mein Problem nun grob überschlagen und aus der [364x54]-Matrix würde eine [364x 20.000]-Matrix werden.
Ich will ja nichts anderes, als beispielsweise die Summe der ersten 20 Entscheidungsvariablen nehmen und mit der ersten Spalte der Matrix multiplizieren, dann mit die nächsten 20 mit der 2. Spalte, usw.

Kenne mich mit Matlab nicht allzusehr aus, so dass ich letztendlich deinen Vorschlag übernehmen muss, es seid denn, es existiert noch eine einfachere Lösung

Viele Grüße,
Demian
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: 16.02.2009, 20:24     Titel:
  Antworten mit Zitat      
Hallo Demian,

Eine Idee ist mir noch gekommen. Du könntest Schlupfvariablen y einführen, für die dann gelten muss:

x1 + x2 + ... + x20 - y1 = 0
x21 + x22 + ... + x40 - y2 = 0
usw.

und

A11*y1 + A12*y2 + ... <= b1

Damit hättest Du Deine 54 Ungleichungsrestriktionen, aber zusätzlich eben die ganzen Gleichheitsrestriktionen und nochmal zusätzliche Variablen. Je nach Dimension kann das sinnvoll sein. Die y müssen dann auch in die Zielfunktion mit Koeffizient Null.

Hilft Dir das weiter? Hat allerdings nichts mit Matlab zu tun, sondern ändert die mathematische Problemformulierung.

Herzliche Grüße
Bijick
_________________

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

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.02.2009, 20:35     Titel:
  Antworten mit Zitat      
Vielen Dank, du hast recht! Das ist eine rein mathematische Formulierung! Ich werde es mal ausprobieren!

Danke nochmal
Private Nachricht senden Benutzer-Profile anzeigen
 
Demian
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 16.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.02.2009, 11:17     Titel:
  Antworten mit Zitat      
Supi!
Hat funktioniert! Vielen Dank!
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.