Skip to content
Snippets Groups Projects
Commit 37c6bf1b authored by Pierre Fernbach's avatar Pierre Fernbach
Browse files

test if LP problem is unbounded, and return alpha0 = infinity

parent d3611b9f
No related branches found
No related tags found
No related merge requests found
...@@ -28,7 +28,7 @@ StaticEquilibrium::StaticEquilibrium(string name, double mass, unsigned int gene ...@@ -28,7 +28,7 @@ StaticEquilibrium::StaticEquilibrium(string name, double mass, unsigned int gene
{ {
init_cdd_library(); init_cdd_library();
m_is_cdd_initialized = true; m_is_cdd_initialized = true;
srand ( (unsigned int) (time(NULL)) ); //srand ( (unsigned int) (time(NULL)) );
} }
if(generatorsPerContact<3) if(generatorsPerContact<3)
...@@ -596,6 +596,11 @@ LP_status StaticEquilibrium::findMaximumAcceleration(Cref_matrixXX A, Cref_vecto ...@@ -596,6 +596,11 @@ LP_status StaticEquilibrium::findMaximumAcceleration(Cref_matrixXX A, Cref_vecto
LP_status lpStatus = m_solver->solve(c, lb, ub, A, Alb, Aub, b_a0); 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();
return lpStatus;
}
if(lpStatus==LP_STATUS_OPTIMAL) if(lpStatus==LP_STATUS_OPTIMAL)
{ {
alpha0 = -1.0 * m_solver->getObjectiveValue(); alpha0 = -1.0 * m_solver->getObjectiveValue();
...@@ -618,7 +623,7 @@ bool StaticEquilibrium::checkAdmissibleAcceleration(Cref_matrixXX G, Cref_matrix ...@@ -618,7 +623,7 @@ bool StaticEquilibrium::checkAdmissibleAcceleration(Cref_matrixXX G, Cref_matrix
LP_status lpStatus = m_solver->solve(c, lb, ub, G, Alb, Aub, b); LP_status lpStatus = m_solver->solve(c, lb, ub, G, Alb, Aub, b);
if(lpStatus==LP_STATUS_OPTIMAL) if(lpStatus==LP_STATUS_OPTIMAL || lpStatus==LP_STATUS_UNBOUNDED)
{ {
return true; return true;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment