lp.transport: Integer Programming for the Transportation Problem

lp.transportR Documentation

Integer Programming for the Transportation Problem

Description

Interface to lp_solve linear/integer programming system specifically for solving transportation problems

Usage

lp.transport (cost.mat, direction="min", row.signs, row.rhs, col.signs,
              col.rhs, presolve=0, compute.sens=0, integers = 1:(nc*nr) )

Arguments

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.

Details

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.

Value

An lp object. Constraints are implicit and not returned. See documentation for details.

Author(s)

Sam Buttrey, buttrey@nps.edu

References

Example problem from Bronson (1981), Operations Research, Scahum's Outline Series, McGraw-Hill.

See Also

lp.assign, lp.transport

Examples

#
# 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)

lpSolve documentation built on Sept. 13, 2024, 1:11 a.m.