simplify useWarmStart logic
parent
3c85e2d625
commit
7492a708d2
|
@ -139,26 +139,18 @@ InequalityFactorGraph QPSolver::identifyActiveConstraints(
|
||||||
InequalityFactorGraph workingSet;
|
InequalityFactorGraph workingSet;
|
||||||
for (const LinearInequality::shared_ptr& factor : inequalities) {
|
for (const LinearInequality::shared_ptr& factor : inequalities) {
|
||||||
LinearInequality::shared_ptr workingFactor(new LinearInequality(*factor));
|
LinearInequality::shared_ptr workingFactor(new LinearInequality(*factor));
|
||||||
if (useWarmStart == true && duals.exists(workingFactor->dualKey())) {
|
if (useWarmStart && duals.size() > 0) {
|
||||||
workingFactor->activate();
|
if (duals.exists(workingFactor->dualKey())) workingFactor->activate();
|
||||||
} else {
|
else workingFactor->inactivate();
|
||||||
if (useWarmStart == true && duals.size() > 0) {
|
|
||||||
workingFactor->inactivate();
|
|
||||||
} else {
|
} else {
|
||||||
double error = workingFactor->error(initialValues);
|
double error = workingFactor->error(initialValues);
|
||||||
// TODO: find a feasible initial point for QPSolver.
|
// Safety guard. This should not happen unless users provide a bad init
|
||||||
// For now, we just throw an exception, since we don't have an LPSolver
|
if (error > 0) throw InfeasibleInitialValues();
|
||||||
// to do this yet
|
if (fabs(error) < 1e-7)
|
||||||
if (error > 0)
|
|
||||||
throw InfeasibleInitialValues();
|
|
||||||
|
|
||||||
if (fabs(error) < 1e-7) {
|
|
||||||
workingFactor->activate();
|
workingFactor->activate();
|
||||||
} else {
|
else
|
||||||
workingFactor->inactivate();
|
workingFactor->inactivate();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
workingSet.push_back(workingFactor);
|
workingSet.push_back(workingFactor);
|
||||||
}
|
}
|
||||||
return workingSet;
|
return workingSet;
|
||||||
|
|
Loading…
Reference in New Issue