library(solvers)

Well Conditioned Problems

p = 10

set.seed(34)
d <- randomProblem(100, 10, response="binomial", density = 1, rho=0)
f <- getBenchmarks(d$x, d$y, family="binomial", path_length = 20)
#> [1] "Time taken by FISTA        :  1.199394475"
#> [1] "Time taken by ADMM(NR)     :  6.085816134"
#> [1] "Time taken by ADMM(BFGS)   :  15.168002963"
#> [1] "Time taken by ADMM(L-BFGS) :  10.972488466"
#> [1] "Time taken by PN           :  5.058621261"
d <- randomProblem(1000, 10, response="binomial", density = 1, rho=0)
f <- getBenchmarks(d$x, d$y, family="binomial", path_length = 20)
#> [1] "Time taken by FISTA        :  16.100168498"
#> [1] "Time taken by ADMM(NR)     :  11.724037367"
#> [1] "Time taken by ADMM(BFGS)   :  35.641010107"
#> [1] "Time taken by ADMM(L-BFGS) :  55.844725916"
#> [1] "Time taken by PN           :  1.097766558"

p = 20

d <- randomProblem(1000, 20, response="binomial", density = 1, rho=0)
f <- getBenchmarks(d$x, d$y, family="binomial", path_length = 20)
#> [1] "Time taken by FISTA        :  32.885594398"
#> [1] "Time taken by ADMM(NR)     :  73.013968392"
#> [1] "Time taken by ADMM(BFGS)   :  128.534565959"
#> [1] "Time taken by ADMM(L-BFGS) :  134.220205403"
#> [1] "Time taken by PN           :  6.315456166"

Badly Conditioned Problems

p = 10

d <- randomProblem(100, 10, response="binomial", density = 1, rho=0.95)
f <- getBenchmarks(d$x, d$y, family="binomial", path_length = 20)
#> [1] "Time taken by FISTA        :  2.579610584"
#> [1] "Time taken by ADMM(NR)     :  2.728364128"
#> [1] "Time taken by ADMM(BFGS)   :  8.663644933"
#> [1] "Time taken by ADMM(L-BFGS) :  5.502857735"
#> [1] "Time taken by PN           :  2.124591391"
d <- randomProblem(1000, 10, response="binomial", density = 1, rho=0.95)
f <- getBenchmarks(d$x, d$y, family="binomial", path_length = 20)
#> [1] "Time taken by FISTA        :  42.698668364"
#> [1] "Time taken by ADMM(NR)     :  35.110832445"
#> [1] "Time taken by ADMM(BFGS)   :  84.352378605"
#> [1] "Time taken by ADMM(L-BFGS) :  120.224753342"
#> [1] "Time taken by PN           :  3.179735458"

p = 20

d <- randomProblem(1000, 20, response="binomial", density = 1, rho=0.95)
f <- getBenchmarks(d$x, d$y, family="binomial", path_length = 20)
#> [1] "Time taken by FISTA        :  92.775752762"
#> [1] "Time taken by ADMM(NR)     :  101.353987396"
#> [1] "Time taken by ADMM(BFGS)   :  161.23145152"
#> [1] "Time taken by ADMM(L-BFGS) :  217.537757043"
#> [1] "Time taken by PN           :  8.177237231"