generate_problem.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import numpy as np
  2. from scipy import sparse
  3. import scipy.sparse.linalg as spla
  4. import utils.codegen_utils as cu
  5. # Set numpy seed for reproducibility
  6. np.random.seed(2)
  7. # Simple case
  8. test_solve_KKT_n = 3
  9. test_solve_KKT_m = 4
  10. test_solve_KKT_P = sparse.random(test_solve_KKT_n, test_solve_KKT_n,
  11. density=0.4, format='csc')
  12. test_solve_KKT_P = test_solve_KKT_P.dot(test_solve_KKT_P.T).tocsc()
  13. test_solve_KKT_A = sparse.random(test_solve_KKT_m, test_solve_KKT_n,
  14. density=0.4, format='csc')
  15. test_solve_KKT_Pu = sparse.triu(test_solve_KKT_P, format='csc')
  16. test_solve_KKT_rho = 4.0
  17. test_solve_KKT_sigma = 1.0
  18. test_solve_KKT_KKT = sparse.vstack([
  19. sparse.hstack([test_solve_KKT_P + test_solve_KKT_sigma *
  20. sparse.eye(test_solve_KKT_n), test_solve_KKT_A.T]),
  21. sparse.hstack([test_solve_KKT_A,
  22. -1./test_solve_KKT_rho * sparse.eye(test_solve_KKT_m)])
  23. ], format='csc')
  24. test_solve_KKT_rhs = np.random.randn(test_solve_KKT_m + test_solve_KKT_n)
  25. test_solve_KKT_x = spla.splu(test_solve_KKT_KKT).solve(test_solve_KKT_rhs)
  26. test_solve_KKT_x[test_solve_KKT_n:] = test_solve_KKT_rhs[test_solve_KKT_n:] + \
  27. test_solve_KKT_x[test_solve_KKT_n:] / test_solve_KKT_rho
  28. # Generate test data and solutions
  29. data = {'test_solve_KKT_n': test_solve_KKT_n,
  30. 'test_solve_KKT_m': test_solve_KKT_m,
  31. 'test_solve_KKT_A': test_solve_KKT_A,
  32. 'test_solve_KKT_Pu': test_solve_KKT_Pu,
  33. 'test_solve_KKT_rho': test_solve_KKT_rho,
  34. 'test_solve_KKT_sigma': test_solve_KKT_sigma,
  35. 'test_solve_KKT_KKT': test_solve_KKT_KKT,
  36. 'test_solve_KKT_rhs': test_solve_KKT_rhs,
  37. 'test_solve_KKT_x': test_solve_KKT_x
  38. }
  39. # Generate test data
  40. cu.generate_data('solve_linsys', data)