From c50b3e5eee7726073505a0144e591e12288e9e1c Mon Sep 17 00:00:00 2001 From: Badr-MOUFAD Date: Thu, 11 May 2023 18:16:26 +0200 Subject: [PATCH 1/3] approx solver --- solvers/apcd.py | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 solvers/apcd.py diff --git a/solvers/apcd.py b/solvers/apcd.py new file mode 100644 index 0000000..6af57f2 --- /dev/null +++ b/solvers/apcd.py @@ -0,0 +1,37 @@ +from benchopt import BaseSolver, safe_import_context + +with safe_import_context() as ctx: + import cd_solver + + +class Solver(BaseSolver): + """Accelerated proximal coordinate descent by Fercoq and Bianchi.""" + + name = 'apcd' + stop_strategy = 'iteration' + + install_cmd = "conda" + requirements = [ + "pip:git+https://github.com/Badr-MOUFAD/fercoq-approx@main" + ] + + def set_objective(self, X, y, lmbd, fit_intercept): + self.X, self.y, self.lmbd = X, y, lmbd + self.fit_intercept = fit_intercept + + def run(self, n_iter): + n_samples, n_features = self.X.shape + f = ["square"] * n_samples + N = n_features + Af = self.X + bf = self.y + cf = [0.5] * n_samples + g = ["abs"] * n_features + cg = [self.lmbd] * n_features + + pb = cd_solver.Problem(N=N, f=f, Af=Af, bf=bf, cf=cf, g=g, cg=cg) + cd_solver.cd_solver_.coordinate_descent(pb, max_iter=n_iter) + self.w = pb.sol + + def get_result(self): + return self.w From 7d951d99b71c2bc5ecbaf973e9a33a3029b2c8e7 Mon Sep 17 00:00:00 2001 From: Badr-MOUFAD Date: Thu, 11 May 2023 18:23:21 +0200 Subject: [PATCH 2/3] add references --- solvers/apcd.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/solvers/apcd.py b/solvers/apcd.py index 6af57f2..d776a57 100644 --- a/solvers/apcd.py +++ b/solvers/apcd.py @@ -15,6 +15,13 @@ class Solver(BaseSolver): "pip:git+https://github.com/Badr-MOUFAD/fercoq-approx@main" ] + references = [ + 'Fercoq, Olivier and Richt{\'a}rik, Peter, ' + 'SIAM Journal on Optimization, ' + '"Accelerated, parallel, and proximal coordinate descent", ' + 'vol. 25, pp. 1997--2023 (2015)' + ] + def set_objective(self, X, y, lmbd, fit_intercept): self.X, self.y, self.lmbd = X, y, lmbd self.fit_intercept = fit_intercept From 89fb86ddd0218dbaf8ccfdea5acf35a25afb6a56 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Mon, 5 Jun 2023 09:43:44 +0200 Subject: [PATCH 3/3] ci trigger