linprog.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include <test_common.h>
  2. #include <igl/linprog.h>
  3. TEST_CASE("linprog: 2D-inequality", "[igl]" )
  4. {
  5. Eigen::VectorXd f(2); f << -2, -1;
  6. Eigen::VectorXd b(3); b << 8, 14, 4;
  7. Eigen::MatrixXd A(3, 2); A << 2, -1, 1, 2, -1, 1;
  8. Eigen::MatrixXd B = Eigen::MatrixXd(0,2);
  9. Eigen::VectorXd c = Eigen::VectorXd(0);
  10. Eigen::VectorXd x;
  11. igl::linprog(f, A, b, B, c, x);
  12. Eigen::VectorXd x_correct(2); x_correct<<6,4;
  13. test_common::assert_near( x, x_correct, 1e-10);
  14. }
  15. TEST_CASE("linprog: 2D-inequality+2-equality", "[igl]" )
  16. {
  17. Eigen::VectorXd f(2); f << -2, -1;
  18. Eigen::VectorXd b(3); b << 8, 14, 4;
  19. Eigen::MatrixXd A(3, 2); A << 2, -1, 1, 2, -1, 1;
  20. Eigen::MatrixXd B = Eigen::MatrixXd(2,2);B<<1,0,0,1;
  21. Eigen::VectorXd c = Eigen::VectorXd(2);c<<4,4;
  22. Eigen::VectorXd x;
  23. igl::linprog(f, A, b, B, c, x);
  24. Eigen::VectorXd x_correct(2); x_correct<<4,4;
  25. test_common::assert_near( x, x_correct, 1e-10);
  26. }
  27. TEST_CASE("linprog: 2D-inequality+1-equality", "[igl]" )
  28. {
  29. Eigen::VectorXd f(2); f << -2, -1;
  30. Eigen::VectorXd b(3); b << 8, 14, 4;
  31. Eigen::MatrixXd A(3, 2); A << 2, -1, 1, 2, -1, 1;
  32. Eigen::MatrixXd B = Eigen::MatrixXd(1,2);B<<1,0;
  33. Eigen::VectorXd c = Eigen::VectorXd(1);c<<4;
  34. Eigen::VectorXd x;
  35. igl::linprog(f, A, b, B, c, x);
  36. Eigen::VectorXd x_correct(2); x_correct<<4,5;
  37. test_common::assert_near( x, x_correct, 1e-10);
  38. }