Skip to content

Commit da5f8b3

Browse files
committed
reorder metrics computation
1 parent 3825614 commit da5f8b3

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

ocs2_ipm/src/IpmSolver.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -535,13 +535,13 @@ PerformanceIndex IpmSolver::setupQuadraticSubproblem(const std::vector<Annotated
535535
if (time[i].event == AnnotatedTime::Event::PreEvent) {
536536
// Event node
537537
auto result = multiple_shooting::setupEventNode(ocpDefinition, time[i].time, x[i], x[i + 1]);
538+
metrics[i] = multiple_shooting::computeMetrics(result);
538539
if (initializeSlackAndDualVariables) {
539540
slackStateIneq[i] =
540541
ipm::initializeSlackVariable(result.ineqConstraints.f, settings_.initialSlackLowerBound, settings_.initialSlackMarginRate);
541542
dualStateIneq[i] = ipm::initializeDualVariable(slackStateIneq[i], barrierParam, settings_.initialDualLowerBound,
542543
settings_.initialDualMarginRate);
543544
}
544-
metrics[i] = multiple_shooting::computeMetrics(result);
545545
performance[workerId] += ipm::computePerformanceIndex(result, barrierParam, slackStateIneq[i]);
546546
dynamics_[i] = std::move(result.dynamics);
547547
stateInputEqConstraints_[i].resize(0, x[i].size());
@@ -564,6 +564,7 @@ PerformanceIndex IpmSolver::setupQuadraticSubproblem(const std::vector<Annotated
564564
const scalar_t ti = getIntervalStart(time[i]);
565565
const scalar_t dt = getIntervalDuration(time[i], time[i + 1]);
566566
auto result = multiple_shooting::setupIntermediateNode(ocpDefinition, sensitivityDiscretizer_, ti, dt, x[i], x[i + 1], u[i]);
567+
metrics[i] = multiple_shooting::computeMetrics(result);
567568
// Disable the state-only inequality constraints at the initial node
568569
if (i == 0) {
569570
result.stateIneqConstraints.setZero(0, x[i].size());
@@ -579,7 +580,6 @@ PerformanceIndex IpmSolver::setupQuadraticSubproblem(const std::vector<Annotated
579580
dualStateInputIneq[i] = ipm::initializeDualVariable(slackStateInputIneq[i], barrierParam, settings_.initialDualLowerBound,
580581
settings_.initialDualMarginRate);
581582
}
582-
metrics[i] = multiple_shooting::computeMetrics(result);
583583
performance[workerId] += ipm::computePerformanceIndex(result, dt, barrierParam, slackStateIneq[i], slackStateInputIneq[i]);
584584
if (settings_.projectStateInputEqualityConstraints) {
585585
multiple_shooting::projectTranscription(result, settings_.computeLagrangeMultipliers);
@@ -613,13 +613,13 @@ PerformanceIndex IpmSolver::setupQuadraticSubproblem(const std::vector<Annotated
613613
if (i == N) { // Only one worker will execute this
614614
const scalar_t tN = getIntervalStart(time[N]);
615615
auto result = multiple_shooting::setupTerminalNode(ocpDefinition, tN, x[N]);
616+
metrics[i] = multiple_shooting::computeMetrics(result);
616617
if (initializeSlackAndDualVariables) {
617618
slackStateIneq[N] =
618619
ipm::initializeSlackVariable(result.ineqConstraints.f, settings_.initialSlackLowerBound, settings_.initialSlackMarginRate);
619620
dualStateIneq[N] =
620621
ipm::initializeDualVariable(slackStateIneq[N], barrierParam, settings_.initialDualLowerBound, settings_.initialDualMarginRate);
621622
}
622-
metrics[i] = multiple_shooting::computeMetrics(result);
623623
performance[workerId] += ipm::computePerformanceIndex(result, barrierParam, slackStateIneq[N]);
624624
stateInputEqConstraints_[i].resize(0, x[i].size());
625625
stateIneqConstraints_[i] = std::move(result.ineqConstraints);

0 commit comments

Comments
 (0)