Beispiel #1
0
def test_dr_virtual_zero():
    # Virtual 0-prox
    prox_f = lambda u, la: 0 * 0
    prox_g = lambda u, la: u * 0

    # observations of size (5,1)
    y = np.zeros((5, 1))
    x_rec = douglas_rachford(prox_f, prox_g, y)
    assert_array_almost_equal(y, x_rec)

    # observations of size (5,2)
    y = np.zeros((5, 2))
    x_rec = douglas_rachford(prox_f, prox_g, y)
    assert_array_almost_equal(y, x_rec)
Beispiel #2
0
def test_dr_zero():
    # Prox of F, G = 0
    prox_f = lambda u, la: u
    prox_g = lambda u, la: u

    # observations of size (5,1)
    y = np.zeros((5, 1))
    x_rec = douglas_rachford(prox_f, prox_g, y)
    assert_array_almost_equal(y, x_rec)

    # observations of size (5,2)
    y = np.zeros((5, 2))
    x_rec = douglas_rachford(prox_f, prox_g, y)
    assert_array_almost_equal(y, x_rec)
def test_dr_virtual_zero():
    # Virtual 0-prox
    prox_f = lambda u, la: 0 * 0
    prox_g = lambda u, la: u * 0

    # observations of size (5,1)
    y = np.zeros((5, 1))
    x_rec = douglas_rachford(prox_f, prox_g, y)
    assert_array_almost_equal(y, x_rec)

    # observations of size (5,2)
    y = np.zeros((5, 2))
    x_rec = douglas_rachford(prox_f, prox_g, y)
    assert_array_almost_equal(y, x_rec)
def test_dr_zero():
    # Prox of F, G = 0
    prox_f = lambda u, la: u
    prox_g = lambda u, la: u

    # observations of size (5,1)
    y = np.zeros((5, 1))
    x_rec = douglas_rachford(prox_f, prox_g, y)
    assert_array_almost_equal(y, x_rec)

    # observations of size (5,2)
    y = np.zeros((5, 2))
    x_rec = douglas_rachford(prox_f, prox_g, y)
    assert_array_almost_equal(y, x_rec)
def _ic_minimization(DJ, Omega_x0, maxiter):
    """
    Returns the solution of the problem
        min_{w \in Ker(D_J)} ||Omega sign(D_I^* x_0) - w||_\infty
    """
    proj = np.dot(np.dot(DJ.T,scipy.linalg.pinv(np.dot(DJ,DJ.T))), DJ)
    prox_indic = lambda w, la: w - np.dot(proj, w)

    proxinf = dual_prox(l1ball_projection)
    prox_obj = lambda x, la: -proxinf(Omega_x0 - x, la) + Omega_x0

    w = douglas_rachford(prox_indic, prox_obj, np.zeros((np.size(DJ,1),1)),
        maxiter=maxiter)
    return np.max(np.abs(Omega_x0 - w))
Beispiel #6
0
def test_dr_l1_cs():
    # Dimension of the problem
    n = 200
    p = n // 4

    # Matrix and observations
    A = np.random.randn(p, n)
    # Use a very sparse vector for the test
    x = np.zeros((n, 1))
    x[1, :] = 1
    y = np.dot(A, x)

    # operator callbacks
    prox_f = soft_thresholding
    prox_g = lambda x, tau: x + np.dot(
        A.T, lin.solve(np.dot(A, A.T), y - np.dot(A, x)))

    x_rec = douglas_rachford(prox_f, prox_g, np.zeros((n, 1)))
    assert_array_almost_equal(x, x_rec)
def test_dr_l1_cs():
    # Dimension of the problem
    n = 200
    p = n // 4

    # Matrix and observations
    A = np.random.randn(p, n)
    # Use a very sparse vector for the test
    x = np.zeros((n, 1))
    x[1, :] = 1
    y = np.dot(A, x)

    # operator callbacks
    prox_f = soft_thresholding
    prox_g = lambda x, tau: x + np.dot(A.T, lin.solve(np.dot(A, A.T),
        y - np.dot(A, x)))

    x_rec = douglas_rachford(prox_f, prox_g, np.zeros((n, 1)))
    assert_array_almost_equal(x, x_rec)
def test_dr_l1_cs():
    # Dimension of the problem
    n = 200
    p = n//4

    # Matrix and observations
    A = np.random.randn(p,n)
    # Use a very sparse vector for the test
    x = np.zeros((n,1))
    x[1,:] = 1
    y = np.dot(A,x)

    # operator callbacks
    ProxF = soft_thresholding
    ProxG = lambda x,tau: x + np.dot(A.T, np.linalg.solve(np.dot(A,A.T),
        y - np.dot(A,x)))

    xRec = douglas_rachford(ProxF, ProxG, np.zeros((n,1)), maxiter=1000)
    assert_array_almost_equal(x, xRec)