Package parsimony :: Package algorithms :: Module proximal :: Class ADMM
[hide private]
[frames] | no frames]

Class ADMM

source code

            object --+        
                     |        
   bases.BaseAlgorithm --+    
                         |    
   bases.ExplicitAlgorithm --+
                             |
                object --+   |
                         |   |
  bases.IterativeAlgorithm --+
                             |
                object --+   |
                         |   |
bases.InformationAlgorithm --+
                             |
                            ADMM

The alternating direction method of multipliers (ADMM). Computes the
minimum of the sum of two functions with associated proximal or projection
operators. Solves problems on the form

    min. f(x, y) = g(x) + h(y)
    s.t. y = x

The functions have associated proximal or projection operators.

Parameters
----------
rho : Positive float. The penalty parameter.

mu : Float, greater than 1. The factor within which the primal and dual
        variables should be kept. Set to less than or equal to 1 if you
        don't want to update the penalty parameter rho dynamically.

tau : Float, greater than 1. Increase rho by a factor tau.

info : List or tuple of utils.consts.Info. What, if any, extra run
        information should be stored. Default is an empty list, which means
        that no run information is computed nor returned.

eps : Positive float. Tolerance for the stopping criterion.

max_iter : Non-negative integer. Maximum allowed number of iterations.

min_iter : Non-negative integer less than or equal to max_iter. Minimum
        number of iterations that must be performed. Default is 1.

Instance Methods [hide private]
 
__init__(self, rho=1.0, mu=10.0, tau=2.0, info=[], eps=5e-08, max_iter=10000, min_iter=1, simulation=False)
x.__init__(...) initializes x; see help(type(x)) for signature
source code
 
run(self, function, *args, **kwargs)
Finds the minimum of two functions with associated proximal operators.
source code

Inherited from bases.BaseAlgorithm: get_params, set_params

Inherited from bases.IterativeAlgorithm: iter_reset

Inherited from bases.InformationAlgorithm: check_info_compatibility, info_copy, info_get, info_provided, info_requested, info_reset, info_set

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Static Methods [hide private]

Inherited from bases.BaseAlgorithm: check_compatibility

Class Variables [hide private]
  INTERFACES = [<class 'parsimony.functions.properties.Splittabl...
  INFO_PROVIDED = ['ok', 'num_iter', 'time', 'fvalue', 'converged']
  __abstractmethods__ = frozenset([])
  _abc_negative_cache_version = 14

Inherited from bases.ExplicitAlgorithm: __metaclass__

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self, rho=1.0, mu=10.0, tau=2.0, info=[], eps=5e-08, max_iter=10000, min_iter=1, simulation=False)
(Constructor)

source code 

x.__init__(...) initializes x; see help(type(x)) for signature

Overrides: object.__init__
(inherited documentation)

run(self, function, *args, **kwargs)

source code 
Finds the minimum of two functions with associated proximal
operators.

Parameters
----------
functions : List or tuple with two Functions or a SplittableFunction.
        The two functions.

xy : List or tuple with two elements, numpy arrays. The starting points
for the minimisation.

Decorators:
  • @bases.force_reset
  • @bases.check_compatibility
Overrides: bases.ExplicitAlgorithm.run

Class Variable Details [hide private]

INTERFACES

Value:
[properties.SplittableFunction, properties.AugmentedProximalOperator, \
properties.OR(properties.ProximalOperator, properties.ProjectionOperat\
or)]