Learn R Programming

limSolve (version 1.5.6)

varranges: Calculates ranges of inverse variables in a linear inverse problem

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

Usage

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

Value

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

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.

Author

Karline Soetaert <karline.soetaert@nioz.nl>

References

Michel Berkelaar and others (2010). lpSolve: Interface to Lp_solve v. 5.5 to solve linear/integer programs. R package version 5.6.5. http://CRAN.R-project.org/package=lpSolve

See Also

Minkdiet, for a description of the Mink diet example.

xranges, to estimate ranges of inverse unknowns.

xsample, to randomly sample the lsei problem

lp: linear programming function from package lpSolve.

Examples

Run this code
# Ranges in the contribution of food 3+4+5 in the diet of Mink (try ?Minkdiet)

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

# The same, but explicitly imposing positivity
varranges(E, F, EqA = EqA, G = diag(7), H = rep(0, 7)) 

Run the code above in your browser using DataLab