@@ -89,8 +89,9 @@ template <typename Model, int MAX_N> class NoLineSearch : public LineSearchStrat
8989
9090 const double current_dt = (k < N) ? dt_traj[static_cast <size_t >(k)] : 0.0 ;
9191 detail::evaluate_model_stage<Model>(candidate[k], config, current_dt);
92- if (k < N)
92+ if (k < N) {
9393 candidate[k + 1 ].x = candidate[k].f_resid ;
94+ }
9495 }
9596 }
9697
@@ -132,10 +133,11 @@ class MeritLineSearch : public LineSearchStrategy<Model, MAX_N> {
132133
133134 // Barrier & Soft Constraint Penalty Calculation
134135 for (int i = 0 ; i < NC; ++i) {
135- if (kp.s (i) > config.min_barrier_slack )
136+ if (kp.s (i) > config.min_barrier_slack ) {
136137 total_merit -= mu * std::log (kp.s (i));
137- else
138+ } else {
138139 total_merit += config.barrier_inf_cost ;
140+ }
139141
140142 // L1 Soft Constraint: Dual Barrier
141143 double w = 0.0 ;
@@ -150,15 +152,17 @@ class MeritLineSearch : public LineSearchStrategy<Model, MAX_N> {
150152 // L1 Soft Constraint: Dual Barrier + Linear Penalty
151153 if (type == 1 && w > 1e-6 ) {
152154 // 1. Barrier terms
153- if (kp.soft_s (i) > config.min_barrier_slack )
155+ if (kp.soft_s (i) > config.min_barrier_slack ) {
154156 total_merit -= mu * std::log (kp.soft_s (i));
155- else
157+ } else {
156158 total_merit += config.barrier_inf_cost ;
159+ }
157160
158- if (w - kp.lam (i) > 1e-9 )
161+ if (w - kp.lam (i) > 1e-9 ) {
159162 total_merit -= mu * std::log (w - kp.lam (i));
160- else
163+ } else {
161164 total_merit += config.barrier_inf_cost ;
165+ }
162166
163167 // 2. L1 Linear Penalty
164168 total_merit += w * kp.soft_s (i);
@@ -227,12 +231,14 @@ class MeritLineSearch : public LineSearchStrategy<Model, MAX_N> {
227231 double max_dual = 0.0 ;
228232 for (int k = 0 ; k <= N; ++k) {
229233 double local_max = MatOps::norm_inf (active[k].lam );
230- if (local_max > max_dual)
234+ if (local_max > max_dual) {
231235 max_dual = local_max;
236+ }
232237 }
233238 double required_nu = max_dual * 1.1 + 1.0 ;
234- if (required_nu > merit_nu)
239+ if (required_nu > merit_nu) {
235240 merit_nu = required_nu;
241+ }
236242
237243 // 2. Initial Merit
238244 double phi_0 = compute_merit (active, N, mu, config);
@@ -280,8 +286,9 @@ class MeritLineSearch : public LineSearchStrategy<Model, MAX_N> {
280286
281287 double current_dt = (k < N) ? dt_traj[k] : 0.0 ;
282288 detail::evaluate_model_stage<Model>(candidate[k], config, current_dt);
283- if (k < N)
289+ if (k < N) {
284290 candidate[k + 1 ].x = candidate[k].f_resid ;
291+ }
285292 }
286293 }
287294
@@ -306,8 +313,9 @@ class MeritLineSearch : public LineSearchStrategy<Model, MAX_N> {
306313 }
307314 }
308315
309- if (accepted)
316+ if (accepted) {
310317 break ;
318+ }
311319 alpha *= config.line_search_backtrack_factor ;
312320 ls_iter++;
313321 }
@@ -345,10 +353,11 @@ class FilterLineSearch : public LineSearchStrategy<Model, MAX_N> {
345353 // Objective (Phi) Calculation
346354 phi += kp.cost ;
347355 for (int i = 0 ; i < NC; ++i) {
348- if (kp.s (i) > config.min_barrier_slack )
356+ if (kp.s (i) > config.min_barrier_slack ) {
349357 phi -= mu * std::log (kp.s (i));
350- else
358+ } else {
351359 phi += config.barrier_inf_cost ;
360+ }
352361
353362 // L1 Soft Constraint: Dual Barrier
354363 double w = 0.0 ;
@@ -363,15 +372,17 @@ class FilterLineSearch : public LineSearchStrategy<Model, MAX_N> {
363372 // L1 Soft Constraint
364373 if (type == 1 && w > 1e-6 ) {
365374 // Barrier terms
366- if (kp.soft_s (i) > config.min_barrier_slack )
375+ if (kp.soft_s (i) > config.min_barrier_slack ) {
367376 phi -= mu * std::log (kp.soft_s (i));
368- else
377+ } else {
369378 phi += config.barrier_inf_cost ;
379+ }
370380
371- if (w - kp.lam (i) > 1e-9 )
381+ if (w - kp.lam (i) > 1e-9 ) {
372382 phi -= mu * std::log (w - kp.lam (i));
373- else
383+ } else {
374384 phi += config.barrier_inf_cost ;
385+ }
375386
376387 // L1 Linear Penalty
377388 phi += w * kp.soft_s (i);
@@ -434,17 +445,19 @@ class FilterLineSearch : public LineSearchStrategy<Model, MAX_N> {
434445 bool sufficient_decrease = (theta <= (1.0 - config.filter_gamma_theta ) * theta_0)
435446 || (phi <= phi_0 - config.filter_gamma_phi * theta_0);
436447
437- if (!sufficient_decrease)
448+ if (!sufficient_decrease) {
438449 return false ;
450+ }
439451
440452 // Check against filter
441453 for (const auto & entry : filter) {
442454 double theta_j = entry.first ;
443455 double phi_j = entry.second ;
444456 bool sufficient_wrt_filter = (theta <= (1.0 - config.filter_gamma_theta ) * theta_j)
445457 || (phi <= phi_j - config.filter_gamma_phi * theta_j);
446- if (!sufficient_wrt_filter)
458+ if (!sufficient_wrt_filter) {
447459 return false ;
460+ }
448461 }
449462 return true ;
450463 }
@@ -524,8 +537,9 @@ class FilterLineSearch : public LineSearchStrategy<Model, MAX_N> {
524537 double current_dt = (k < N) ? dt_traj[k] : 0.0 ;
525538
526539 detail::evaluate_model_stage<Model>(candidate[k], config, current_dt);
527- if (k < N)
540+ if (k < N) {
528541 candidate[k + 1 ].x = candidate[k].f_resid ;
542+ }
529543 }
530544 }
531545
@@ -537,8 +551,9 @@ class FilterLineSearch : public LineSearchStrategy<Model, MAX_N> {
537551 // SOC Logic
538552 if (!accepted && config.enable_soc && !soc_attempted && ls_iter == 0
539553 && alpha > config.soc_trigger_alpha ) {
540- if (config.print_level >= PrintLevel::DEBUG)
554+ if (config.print_level >= PrintLevel::DEBUG) {
541555 MLOG_DEBUG (" Step rejected. Attempting SOC." );
556+ }
542557
543558 // Avoid heap allocation in the solve loop.
544559 TrajArray soc_data = active; // Copy system matrices from active trajectory
@@ -572,30 +587,35 @@ class FilterLineSearch : public LineSearchStrategy<Model, MAX_N> {
572587 double current_dt = (k < N) ? dt_traj[k] : 0.0 ;
573588 if (config.enable_line_search_rollout ) {
574589 // Keep x0 fixed and re-propagate after applying SOC correction.
575- if (k == 0 )
590+ if (k == 0 ) {
576591 candidate[0 ].x = active[0 ].x ;
592+ }
577593 }
578594
579595 detail::evaluate_model_stage<Model>(candidate[k], config, current_dt);
580- if (config.enable_line_search_rollout && k < N)
596+ if (config.enable_line_search_rollout && k < N) {
581597 candidate[k + 1 ].x = candidate[k].f_resid ;
598+ }
582599 }
583600
584601 auto m_soc = compute_metrics (candidate, N, mu, config);
585602 if (is_acceptable (m_soc.first , m_soc.second , theta_0, phi_0, config)) {
586- if (config.print_level >= PrintLevel::DEBUG)
603+ if (config.print_level >= PrintLevel::DEBUG) {
587604 MLOG_DEBUG (" SOC Accepted." );
605+ }
588606 accepted = true ;
589607 }
590608 }
591609
592610 soc_attempted = true ;
593- if (accepted)
611+ if (accepted) {
594612 break ;
613+ }
595614 }
596615
597- if (accepted)
616+ if (accepted) {
598617 break ;
618+ }
599619 alpha *= config.line_search_backtrack_factor ;
600620 ls_iter++;
601621 }
0 commit comments