In diesem Beitrag zeige ich wie SciPy.optimize zur Modellierung und Lösung linearer Probleme genutzt werden kann. Optimiert werden soll nachstehendes Problem:

Die linprog-Funktion im SciPy-Modul kann zur Lösung dieses Problem verwendet werden. Hierfür notiere ich das Problem zunächst in Matrix-Vektor Notation. Desweiteren wandle ich das Problem in ein Minimierungsproblem um (das ist die Problemform von der die linprog-Funktion ausgeht):

Jetzt kann ich das Problem in Python lösen:
# Kostenvektor als Liste erstellen
c = [-2,-3]
# Koeffizientenmatrix der Nebenbedingungen definieren
A_ub = [[1,1],
[2,1]]
# Grenzwerte der Optimierung in Listenform definieren
b_ub =[10,15]
# Grenzwerte der Optimierungsvariablen in Tuples notieren
x1_bounds = (0,None)
x2_bounds = (0,None)
# Problem mit SciPy.optimize.linprog modellieren und lösen
from scipy.optimize import linprog
model_linear = linprog(c=c,
A_ub=A_ub,
b_ub = b_ub,
bounds = [x1_bounds,x2_bounds])
# Resultat ausgeben
print(str(model_linear))
fun: -30.0
message: 'Optimization terminated successfully.'
nit: 1
slack: array([ 0., 5.])
status: 0
success: True
x: array([ 0., 10.])
Da die linprog-Funktion von einem Minimierungsproblem ausgeht, wir aber eigentlich ein Maximierungsproblem gelöst haben, ist der Optimalwert 30, und nicht -30.

Wirtschaftsingenieur mit Interesse an Optimierung, Simulation und mathematischer Modellierung in R, SQL, VBA und Python

Leave a Reply