Ground-state algorithms
Reference for the ground-state search interface and its algorithms. For a task-oriented walkthrough see the how-to guides; the full, canonical docstrings for the whole package live in the Library index.
Interface
MPSKit.find_groundstate Function
find_groundstate(ψ₀, H, [environments]; kwargs...) -> (ψ, environments, ϵ)
find_groundstate(ψ₀, H, algorithm, environments) -> (ψ, environments, ϵ)Compute the ground state for Hamiltonian H with initial guess ψ. If not specified, an optimization algorithm will be attempted based on the supplied keywords.
Arguments
ψ₀::AbstractMPS: initial guessH::AbstractMPO: operator for which to find the ground state[environments]: MPS environment manageralgorithm: optimization algorithm
Keyword Arguments
tol::Float64: tolerance for convergence criteriummaxiter::Int: maximum amount of iterationsverbosity::Int: display progress information
Returns
ψ::AbstractMPS: converged ground stateenvironments: environments corresponding to the converged stateϵ::Float64: final convergence error upon terminating the algorithm
Algorithms
MPSKit.DMRG Type
struct DMRG{A, F, E, G} <: MPSKit.AlgorithmDensity Matrix Renormalization Group algorithm for finding the dominant eigenvector.
Each site update is, in order: (1) an optional bond expansion (alg_expand), (2) a single-site eigensolve, and (3) a gauge step (alg_gauge). With the defaults (alg_expand = nothing and a non-truncating QR alg_gauge) this is textbook single-site DMRG, which cannot change the bond dimension. Setting alg_expand to a bond-expansion algorithm (e.g. OptimalExpand, RandExpand, SketchedExpand) enriches the bond with directions orthogonal to the current state ahead of each eigensolve, recovering Controlled Bond Expansion (CBE) DMRG; a truncating alg_gauge is then desirable to cut the enlarged bond back down.
The gauge algorithm is selected in the keyword constructor from the trscheme argument: when it is notrunc() the gauge is a QR decomposition (alg_orth, Householder by default), otherwise it is a truncated SVD (alg_svd with the given trscheme).
Fields
tol::Float64: tolerance for convergence criteriummaxiter::Int64: maximal amount of iterationsverbosity::Int64: setting for how much information is displayedalg_eigsolve::Any: algorithm used for the eigenvalue solversfinalize::Any: callback function applied after each iteration, of signaturefinalize(iter, ψ, H, envs) -> ψ, envsalg_expand::Any: algorithm used to expand the bond ahead of each local update, ornothingfor nonealg_gauge::Any: factorization used for the post-update gauge: a QR algorithm (no truncation) or a truncated SVD
See also
Used as the algorithm argument of find_groundstate and approximate.
MPSKit.DMRG2 Type
struct DMRG2{A, S, F} <: MPSKit.AlgorithmTwo-site DMRG algorithm for finding the dominant eigenvector.
Fields
tol::Float64: tolerance for convergence criteriummaxiter::Int64: maximal amount of iterationsverbosity::Int64: setting for how much information is displayedalg_eigsolve::Any: algorithm used for the eigenvalue solversalg_svd::Any: algorithm used for the singular value decompositiontrscheme::MatrixAlgebraKit.TruncationStrategy: algorithm used for truncation of the two-site updatefinalize::Any: callback function applied after each iteration, of signaturefinalize(iter, ψ, H, envs) -> ψ, envs
See also
Used as the algorithm argument of find_groundstate and approximate.
MPSKit.VUMPS Type
struct VUMPS{F} <: MPSKit.AlgorithmVariational optimization algorithm for uniform matrix product states, based on the combination of DMRG with matrix product state tangent space concepts.
Fields
tol::Float64: tolerance for convergence criteriummaxiter::Int64: maximal amount of iterationsverbosity::Int64: setting for how much information is displayedalg_gauge::Any: algorithm used for gauging theInfiniteMPSalg_eigsolve::Any: algorithm used for the eigenvalue solversalg_environments::Any: algorithm used for the MPS environmentsfinalize::Any: callback function applied after each iteration, of signaturefinalize(iter, ψ, H, envs) -> ψ, envs
See also
Used as the algorithm argument of find_groundstate and leading_boundary.
References
MPSKit.IDMRG Type
struct IDMRG{A} <: MPSKit.AlgorithmSingle site infinite DMRG algorithm for finding the dominant eigenvector.
Fields
tol::Float64: tolerance for convergence criteriummaxiter::Int64: maximal amount of iterationsverbosity::Int64: setting for how much information is displayedalg_gauge::Any: algorithm used for gauging the MPSalg_eigsolve::Any: algorithm used for the eigenvalue solvers
See also
Used as the algorithm argument of find_groundstate, leading_boundary, and approximate.
MPSKit.IDMRG2 Type
struct IDMRG2{A, S} <: MPSKit.AlgorithmTwo-site infinite DMRG algorithm for finding the dominant eigenvector.
Fields
tol::Float64: tolerance for convergence criteriummaxiter::Int64: maximal amount of iterationsverbosity::Int64: setting for how much information is displayedalg_gauge::Any: algorithm used for gauging the MPSalg_eigsolve::Any: algorithm used for the eigenvalue solversalg_svd::Any: algorithm used for the singular value decompositiontrscheme::MatrixAlgebraKit.TruncationStrategy: algorithm used for truncation of the two-site update
See also
Used as the algorithm argument of find_groundstate, leading_boundary, and approximate.
MPSKit.GradientGrassmann Type
struct GradientGrassmann{O<:OptimKit.OptimizationAlgorithm, F} <: MPSKit.AlgorithmVariational gradient-based optimization algorithm that keeps the MPS in left-canonical form, as points on a Grassmann manifold. The optimization is then a Riemannian gradient descent with a preconditioner to induce the metric from the Hilbert space inner product.
Constructors
GradientGrassmann(; kwargs...)Keyword Arguments
method = ConjugateGradient: instance of optimization algorithm, or type of optimization algorithm to constructfinalize!: finalizer algorithmtol = Defaults.tol: tolerance for convergence criteriummaxiter = Defaults.maxiter: maximum amount of iterationsverbosity = Defaults.verbosity - 1: level of information display
Fields
method::OptimKit.OptimizationAlgorithm: optimization algorithmfinalize!::Any: callback function applied after each iteration, of signaturefinalize!(x, f, g, numiter) -> x, f, g
See also
Used as the algorithm argument of find_groundstate and leading_boundary.
References
source