sparse_project {lintools}R Documentation

Successive projections with sparsely defined restrictions

Description

Compute a vector, closest to x satisfying a set of linear (in)equality restrictions.

Usage

sparse_project(
  x,
  A,
  b,
  neq = length(b),
  w = rep(1, length(x)),
  eps = 0.01,
  maxiter = 1000L,
  ...
)

Arguments

x

[numeric] Vector to optimize, starting point.

A

[data.frame] Coeffiencient matrix in [row,column,coefficient] format.

b

[numeric] Constant vector of the system Ax\leq b

neq

[integer] Number of equalities

w

[numeric] weight vector of same length of x

eps

maximally allowed tolerance

maxiter

maximally allowed number of iterations.

...

extra parameters passed to sparse_constraints

Value

A list with the following entries:

Details

The tolerance eps is defined as the maximum absolute value of the difference vector \boldsymbol{Ax}-\boldsymbol{b} for equalities. For inequalities, the difference vector is set to zero when it's value is lesser than zero (i.e. when the restriction is satisfied). The algorithm iterates until either the tolerance is met, the number of allowed iterations is exceeded or divergence is detected.

See Also

project, sparse_constraints

Examples


# the system 
# x + y = 10
# -x <= 0   # ==> x > 0
# -y <= 0   # ==> y > 0
# Defined in the row-column-coefficient form:

A <- data.frame(
    row = c(1,1,2,3)
  , col = c(1,2,1,2)
  , coef= c(1,1,-1,-1)
)
b <- c(10,0,0)

sparse_project(x=c(4,5),A=A,b=b)


[Package lintools version 0.1.7 Index]