% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/procrustes-consensus.R
\name{.consensus_target_procrustes_single}
\alias{.consensus_target_procrustes_single}
\title{Internal single-start GPA-consensus engine}
\usage{
.consensus_target_procrustes_single(
  unrotated_list,
  init_targets = NULL,
  rotation = c("orthogonal", "oblique"),
  start = 1,
  tol = 0.001,
  loss_tol = 1e-06,
  loss_patience = 5,
  convergence = c("either", "target", "loss", "both"),
  min_iter = 2,
  max_iter = 200,
  alpha = 1,
  match_target = TRUE,
  hyper_cutoff = 0.15,
  verbose = FALSE
)
}
\arguments{
\item{unrotated_list}{List of unrotated loading matrices to be aligned. All
matrices must be numeric, finite, and have identical dimensions.}

\item{init_targets}{Optional list of starting target matrices. These are
typically rotated loading matrices from the corresponding analyses. If
\code{NULL}, \code{unrotated_list} is used.}

\item{rotation}{Character string, either \code{"orthogonal"} or \code{"oblique"}.}

\item{start}{Either a single integer selecting an element of \code{init_targets},
or an explicit target matrix. Used when \code{multi_start = FALSE}.}

\item{tol}{Positive relative Frobenius-norm convergence tolerance for the
outer target update.}

\item{loss_tol}{Positive tolerance for the relative change in the outer
consensus loss. If \code{NULL}, loss-based convergence is disabled. It cannot be
\code{NULL} when \code{convergence} is \code{"loss"} or \code{"both"}.}

\item{loss_patience}{Positive integer. Number of consecutive iterations with
relative loss change below \code{loss_tol} required for loss-based convergence.}

\item{convergence}{Character string controlling the stopping rule. \code{"either"}
stops when either target or loss convergence is satisfied; \code{"target"} uses
only target change; \code{"loss"} uses only loss change; \code{"both"} requires both.}

\item{min_iter}{Non-negative integer. Minimum number of outer iterations
before convergence can be declared.}

\item{max_iter}{Positive integer. Maximum number of outer consensus
iterations.}

\item{alpha}{Damping factor for the target update. \code{alpha = 1} uses the full
centroid update. Smaller values, such as \code{0.5}, can reduce oscillation.}

\item{match_target}{Logical. If \code{TRUE}, the updated centroid is signed and
column-matched to the previous target before convergence is evaluated.}

\item{hyper_cutoff}{Non-negative cutoff used by \code{.hyperplane_count()} for
summary output.}

\item{verbose}{Logical; if \code{TRUE}, print convergence messages for the outer
loop.}
}
\description{
Performs a single GPA-consensus run from one starting target. The
multi-start wrapper \code{\link[=.gpa_consensus_target]{.gpa_consensus_target()}} dispatches here.
}
\keyword{internal}
