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

Optimierungsproblem - LP Modellierung

 

Mehwish
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2020, 20:01     Titel: Optimierungsproblem - LP Modellierung
  Antworten mit Zitat      
Hallo,

ich habe eine Aufgabe vorliegen, bei der ich überhaupt nicht weiterkomme. Es soll ein Quellcode zur Optimierung geschrieben werden (Bild hinzugefügt). Mein Ansatz ist, die einzelnen Betriebe durch Gleichungen für das Grundfutter zu definieren.

Dabei ist:

Betrieb A - x
Bertieb B - y
Betrieb C - z

Die Gleichungen, die definiert werden, wären folgende:


min
1200x+500y+600z

u.d.N.
8x+4y+2z=40
x+2z=20
3x+z=10
3x+y=5

Es gibt auch keine Art von Beschränkungen, d.h. ich müsste wirklich nur mit diesen 5 Gleichungen arbeiten. Wie ich aber hieraus ein Matlab Programm schreiben soll... ich weiß es nicht.

termin4aufgabe3.JPG
 Beschreibung:

Download
 Dateiname:  termin4aufgabe3.JPG
 Dateigröße:  169.29 KB
 Heruntergeladen:  315 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.457
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.07.2020, 20:14     Titel:
  Antworten mit Zitat      
Hallo,

in MATLAB gibt es hierfür linprog.
Mach aus x, y, z einen Vektor u = [x,y,z] und formuliere Zielfunktion und die linearen Gleichungsnebenbedingungen in Matrix-Vektor - Form

Mir erscheinen die Gleichungsnebenbedingungen recht viele für nur 3 Variablen. Sollen das wirklich alles *Gleichungs*nebenbedingungen sein und nicht etwa Ungleichungen? Es macht doch schließlich nichts aus, wenn man etwas mehr geliefert bekommt als nötig, solange man nicht mehr bezahlt?

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
 
Mehwish
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2020, 20:34     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine schnelle Antwort.
Ich habe das so umgesetzt, wie du gesagt hast. Den Artikel zu linprog habe ich mir im Help Center von Matlab soeben durchgelesen. Das wäre mein Resultat:

Code:
c = [ 1200, 500, 600 ];
A = [ 8, 4, 2; 4, 0, 2; 3, 0, 1;3,1,0];
b = [ 40; 20; 10;5 ];
Aeq = [];
beq = [];
lb = [ 0; 0; 0 ];
ub = [];
x0 = [];
options.Display = 'iter';

[x,price,exitflag] = linprog(c,A,b,Aeq,beq,lb,ub,x0,options);

disp('x=')
disp(round(x))
disp('price=')
disp(round(price))
disp('exitflag=')
disp(round(exitflag))


Nun kommt da allerdings überall 0 raus. Heißt, der Landwirt soll gar nichts kaufen.
Und zu deiner Frage, nun das dachte ich mir auch, aber in der Aufgabe ist nirgends die Rede von Aussagen wie "höchstens..." oder Ähnlichem.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.457
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.07.2020, 21:05     Titel:
  Antworten mit Zitat      
Hallo,

ein kleiner, aber feiner Fehler: die Ungleichungen sind in der Form A*x <= b. Wenn der Landwirt aber bestimmte Futtermittel benötigt, dann würde ich sagen, dass er die mindestens benötigt, d.h. du willst A*x >= b oder äquivalent -A*x <= -b. Anders gesagt: du musst bei A und b ein Minus davor setzen.

Ich bekomme dann als Lösung [5 0 0], und das ist sinnvoll: A verlangt das doppelte wie C, bietet aber von allem mindestens doppelt so viel und ist somit besser als C. B bietet keine Maissilage, d.h. ich muss den Bedarf daran durch Kauf von 5 Einheiten bei A decken. Dann ist der Bedarf an allem anderen aber auch schon gedeckt.

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
 
Mehwish
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.07.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2020, 21:49     Titel:
  Antworten mit Zitat      
Das ergibt natürlich Sinn. Jetzt bekomme ich ebenfalls [5 0 0] raus. Ich danke dir vielmals! An den nächsten Aufgabenteil versuche ich mich erstmal selbst dran. Falls ich nicht weiterkommen sollte, hoffe ich, dass ich hier wieder Hilfe finden kann. (:
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.