Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Fachkräfte:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Lineare Programmierung Summen

 

Izlop
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 27.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.12.2018, 15:52     Titel: Lineare Programmierung Summen
  Antworten mit Zitat      
Hallo zusammen,

ich versuche gerade für meine Masterarbeit ein lineares Problem zu lösen. Die Berechnung der Lösung werde ich über den CplexSolver machen.
Mein Problem ist die Handhabung von Summen in Matlab bei der lineare Programmierung. Die Beispiel die ich bezüglich der Linearen Programmierung für Matlab gefunden habe sind alle ohne Summen. z.B.:

obj function: 2x+3y (min)
4x + 2 y >= 10
Therefore I would write in matlab:
f = [2; 3];
A = [4 2];rybody,
b=10;
[x,z,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub);
Das Problem ist nicht komplett dargestellt. Ich wollte nur zeigen, wie ich f bei einer normalen linearen Optimierung darstelle.
Ich weiß allerdings nicht, wie ich f bei Summen in der Zielfunktion verändern muss.
Zum Beispiel kann die Zielfunktion wie folgt sein: sum(i)(sum(j)(pi*xij))
Das bedeutet, dass sich p für unterschiedliche i verändert. x ändert seine Werte sowohl für i als auch j.
Wie bringe ich diese Summen allerdings in die objective function f von Matlab?
Ansatz:
es gibt 3 verschiedene i
p=[ 10 13 14]
f=[p(i) ] Ist das richtig?
Woher weiß Matlab aber dann, dass x seine Werte für j und i verändert?
Ich würde mich über jede Hilfe sehr freuen.
Ich hänge das komplette Beispiel mit den Summen im Anhang bei. 

Beispiel_Summen.JPG
 Beschreibung:

Download
 Dateiname:  Beispiel_Summen.JPG
 Dateigröße:  44.27 KB
 Heruntergeladen:  5 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 19.278
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 04.12.2018, 19:30     Titel:
  Antworten mit Zitat      
Hallo,

du hast im Grunde eine Matrix x. Daraus musst du einen Vektor x machen, z.B. indem du die Spalten untereinander hängst. Dann wird aus der Doppelsumme eine und f ein Vektor mit Wiederholungen der Elemente in p.

Grüße,
Harald 
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Izlop
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 27.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.12.2018, 20:20     Titel:
  Antworten mit Zitat      
Hallo nochmal,

Ich habe es versucht umzusetzen, aber leider funktioniert es nicht. Ich weiß ehrlich gesagt auch nicht, wie ich Summen in Vektoren umwandeln soll? Ich habe es mit einer for schleife versucht aber es geht nicht.
Ich lade mein Model sowie die Angaben hoch. Kann mir bitte jmd sagen, was ich falsch mache? 

Werte.JPG
 Beschreibung:

Download
 Dateiname:  Werte.JPG
 Dateigröße:  25.09 KB
 Heruntergeladen:  5 mal
Beispiel_Summen.JPG
 Beschreibung:

Download
 Dateiname:  Beispiel_Summen.JPG
 Dateigröße:  44.51 KB
 Heruntergeladen:  5 mal
LineareProgrammierung.m
 Beschreibung:

Download
 Dateiname:  LineareProgrammierung.m
 Dateigröße:  585 Bytes
 Heruntergeladen:  5 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 19.278
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 04.12.2018, 21:27     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich das richtig sehe: viel zu kompliziert.
Laut erstem Anhang: x ist 4x3, p entsprechend 4x1. Wenn du y formst, indem du die Spalten von x untereinanderhängst, dann hängst du auch p dreimal untereinander (weil 3 Spalten), also
Code:

Das sollte es eigentlich schon sein.

Grüße,
Harald 
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Izlop
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 27.10.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.12.2018, 21:50     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für deine Antworten soweit.

Ich habe das Modell komplett gleichgelassen und f nach deinen Vorgaben eingesetzt.
f = repmat(p, 3, 1);

Ich erhalte folgende Fehlermeldung:
Error using linprog (line 234)
The number of columns in A must be the same as the number of
elements of f.

Aber ich kann A ja nicht 12 spaltig machen.
Ist denn meine Vorgehensweise mit den Forschleifen richtig? 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 19.278
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 04.12.2018, 22:47     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Aber ich kann A ja nicht 12 spaltig machen.

Sicher kannst du. Du musst es sogar. Jede Spalte ist der Beitrag eines Elements der Matrix zur Gleichung.

Zitat:
Ist denn meine Vorgehensweise mit den Forschleifen richtig?

Ich blicke da offen gesagt nicht durch, was du mit all dem bezweckst.

Grüße,
Harald 
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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
.



goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.