Esempio n. 1
0
def test_data_keys():
    data, cone, _ = ex.simple_socp()
    work = scs.Workspace(data, cone)

    assert 'A' not in work.data

    assert set(work.data.keys()) == set(['b','c'])
Esempio n. 2
0
def test_settings_change():
    data, cone, _ = ex.simple_socp()
    work = scs.Workspace(data, cone)

    assert work.settings['eps'] == 1e-3

    work.solve(eps=1e-6)

    assert work.settings['eps'] == 1e-6
Esempio n. 3
0
def test_fixed_settings():
    data, cone, _ = ex.simple_socp()
    work = scs.Workspace(data, cone)

    expected_fixed = set(['normalize', 'use_indirect', 'scale', 'rho_x'])

    assert set(work.fixed.keys()) == expected_fixed

    with pytest.raises(Exception):
        work.settings['rho_x'] = 3.14159
        # should raise an exception because we changed a fixed setting
        work.solve()
Esempio n. 4
0
def test_settings():
    expected_keys = set(['normalize', 'use_indirect', 'scale', 'verbose',
                        'eps', 'cg_rate', 'max_iters', 'alpha', 'rho_x'])

    data, cone, _ = ex.simple_socp()
    work = scs.Workspace(data, cone)

    assert 'warm_start' not in work.settings
    assert set(work.settings.keys()) == expected_keys

    work.solve()

    assert 'warm_start' not in work.settings
    assert set(work.settings.keys()) == expected_keys
Esempio n. 5
0
def test_warm_start():
    # if warm-starting, the input warm-start vector should not be modified
    data, cone, true_x = ex.simple_socp()
    work = scs.Workspace(data, cone)

    sol = work.solve(eps=1e-2)

    assert np.linalg.norm(sol['x'] - true_x) > 1e-3

    sol2 = work.solve(warm_start=sol, eps=1e-9)

    assert np.linalg.norm(sol2['x'] - true_x) <= 1e-9

    assert np.linalg.norm(sol['x'] - sol2['x']) > 0
    assert sol['x'] is not sol2['x']
Esempio n. 6
0
def test_A():
    data, cone, true_x = ex.simple_socp()
    work = scs.Workspace(data, cone)

    # corrupt the original data (but SCS should have made an internal copy, so this is ok)
    data['A'][:] = 3

    sol = work.solve(eps=1e-6)

    assert np.allclose(sol['x'], true_x)

    # now, solving on corrupted data shouldn't work
    work = scs.Workspace(data, cone)

    sol = work.solve(eps=1e-6)

    assert not np.allclose(sol['x'], true_x)
Esempio n. 7
0
def test_simple_socp():
    data, cone, true_x = ex.simple_socp()
    sol = scs.solve(data, cone, eps=1e-6)

    assert np.allclose(sol['x'], true_x)