Commit 54c6e7a6 authored by Russell Luke's avatar Russell Luke
Browse files

added CADRl

parent a16c91d1
# old demo
import SetProxPythonPath
from proxtoolbox.experiments.phase.JWST_Experiment import JWST_Experiment
JWST = JWST_Experiment(algorithm = 'CADRl', lambda_0 = 1.0, lambda_max = 1.0, MAXIT = 1000)
JWST.run()
JWST.show()
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
from proxtoolbox.algorithms.algorithm import Algorithm
from proxtoolbox.utils.cell import Cell, isCell
from numpy import exp
class CADRl(Algorithm):
"""
Relaxed version of a cyclic averaged
alternating reflections method (CAAR) proposed by
Borwein and Tam, Journal of Nonlinear and Convex Analysis
Volume 16, Number 4. The relaxation is the relaxed
Douglas Rachford algorithm proposed and analysed by Luke,
Inverse Problems, 2005 and SIAM J. on Optimization, 2008)
For more on the CDRl algorithm in the convex setting see:
D. R. Luke, A. Martins and M. K. Tam. "Relaxed Cyclic Douglas-Rachford
Algorithms for Nonconvex Optimization." ICML 2018 Workshop:
Modern Trends in Nonconvex Optimization for Machine Learning,
Stockholm, July 2018.
https://sites.google.com/view/icml2018nonconvex/papers
Based on Matlab code written by Russell Luke (Inst. Fuer
Numerische und Angewandte Mathematik, Universitaet
Gottingen) on Aug 18, 2017.
"""
def evaluate(self, u):
"""
Update for the relaxed version of a cyclic averaged
alternating reflections algorithm
Parameters
----------
u : ndarray
The current iterate.
Returns
-------
u_new : ndarray
The new iterate (same type as input parameter `u`).
"""
lmbd = self.computeRelaxation()
tmp_u = u
nProx = len(self.proxOperators)
for j in range(nProx-1):
tmp1 = 2*self.proxOperators[j+1].eval(tmp_u, j+1) - tmp_u # reflection
tmp2 = self.proxOperators[0].eval(tmp1, 0) # projection of the reflection
tmp_u = (lmbd*(2*tmp2 - tmp1) + (1 - lmbd)*tmp1 + tmp_u)/2
return tmp_u
def getDescription(self):
return self.getDescriptionHelper("\\lambda", self.lambda_0, self.lambda_max)
......@@ -15,6 +15,7 @@ from .AvP import *
from .QNAvP import *
from .DRl import *
from .CDRl import *
from .CADRl import *
from .PHeBIE import *
from .iterateMonitor import *
from .feasibilityIterateMonitor import *
......@@ -30,7 +31,6 @@ from .GRAAL import *
from .ADMM import *
from .RRR import *
from .CAARL import *
from .CADRl import *
from .CDRlrand import *
from .CPrand import *
from .DRl import *
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment