varranges {limSolve}R Documentation

Calculates ranges of inverse variables

Description

Given the linear constraints

Ex=f

Gx>=h

and a set of "variables" described by the linear equations

Var = EqA.x+EqB

finds the minimum and maximum values of the variables by successively minimising and maximising each variable equation
uses linear programming function lp from package lpSolve (see note)

Usage

varranges(E=NULL, F=NULL, G=NULL, H=NULL, EqA, EqB=NULL, 
       ispos=FALSE, tol=1e-8)

Arguments

E numeric matrix containing the coefficients of the equalities Ex=F
F numeric vector containing the right-hand side of the equalities
G numeric matrix containing the coefficients of the inequalities Gx>=H
H numeric vector containing the right-hand side of the inequalities
EqA numeric matrix containing the coefficients that define the variable equations
EqB numeric vector containing the right-hand side of the variable equations
ispos if TRUE, it is imposed that unknowns are positive quantities
tol tolerance for equality and inequality constraints

Value

a 2-column matrix with the minimum and maximum value of each equation (variable)

Note

we have experienced that lp sometimes fails (and R stops) if it is frequently repeated, and for small problems.

Author(s)

Karline Soetaert <k.soetaert@nioo.knaw.nl>

See Also

xranges,
lp: linear programming function from package lpSolve

Examples

# Ranges in the contribution of food 3+4+5 in the diet of Mink

A <- rbind(Minkdiet$Prey,rep(1,7))
B <- c(Minkdiet$Mink,1)
EqA   <- c(0,0,1,1,1,0,0)                 # sum of food 3,4,5
(isoA<-varranges(A,B,EqA=EqA,ispos=TRUE)) # ranges of part of food 3+4+5
varranges(A,B,EqA=EqA,G=diag(7),H=rep(0,7)) 

[Package limSolve version 1.3 Index]