Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_solve_and_derivative(self):
np.random.seed(0)
m = 20
n = 10
A, b, c, cone_dims = utils.least_squares_eq_scs_data(m, n)
for mode in ["lsqr", "dense"]:
x, y, s, derivative, adjoint_derivative = cone_prog.solve_and_derivative(
A, b, c, cone_dims, eps=1e-10, mode=mode, solver="SCS")
dA = utils.get_random_like(
A, lambda n: np.random.normal(0, 1e-6, size=n))
db = np.random.normal(0, 1e-6, size=b.size)
dc = np.random.normal(0, 1e-6, size=c.size)
dx, dy, ds = derivative(dA, db, dc)
x_pert, y_pert, s_pert, _, _ = cone_prog.solve_and_derivative(
A + dA, b + db, c + dc, cone_dims, eps=1e-10, solver="SCS")
np.testing.assert_allclose(x_pert - x, dx, atol=1e-8)
np.testing.assert_allclose(y_pert - y, dy, atol=1e-8)
def test_threading(self):
np.random.seed(0)
m = 20
n = 10
As, bs, cs, cone_dicts = [], [], [], []
results = []
for _ in range(50):
A, b, c, cone_dims = utils.least_squares_eq_scs_data(m, n)
As += [A]
bs += [b]
cs += [c]
cone_dicts += [cone_dims]
results.append(cone_prog.solve_and_derivative(A, b, c, cone_dims))
for n_jobs in [1, -1]:
xs, ys, ss, _, DT_batch = cone_prog.solve_and_derivative_batch(
As, bs, cs, cone_dicts, n_jobs_forward=n_jobs, n_jobs_backward=n_jobs)
for i in range(50):
np.testing.assert_allclose(results[i][0], xs[i])
np.testing.assert_allclose(results[i][1], ys[i])
np.testing.assert_allclose(results[i][2], ss[i])
dAs, dbs, dcs = DT_batch(xs, ys, ss)
def test_warm_start(self):
np.random.seed(0)
m = 20
n = 10
A, b, c, cone_dims = utils.least_squares_eq_scs_data(m, n)
x, y, s, _, _ = cone_prog.solve_and_derivative(
A, b, c, cone_dims, eps=1e-11, solver="SCS")
x_p, y_p, s_p, _, _ = cone_prog.solve_and_derivative(
A, b, c, cone_dims, warm_start=(x, y, s), max_iters=1, solver="SCS")
np.testing.assert_allclose(x, x_p, atol=1e-7)
np.testing.assert_allclose(y, y_p, atol=1e-7)
np.testing.assert_allclose(s, s_p, atol=1e-7)