Integer Programming for the Transportation Problem
Interface to lp\_solve linear/integer programming system specifically for solving transportation problems
lp.transport (cost.mat, direction="min", row.signs, row.rhs, col.signs, col.rhs, presolve=0, compute.sens=0, integers = 1:(nc*nr) )
cost.mat |
Matrix of costs; ij-th element is the cost of transporting one item from source i to destination j. |
direction |
Character, length 1: "min" or "max" |
row.signs |
Vector of character strings giving the direction of the row constraints: each value should be one of "<," "<=," "=," "==," ">," or ">=." (In each pair the two values are identical.) |
row.rhs |
Vector of numeric values for the right-hand sides of the row constraints. |
col.signs |
Vector of character strings giving the direction of the column constraints: each value should be one of "<," "<=," "=," "==," ">," or ">=." |
col.rhs |
Vector of numeric values for the right-hand sides of the column constraints. |
presolve |
Numeric: presolve? Default 0 (no); any non-zero value means "yes." Currently ignored. |
compute.sens |
Numeric: compute sensitivity? Default 0 (no); any non-zero value means "yes." |
integers |
Vector of integers whose ith element gives the index of the ith integer variable. Its length will be the number of integer variables. Default: all variables are integer. Set to NULL to have no variables be integer. |
This is a particular integer programming problem. All the decision variables are assumed to be integers, and there is one constraint per row and one per column (and no others). This is assumed to be a minimization problem.
An lp
object. Constraints are implicit and not returned.
See documentation for details.
Sam Buttrey, buttrey@nps.edu
Example problem from Bronson (1981), Operations Research, Scahum's Outline Series, McGraw-Hill.
# # Transportation problem, Bronson, problem 9.1, p. 86 # # Set up cost matrix # costs <- matrix (10000, 8, 5); costs[4,1] <- costs[-4,5] <- 0 costs[1,2] <- costs[2,3] <- costs[3,4] <- 7; costs[1,3] <- costs[2,4] <- 7.7 costs[5,1] <- costs[7,3] <- 8; costs[1,4] <- 8.4; costs[6,2] <- 9 costs[8,4] <- 10; costs[4,2:4] <- c(.7, 1.4, 2.1) # # Set up constraint signs and right-hand sides. # row.signs <- rep ("<", 8) row.rhs <- c(200, 300, 350, 200, 100, 50, 100, 150) col.signs <- rep (">", 5) col.rhs <- c(250, 100, 400, 500, 200) # # Run # lp.transport (costs, "min", row.signs, row.rhs, col.signs, col.rhs) ## Not run: Success: the objective function is 7790 lp.transport (costs, "min", row.signs, row.rhs, col.signs, col.rhs)$solution ## Not run: [,1] [,2] [,3] [,4] [,5] [1,] 0 100 0 100 0 [2,] 0 0 300 0 0 [3,] 0 0 0 350 0 [4,] 200 0 0 0 0 [5,] 50 0 0 0 50 [6,] 0 0 0 0 50 [7,] 0 0 100 0 0 [8,] 0 0 0 50 100 ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.