feat: add number of constraints as a generic
feat(lib): constraints along with evolutionary strategies