|
|
Lineare Programmierung Summen |
|
Izlop |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 27.10.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.12.2018, 15:52
Titel: Lineare Programmierung Summen
|
|
|
|
|
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.
Beschreibung: |
|
Download |
Dateiname: |
Beispiel_Summen.JPG |
Dateigröße: |
44.27 KB |
Heruntergeladen: |
249 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 04.12.2018, 19:30
Titel:
|
|
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 ;)
|
|
|
Izlop |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 27.10.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.12.2018, 20:20
Titel:
|
|
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?
Beschreibung: |
|
Download |
Dateiname: |
Werte.JPG |
Dateigröße: |
25.09 KB |
Heruntergeladen: |
259 mal |
Beschreibung: |
|
Download |
Dateiname: |
Beispiel_Summen.JPG |
Dateigröße: |
44.51 KB |
Heruntergeladen: |
255 mal |
Beschreibung: |
|
Download |
Dateiname: |
LineareProgrammierung.m |
Dateigröße: |
585 Bytes |
Heruntergeladen: |
256 mal |
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 04.12.2018, 21:27
Titel:
|
|
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
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 ;)
|
|
|
Izlop |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 27.10.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.12.2018, 21:50
Titel:
|
|
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?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 04.12.2018, 22:47
Titel:
|
|
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 ;)
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|