py_active_set.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. // Wrap the params struct
  2. py::class_<igl::active_set_params > active_set_params(m, "active_set_params");
  3. active_set_params
  4. .def("__init__", [](igl::active_set_params &m)
  5. {
  6. new (&m) igl::active_set_params();
  7. m.Auu_pd = false;
  8. m.max_iter = 100;
  9. m.inactive_threshold = igl::DOUBLE_EPS;
  10. m.constraint_threshold = igl::DOUBLE_EPS;
  11. m.solution_diff_threshold = igl::DOUBLE_EPS;
  12. })
  13. .def_readwrite("Auu_pd", &igl::active_set_params::Auu_pd)
  14. .def_readwrite("max_iter", &igl::active_set_params::max_iter)
  15. .def_readwrite("inactive_threshold", &igl::active_set_params::inactive_threshold)
  16. .def_readwrite("constraint_threshold", &igl::active_set_params::constraint_threshold)
  17. .def_readwrite("solution_diff_threshold", &igl::active_set_params::solution_diff_threshold)
  18. .def_readwrite("Auu_pd", &igl::active_set_params::Auu_pd)
  19. ;
  20. m.def("active_set", []
  21. (
  22. const Eigen::SparseMatrix<double>& A,
  23. const Eigen::MatrixXd& B,
  24. const Eigen::MatrixXi& known,
  25. const Eigen::MatrixXd& Y,
  26. const Eigen::SparseMatrix<double>& Aeq,
  27. const Eigen::MatrixXd& Beq,
  28. const Eigen::SparseMatrix<double>& Aieq,
  29. const Eigen::MatrixXd& Bieq,
  30. const Eigen::MatrixXd& lx,
  31. const Eigen::MatrixXd& ux,
  32. const igl::active_set_params& params,
  33. Eigen::MatrixXd& Z
  34. )
  35. {
  36. assert_is_VectorX("B",B);
  37. assert_is_VectorX("known",known);
  38. assert_is_VectorX("Y",Y);
  39. assert_is_VectorX("Beq",Beq);
  40. assert_is_VectorX("Bieq",Bieq);
  41. assert_is_VectorX("Z",Z);
  42. return igl::active_set(A,B,known,Y,Aeq,Eigen::VectorXd(Beq),Aieq,Bieq,lx,ux,params,Z);
  43. }, __doc_igl_active_set,
  44. py::arg("A"), py::arg("B"), py::arg("known"), py::arg("Y"), py::arg("Aeq"), py::arg("Beq")
  45. , py::arg("Aieq"), py::arg("Bieq"), py::arg("lx"), py::arg("ux"), py::arg("params"), py::arg("Z"));