[R] lsqlin in R package pracma
Hans W Borchers
hwborchers at gmail.com
Wed Aug 26 16:10:53 CEST 2015
I am a strong advocate of the *nloptr* package; and "sequential
quadratic programming", i.e. slsqp(), should be a good choice for
least-squares problems. Note that you still have to provide a starting
point.
BUT: this point does not need to lie in the interior of the feasible region.
So you can start with a point that solves the problem on the boundary
(with lsqlin()) and then continue with slsqp().
For the example mentioned above, it looks like this:
library(pracma)
x0 <- lsqlin(C, d, A, b) # starting point on the boundary
library(nloptr)
f <- function(x) sum((C %*% x - d)^2) # objective
hin <- function(x) -A %*% x + b # constraint, w/ A x >= 0 !
slsqp(x0, f, hin = hin)
# $par
# [1] 0.1298620 -0.5756944 0.4251035 0.2438448
#
# $value
# [1] 0.01758538
# ...
The solution is slightly better than the MATLAB one or the constrOptim one.
Of course, all these can be improved by changing some optional parameters.
On Wed, Aug 26, 2015 at 2:18 PM, Wang, Xue, Ph.D. <Wang.Xue at mayo.edu> wrote:
> Hi Hans,
>
> Thanks for your comments!
>
> I need the linear inequality constraints so nlsLM is not a candidate.
>
> I am also looking at the functions mma and slsqp in R package nloptr. Compared with constrOptim(), which approach would you recommend?
>
> Thanks,
>
> Xue
More information about the R-help
mailing list