Lösung des linearen Transportproblems mit lp.transport mithilfe von lpSolve

Das Transportproblem ist eines der klassischen Probleme der linearen Programmierung. Das Problem besteht darin, dass eine bestimmte Gruppe von Kunden mit einer bestimmten Nachfrage von einer anderen Gruppe von Lieferanten mit bestimmten Kapazitäten („Angebot“) beliefert werden muss. Für eine detaillierte Erklärung des Transportproblems empfehle ich folgendes Dokument: https://econweb.ucsd.edu/~jsobel/172aw02/notes8.pdf.

Das in R verfügbare lpSolve-Paket kann zur Modellierung und Lösung des Transportproblems verwendet werden.

Ich werde zeigen, wie das geht. Ich definiere ein Problem, bei dem 3 Lieferanten versuchen, 4 Kunden zu beliefern. Die Lieferanten haben Kapazitäten von 100, 300 bzw. 400. Die Kunden haben 100, 100, 200 bzw. 400 Einheiten nachgefragt. Darüber hinaus werden die Kosten für die Belieferung des Kunden i durch den Lieferanten j für jede mögliche Kombination definiert und in einer Kostenmatrix angegeben.

Mit diesen Informationen können wir das Transportproblem (Entscheidung, welcher Kunde von welchem ​​Lieferanten beliefert werden soll) mit dem lpSolve-Paket in R modellieren und lösen.

Zuerst bereite ich den Modellierungsteil vor:

library(lpSolve)

# Angabe der Kostenmatrix
cost.mat <- matrix(nrow=3,ncol=4)
cost.mat[1,] <- 1:4
cost.mat[2,] <- 4:1
cost.mat[3,] <- c(1,4,3,2)

# Dies ist ein Minimierungsproblem
direction = "min"

# Kapazität darf nicht überschritten werden
row.signs <- rep("<=",3)
row.rhs <- c(100,300,400)

# Nachfrage muss befriedigt werden
col.signs <- rep(">=",4)
col.rhs <- c(100,100,200,400)

Dann löse ich das Problem:

# lp Objekt lösen und zuweisen
solution <- lp.transport(cost.mat = cost.mat,
                         direction = direction,
                         row.signs = row.signs,
                         row.rhs = row.rhs,
                         col.signs = col.signs,
                         col.rhs = col.rhs)

Wir können nun die „optimalen“ Kosten überprüfen:

solution
## Success: the objective function is 1400

Wir können auch die optimale Lösung anzeigen (d. H. dien optimalen Materialflüsse zu diesem Problem):

solution$solution
##      [,1] [,2] [,3] [,4]
## [1,]    0  100    0    0
## [2,]    0    0  200  100
## [3,]  100    0    0  300

Leave a Reply

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Close

Meta