From ab5e3837f81833dd9acae24fa8c583d540bac935 Mon Sep 17 00:00:00 2001
From: Pierre Fernbach <pierre.fernbach@laas.fr>
Date: Fri, 4 Aug 2017 16:21:54 +0200
Subject: [PATCH] allow retries (hardcoded value of 3) if the LP return a
 LP_STATUS_ERROR in findMaximumAcceleration

---
 src/centroidal_dynamics.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/centroidal_dynamics.cpp b/src/centroidal_dynamics.cpp
index f1c0e5d..7a4c5c5 100644
--- a/src/centroidal_dynamics.cpp
+++ b/src/centroidal_dynamics.cpp
@@ -599,8 +599,14 @@ LP_status Equilibrium::findMaximumAcceleration(Cref_matrix63 H, Cref_vector6 h,C
   VectorX Alb = -h;
   VectorX Aub = -h;
 
+  int iter = 0;
+  LP_status lpStatus;
+  do{
+    lpStatus = m_solver->solve(c, lb, ub, A, Alb, Aub, b_a0);
+    iter ++;
+  }while(lpStatus == LP_STATUS_ERROR && iter < 3);
+
 
-  LP_status lpStatus = m_solver->solve(c, lb, ub, A, Alb, Aub, b_a0);
   if(lpStatus==LP_STATUS_UNBOUNDED){
     //SEND_DEBUG_MSG("Primal LP problem is unbounded : "+toString(lpStatus));
     alpha0 = std::numeric_limits<double>::infinity();
-- 
GitLab