problems.dual_problem

Module: problems.dual_problem

Inheritance diagram for regreg.problems.dual_problem:

digraph inheritancea5ba801357 { rankdir=LR; size="8.0, 12.0"; "problems.composite.composite" [URL="regreg.problems.composite.html#regreg.problems.composite.composite",fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5)",target="_top",tooltip="A generic way to specify a problem in composite form."]; "problems.dual_problem.dual_problem" [URL="#regreg.problems.dual_problem.dual_problem",fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5)",target="_top",tooltip="A class for specifying a problem of the form"]; "problems.composite.composite" -> "problems.dual_problem.dual_problem" [arrowsize=0.5,style="setlinewidth(0.5)"]; }

dual_problem

class regreg.problems.dual_problem.dual_problem(f_conjugate, transform, atom)

Bases: regreg.problems.composite.composite

A class for specifying a problem of the form

\[\text{minimize}_{x} f(x) + g(Dx)\]

which will be solved by a dual problem

\[\text{minimize}_{u} f^*(-D^Tu) + g^*(u)\]

while the primal variable is stored in the computation of the gradient of \(f^*\).

__init__(f_conjugate, transform, atom)

Initialize self. See help(type(self)) for accurate signature.

apply_offset(x)

If self.offset is not None, return x-self.offset, else return x.

static fromprimal(f, *g)
get_offset()
get_quadratic()

Get the quadratic part of the composite.

latexify(var=None)
nonsmooth_objective(x, check_feasibility=False)
objective(x, check_feasibility=False)
objective_template = 'f(%(var)s)'
objective_vars = {'offset': '\\alpha', 'shape': 'p', 'var': '\\beta'}
property offset
proximal(proxq, prox_control=None)

The proximal function for the dual problem

proximal_optimum(quadratic)
proximal_step(quadratic, prox_control=None)

Compute the proximal optimization

Parameters

prox_control: [None, dict]

If not None, then a dictionary of parameters for the prox procedure

property quadratic

Quadratic part of the object, instance of regreg.identity_quadratic.identity_quadratic.

set_offset(value)
set_quadratic(quadratic)

Set the quadratic part of the composite.

smooth_objective(x, mode='both', check_feasibility=False)

The smooth_objective DOES NOT INCLUDE the identity quadratic of all the smooth atoms.

smoothed(smoothing_quadratic)

Add quadratic smoothing term

solve(quadratic=None, return_optimum=False, **fit_args)
regreg.problems.dual_problem.stacked_dual(shape, *primary_atoms)

Computes a dual of

\[\sum_i g_i(D_i\beta)\]

under the substitutions \(v_i=D_i\beta\).

That is, it returns the following dual function after minimizing over \((v_i,\beta_i)\):

\[-\sum_i g_i^*(u_i)\]

as well as the transform \(D \mapsto \mathbb{R}^p \prod_i \mathbb{R}^{m_i}\) where \(p\) is the primal shape and \(m_i\) are the corresponding dual shapes.

Parameters

primary_atoms : [atoms]

Objects that have dual attributes, which is a pair (ltransform, conjugate).