Zurück Vor +Ebene Home Inhalt Index Hilfe

Lineare Optimierung

Die Syntax lautet:

ConstrainedMax[Zielfunktion,{Einschränkungen in Form von Ungleichungen mit < =
bzw. > = },{Variable}]

(* oder *)

ConstrainedMin[  ]

Beispiel:

Es werden die Produkte auf den Maschinen produziert. die Gewinnfunktion ist

Die Produktionszeit/Monat auf den Maschinen beträgt:

Das Produkt benötigt auf den Maschinen je 3 Stunden. Das Produkt benötigt auf der Maschine 2 Stunden, auf der Maschine 4 Stunden und auf der Maschine 6 Stunden. Daraus ergibt sich folgende Optimierung:

(* Beispiel *)
Remove["Global`*"]
f=300*x1+600*x2
einschr1=3*x1+2*x2<=150
einschr2=3*x1+4*x2<=160
einschr3=6*x2<=170
ConstrainedMax[f,{einschr1,einschr2,einschr3},{x1,x2}]
(* das erste Glied ist der erzeugte Gewinn *)

Ein Beispiel für Transportprobleme:

Ein Transportunternehmen hat drei Milchwerke (m1,m2,m3) mit Milch von drei Rinderställen (r1,r2,r3) zu beliefern. Der tägliche Bedarf beträgt 1000 l, 2000 l bzw. 2500 l. Die Rinderställe haben eine Tageskapazität von 800 l, 1500 l, 2300 l.

Die Transportkosten pro 1 Liter Milch in DM sind in der folgenden Tabelle aufgeführt:

Die Gesamtkosten sollen minimiert werden.

Es existieren neun Variable (x[1][1], x[1][2] usw. bis x[3][3]), da jedes Milchwerk von jedem Rinderstall beliefert werden kann. Die zu minimierende Größe ist

Die Einschränkungen sind einmal durch die Kapazität der Milchwerke gegeben:

und zum anderen durch die Kapazität der Rinderställe bestimmt:

In Mathematica läßt sich dieses Problem wie folgt lösen:

Remove["Global`*"]
ri={1700,1500,2300}
mi={1000,2000,2500}
kosten={{0.02,0.015,0.018},{0.01,0.017,0.023},{0.016,0.019,0.02}}
r = Join[ Table[Sum[x[i][j],{j,1,3}]==ri[[i]],{i,1,3}],
        Table[Sum[x[i][j],{i,1,3}]==mi[[j]],{j,1,3}]]
v=Flatten[Table[x[i][j],{i,1,3},{j,1,3}]]
z=Sum[x[i][j] * kosten[[i]][[j]],{i,1,3},{j,1,3}]
ConstrainedMin[z,r,v]

Dieses Beispiel kann leicht auf mehr Quellen und Zielorte erweitert werden.
Copyright Verlag Harri Deutsch AG  Stöcker DeskTop Mathematik