Reference of C++ interface
The C++ interface was semi-automatically ported to Julia, for which a parser was written. It aims to bring almost the full functionality of ConicBundle to Julia; however, the way of implementation is neither efficient nor always in a Julian style. The documentation was extracted verbatim from the CPP code, hence no markdown profits will be available. This basic interface can be improved in the future for example by exploiting memory alignment of structs in Julia and C++, which would allow to inline lots of setters and getters instead of having to call external functions.
Note that the C++ interface requires you to manually keep track of memory. Every allocated object must be freed by an appropriate call to cb_destroy!
. This is in contrast to the automatically managed CBProblem
from the C interface.
ConicBundle.CBAFTData
— TypeCBAFTData(start_modification_id::Integer = 0)
calls clear()
ConicBundle.CBAFTModel
— TypeCBAFTModel(in_model::Union{<:CBSumBlockModel,Nothing}, inaft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing, start_modification_id::Integer = 0, in_model_is_owner::Bool = false)
sets @a model to @a inmodel and @a modelisowner to @a inmodelisowner (or false if @a inmodel==0) and calls clear with parameters (inaft,startmodification_id)
ConicBundle.CBAFTModification
— TypeCBAFTModification(var_olddim::Integer = 0, row_olddim::Integer = 0, ignore_groundset_modification::Bool = false)
initialize and reset to an unmodified object currently having varolddim columns and rowolddim rows
ConicBundle.CBAffineFunctionTransformation
— TypeCBAffineFunctionTransformation(in_fun_coeff::Real = 1., in_fun_offset::Real = 0., in_linear_cost::Union{<:CBMatrix,Nothing} = nothing, in_arg_offset::Union{<:CBMatrix,Nothing} = nothing, in_arg_trafo::Union{<:CBSparsemat,Nothing} = nothing, in_model_calls_delete::Bool = true, incr::Integer = -1)
calls init()
ConicBundle.CBBlockPSCPrimal
— TypeCBBlockPSCPrimal(pr::CBBlockPSCPrimal, factor::Real = 1.)
copy constructor
ConicBundle.CBBoxData
— TypeCBBoxData(fun_factor::Real = 1., fun_task::CBFunctionTask = cbft_objective_function)
initializes BundleData, sets center_primal to NULL and calls clear()
ConicBundle.CBBoxModel
— TypeCBBoxModel(fo::Union{<:CBBoxOracle,Nothing}, fun_factor::Real = 1., fun_task::CBFunctionTask = cbft_objective_function, cbinc::Integer = -1)
construct a model for the MatrixBoxOracle pointed to by @a fo
ConicBundle.CBBoxModelParameters
— TypeCBBoxModelParameters(cbinc::Integer = -1)
default constructor
CBBoxModelParameters(bp::CBBundleParameters, cbinc::Integer = -1)
copy constructor for BundleParameters
CBBoxModelParameters(sms::CBBoxModelParameters)
copy constructor
ConicBundle.CBBoxOracle
— TypeCBBoxOracle(in_lb::CBMatrix, in_ub::CBMatrix)
constructor initializing lower and upper bounds (must have the same dimesnion, not checked)
ConicBundle.CBBundleDLRTrustRegionProx
— TypeCBBundleDLRTrustRegionProx(dim::Integer = 0, vp::Union{<:CBVariableMetricSelection,Nothing} = nothing, local_metric::Bool = false, inc::Integer = -1)
default constructor with empty H (equal to zero) and the dimension as argument
CBBundleDLRTrustRegionProx(in_D::CBMatrix, in_vecH::CBMatrix, vp::Union{<:CBVariableMetricSelection,Nothing} = nothing, local_metric::Bool = false, inc::Integer = -1)
constructs H=(D+weightu)+vecH*transpose(vecH) with weightu=1., so inD must be a column vector with same dimension as rows in invecH
ConicBundle.CBBundleDenseTrustRegionProx
— TypeCBBundleDenseTrustRegionProx(Hin::CBSymmatrix, vp::Union{<:CBVariableMetricSelection,Nothing} = nothing, local_metric::Bool = false, bounds_scaling::Bool = false, cbinc::Integer = -1)
initialize to this Matrix and set the variable_metric option (false by default)
CBBundleDenseTrustRegionProx(dim::Integer = 0, vp::Union{<:CBVariableMetricSelection,Nothing} = nothing, local_metric::Bool = false, bounds_scaling::Bool = false, cbinc::Integer = -1)
initialize H to the zero Matrix of this dimension (on the diagonal the weight will be added) and set the variable_metric option (false by default)
ConicBundle.CBBundleDiagonalTrustRegionProx
— TypeCBBundleDiagonalTrustRegionProx(Din::CBMatrix, vp::Union{<:CBVariableMetricSelection,Nothing} = nothing, local_scaling::Bool = false, bounds_scaling::Bool = false, cbinc::Integer = -1)
initialize to this diagonal matrix
CBBundleDiagonalTrustRegionProx(dim::Integer, d::Real, vp::Union{<:CBVariableMetricSelection,Nothing} = nothing, local_scaling::Bool = false, bounds_scaling::Bool = false, cbinc::Integer = -1)
initialize to a diaognal matrix d*identity of dimesion dim
CBBundleDiagonalTrustRegionProx(dim::Integer = 0, vp::Union{<:CBVariableMetricSelection,Nothing} = nothing, local_scaling::Bool = false, bounds_scaling::Bool = false, cbinc::Integer = -1)
initialize to a zero diaognal matrix of dimesion dim
ConicBundle.CBBundleHKWeight
— TypeCBBundleHKWeight(mRin::Real = .5, bwp::Union{<:CBBundleWeight,Nothing} = nothing, incr::Integer = -1)
the parameter mRin gets the value for accepting descent steps, bwp may be used to communicate the previous values use by another routine
ConicBundle.CBBundleIdProx
— TypeCBBundleIdProx(d::Integer = 0, w::Real = 1., cbinc::Integer = -1)
initialize with dimension and weight
ConicBundle.CBBundleLowRankTrustRegionProx
— TypeCBBundleLowRankTrustRegionProx(dim::Integer = 0, vp::Union{<:CBVariableMetricSelection,Nothing} = nothing, local_metric::Bool = false, inc::Integer = -1)
default constructor with empty H (equal to zero) and the dimension as argument
CBBundleLowRankTrustRegionProx(in_vecH::CBMatrix, in_lamH::CBMatrix, vp::Union{<:CBVariableMetricSelection,Nothing} = nothing, local_metric::Bool = false, inc::Integer = -1)
constructs H=vecHDiag(lamH)transpose(vecH), so inlamH must be a column vector with same dimension as columns in invecH and the row dimension of invecH must match the design space, invecH is assumed orthogonal
ConicBundle.CBBundleRQBWeight
— TypeCBBundleRQBWeight(bwp::Union{<:CBBundleWeight,Nothing} = nothing, incr::Integer = -1)
bwp may be used to communicate the previous values used by another routine
CBBundleRQBWeight(m1::Real, m2::Real = .2, m3::Real = 1., eta::Real = 1e-6, bwp::Union{<:CBBundleWeight,Nothing} = nothing, incr::Integer = -1)
bwp may be used to communicate the previous values used by another routine
ConicBundle.CBBundleSolver
— TypeCBBundleSolver(dim::Integer, bp::Union{<:CBBundleModel,Nothing} = nothing, incr::Integer = -1)
calls initialize(CHMatrixClasses::Integer, BundleModel*)
CBBundleSolver(gs::Union{<:CBGroundset,Nothing}, bp::Union{<:CBBundleModel,Nothing} = nothing, incr::Integer = -1)
calls initialize(Groundset,BundleModel)
ConicBundle.CBBundleTerminator
— TypeCBBundleTerminator(incr::Integer = -1)
calls set_defaults() and clear()
ConicBundle.CBCFunction
— TypeCBCFunction(fk::Union{<:AbstractVector{Nothing},Nothing}, fp::Ptr{Cvoid}, se::Ptr{Cvoid} = 0, prdim::Integer = 0)
constructor
ConicBundle.CBCFunctionMinorantExtender
— TypeCBCFunctionMinorantExtender(fk::Union{<:AbstractVector{Nothing},Nothing}, se::Ptr{Cvoid})
constructor
ConicBundle.CBCMgramdense
— TypeCBCMgramdense(Ain::CBMatrix, pos::Bool = true, cip::Union{<:CBCoeffmatInfo,Nothing} = nothing)
copy Ain and possibly, the flag for positive/negative and store the user information
ConicBundle.CBCMgramsparse
— TypeCBCMgramsparse(Ain::CBSparsemat, pos::Bool = true, cip::Union{<:CBCoeffmatInfo,Nothing} = nothing)
copy Ain, the flag for positive/negative and store the user information
ConicBundle.CBCMgramsparse_withoutdiag
— TypeCBCMgramsparse_withoutdiag(Ain::CBSparsemat, pos::Bool = true, cip::Union{<:CBCoeffmatInfo,Nothing} = nothing)
copy Ain, the flag for positive/negative and store the user information
ConicBundle.CBCMlowrankdd
— TypeCBCMlowrankdd(Ain::CBMatrix, Bin::CBMatrix, cip::Union{<:CBCoeffmatInfo,Nothing} = nothing)
copy Ain, Bin and store the user information
ConicBundle.CBCMlowranksd
— TypeCBCMlowranksd(Ain::CBSparsemat, Bin::CBMatrix, cip::Union{<:CBCoeffmatInfo,Nothing} = nothing)
copy Ain, Bin and store the user information
ConicBundle.CBCMlowrankss
— TypeCBCMlowrankss(Ain::CBSparsemat, Bin::CBSparsemat, cip::Union{<:CBCoeffmatInfo,Nothing} = nothing)
copy Ain, Bin and store the user information
ConicBundle.CBCMsingleton
— TypeCBCMsingleton(innr::Integer, ini::Integer, inj::Integer, inval::Real, cip::Union{<:CBCoeffmatInfo,Nothing} = nothing)
the order is innr and the nonzero element (ini,inj) has values inval
ConicBundle.CBCMsymdense
— TypeCBCMsymdense(Ain::CBSymmatrix, cip::Union{<:CBCoeffmatInfo,Nothing} = nothing)
copy Ain and possibly store the user information
ConicBundle.CBCMsymsparse
— TypeCBCMsymsparse(Ain::CBSparsesym, cip::Union{<:CBCoeffmatInfo,Nothing} = nothing)
copy Ain and possibly store the user information, set use_sparsemult to true if at least half the rows will be zero
ConicBundle.CBClock
— TypeCBClock()
calls start()
ConicBundle.CBCoeffmatInfo
— TypeCBCoeffmatInfo(sf::Real = 1.)
default value is 1 for no scaling
ConicBundle.CBDensePSCPrimal
— TypeCBDensePSCPrimal()
initialize to a symmetric matrix of size 0
CBDensePSCPrimal(symmat::CBDensePSCPrimal, factor::Real = 1.)
copy constructor
CBDensePSCPrimal(symmat::CBSymmatrix, factor::Real = 1.)
copy constructor from a CHMatrixClasses::Symmatrix
CBDensePSCPrimal(n::Integer)
direct size initialization to a zero matrix
ConicBundle.CBGB_rand
— TypeCBGB_rand(seed::Integer = 1)
calls init(seed)
ConicBundle.CBGramSparsePSCPrimal
— TypeCBGramSparsePSCPrimal(sps::CBSparsesym, factor::Real = 1.)
initialize to the given sparse symmetric matrix, the gram part is zero
CBGramSparsePSCPrimal(pr::CBGramSparsePSCPrimal, factor::Real = 1.)
copy constructor
ConicBundle.CBGroundsetModification
— TypeCBGroundsetModification(var_olddim::Integer = 0, incr::Integer = -1)
constructor, calls modification constructor
ConicBundle.CBIndexmatrix
— TypeCBIndexmatrix()
empty matrix
CBIndexmatrix(A::CBIndexmatrix, d::Integer = 1)
copy constructor, this=dA
CBIndexmatrix(param0::AbstractRange{<:Integer})
generate a column vector holding the indices of this #CHMatrixClasses::Range
CBIndexmatrix(nr::Integer, nc::Integer)
@brief generate a matrix of size nr x nc but WITHOUT initializing the memory
If initializing the memory externally and CONICBUNDLE_DEBUG is defined, please use set_init() via matrix.set_init(true) in order to avoid warnings concerning improper initialization
CBIndexmatrix(nr::Integer, nc::Integer, d::Integer)
generate a matrix of size nr x nc initializing all elements to the value d
CBIndexmatrix(nr::Integer, nc::Integer, dp::Union{<:AbstractVector{Cint},Nothing})
generate a matrix of size nr x nc initializing the elements from the (one dimensional) array dp with increment incr
CBIndexmatrix(param0::CBMatrix)
copy with rounding
CBIndexmatrix(param0::CBSparsemat)
copy with rounding
ConicBundle.CBLPGroundset
— TypeCBLPGroundset()
calls clear() with the same parameters
CBLPGroundset(dim::Integer, lbyp::Union{<:CBMatrix,Nothing} = nothing, ubyp::Union{<:CBMatrix,Nothing} = nothing, Gp::Union{<:CBSparsemat,Nothing} = nothing, rhslbp::Union{<:CBMatrix,Nothing} = nothing, rhsubp::Union{<:CBMatrix,Nothing} = nothing, start_val::Union{<:CBMatrix,Nothing} = nothing, costs::Union{<:CBMatrix,Nothing} = nothing, offset::Real = 0., in_groundset_id::Integer = 0)
allows to specify the groundset in the constructor, zero is allowed everywhere
ConicBundle.CBMatrix
— TypeCBMatrix()
empty matrix
CBMatrix(param0::CBMatrix, d::Real = 1., atrans::Integer = 0)
copy constructor, this=dA
CBMatrix(param0::AbstractRange{<:Real}, param0_tol::Real = 1e-8)
generate a column vector holding the elements of this Realrange
CBMatrix(nr::Integer, nc::Integer)
@brief generate a matrix of size nr x nc but WITHOUT initializing the memory
If initializing the memory externally and CONICBUNDLE_DEBUG is defined, please use set_init() via matrix.set_init(true) in order to avoid warnings concerning improper initialization
CBMatrix(nr::Integer, nc::Integer, d::Real)
generate a matrix of size nr x nc initializing all elements to the value d
CBMatrix(nr::Integer, nc::Integer, dp::Union{<:AbstractVector{Cdouble},Nothing}, d::Real = 1.)
generate a matrix of size nr x nc initializing the elements from the (one dimensional) array dp with increment incr and scaled by d
CBMatrix(A::CBIndexmatrix, d::Real = 1.)
(this)=dA
CBMatrix(A::CBSparsemat, d::Real = 1.)
(this)=dA
CBMatrix(S::CBSymmatrix, d::Real = 1.)
(this)=dA
CBMatrix(param0::CBSparsesym, d::Real = 1.)
(this)=dA
ConicBundle.CBMatrixCBSolver
— TypeCBMatrixCBSolver(print_level::Integer = 0)
default constructor allows to set output level options from start (see also set_out())
ConicBundle.CBMicroseconds
— TypeCBMicroseconds()
default constructor, value 0
CBMicroseconds(infty::Bool)
constructor for setting value to 0 or infinity
CBMicroseconds(m::CBMicroseconds)
copy constructor
CBMicroseconds(secs::Integer, msecs::Integer = 0)
specify directly seconds and microseconds (in [0,10^6], no range check!)
CBMicroseconds(hours::Integer, minutes::Integer, secs::Integer, micros::Integer)
convert hours, minutes, secs, micros to Microseconds (no range check!)
ConicBundle.CBMinRes
— TypeCBMinRes(pril::Integer = -1)
default constructor
ConicBundle.CBMinorant
— TypeCBMinorant(offset::Real, subg::CBDVector, primal::Union{<:CBPrimalData,Nothing} = nothing, offset_at_origin::Bool = false)
@brief Minorant constructor for a dense subgradient specified via a DVector
Suppose in the evaluation of your oracle at the current point \f$y\f$ you determine a subgradient \f$s\f$ for the subgradient inequality \f[ f(z)\ge f(y)+\langle s,z-y\rangle\quad\forall z\in\mathbf{R}^m, \f] then use \f$f(y)\f$ for @a offset and \f$s\f$ in the form of a DVector in @a subg and keep the default value @a offset_at_origin == false. If, on the other hand, your oracle implements a support function for some compact set \f$\mathcal{X}\subset\mathbf{R}^m\f$ like \f[ f(y) = \max_{x\in\mathcal{X}} x^\top y\f] then it is actually more efficient to return 0 for @a offset, a maximizing \f$x\f$ in @ subg and to put @a offset_at_origin = true. You may also pass over a PrimalData object in primal that will be then be owned and later deleted by the minorant and aggregated along with the minornat
CBMinorant(offset::Real, subg_val::CBDVector, subg_ind::CBIVector, primal::Union{<:CBPrimalData,Nothing} = nothing, offset_at_origin::Bool = false)
@brief Minorant constructor for a sparse subgradient where the nonzero values are specified by DVector and the corresponding indices by an IVector
Suppose in the evaluation of your oracle at the current point \f$y\f$ you determine a subgradient \f$s\f$ with few nonzeros for the subgradient inequality \f[ f(z)\ge f(y)+\langle s,z-y\rangle\quad\forall z\in\mathbf{R}^m, \f] then use \f$f(y)\f$ for @a offset and pass \f$s\f$ by giving the nonzeros in the DVector @a subg_val, the corresponding indices in a IVector of the same length in @a subg_ind and keep the default value @a offset_at_origin == false. If, on the other hand, your oracle implements a support function for some compact set \f$\mathcal{X}\subset\mathbf{R}^m\f$ like \f[ f(y) = \max_{x\in\mathcal{X}} x^\top y\f] then it is actually more efficient to return 0 for @a offset, a sparse maximizing \f$x\f$ in @a subg_val and @a subg_ind and to put @a offset_at_origin = true. You may also pass over a PrimalData object in primal that will be then be owned and later deleted by the minorant and aggregated along with the minornat
CBMinorant(offset_at_origin::Bool = true, offset::Real = 0., n_elementes::Integer = 0, coeffs::Union{<:AbstractVector{Real},Nothing} = nothing, indices::Union{<:AbstractVector{Integer},Nothing} = nothing, scale_val::Real = 1., primal::Union{<:CBPrimalData,Nothing} = nothing)
@brief default initializes a zero minorant, see full explanation otherwise; NOTE: if the offset supplied by the minorant refers to the evaluation point (i.e., if it is the function value at the point of evaluation), set @a offsetatorigin = false !
In many applications, in particular for Lagrangian relaxation, the offset is more naturally given for the origin, and giving it this way also reduces computational cost a bit, so @a offsetatorigin = true is the suggested default. If, however, the minorant arises from a subgradient inequality by evaluation in the current point, you may as well give the function value as offset directly and set @a offsetatorigin=false;
The data specifying the minorant may be set here or (part of) it may be entered/added later. The meaning of the other parameters is as follows.
@a offset gives the constant value (if offsetatorigin = false then relative to the evaluation point)
@a n_elements gives the number of elements specified by @a coeffs (and possibly indices), but if @a coeffs == NULL it just asks to reserve space for that many coefficients
If @a coeffs is not NULL, it points to an array of doubles of size at least @a nelements. If @a indices == NULL then coeff[i] belongs to position i for i=0 to nelements-1, otherwise coeff[i] belongs to position indices[i]. All data is copied, the arrays are not modified, not used later and not deleted here.
The entire input data (offset and coefficients) is multplied by @a scaleval to give the final minorant (scaleval is not memorized internally but executed immediately).
If the minorant arises from @a PrimalData and the primal data should be aggregated along, it may be entered here or in the routine Minorant::set_primal(). The object pointed to is then owned by Minorant and will be deleted by Minorant on its destruction.
CBMinorant(mnrt::Union{<:CBMinorant,Nothing}, factor::Real = 1., with_primal::Bool = false)
they main purpose of this constructor is to allow easy cloning for derived classes
ConicBundle.CBMinorantPointer
— TypeCBMinorantPointer()
declares the pointer empty
CBMinorantPointer(in_md::Union{<:CBMinorantUseData,Nothing})
initialize this to point to in_md
CBMinorantPointer(mp::CBMinorantPointer)
calls new_data
CBMinorantPointer(mp::CBMinorantPointer, factor::Real)
calls init(const MinorantPointer&,CHMatrixClasses::Real)
CBMinorantPointer(mnrt::Union{<:CBMinorant,Nothing}, modification_id::Integer, factor::Real = 1.)
calls init(Minorant*,CHMatrixClasses::Integer,CHMatrixClasses::Real)
ConicBundle.CBMinorantUseData
— TypeCBMinorantUseData(mp::Union{<:CBMinorant,Nothing}, sval::Real, modif_id::Integer)
constructor for a new minorant with scaling @a sval and modification id @a modfi_id
CBMinorantUseData(mdp::Union{<:CBMinorantUseData,Nothing}, sval::Real)
constructor for a recursively containing further MinorantUseData with an additional scaling factor @a sval
ConicBundle.CBMode
— Typeenum CBMode
cbm_root
cbm_child
cbm_inactive
cbm_unavailable
ConicBundle.CBModelUpdate
— Typeenum CBModelUpdate
cbmu_new_subgradient
cbmu_descent_step
cbmu_null_step
ConicBundle.CBNNCBoxSupportFunction
— TypeCBNNCBoxSupportFunction(lb::CBMatrix, ub::CBMatrix, incr::Integer = -1)
intialize with lower bounds vector lb and upper bounds vector ub (and output options), both must be column vectors of the same length and lb<=ub componentwise, length 0 results in objective value 0
ConicBundle.CBNNCBoxSupportMinorantExtender
— TypeCBNNCBoxSupportMinorantExtender(fun::Union{<:CBNNCBoxSupportFunction,Nothing})
the NNCBoxSupportFunction pointed to has to be valid for the livetime of this object
ConicBundle.CBNNCBoxSupportModification
— TypeCBNNCBoxSupportModification(var_olddim::Integer = 0, incr::Integer = -1)
constructor, calls modification constructor
ConicBundle.CBNNCData
— TypeCBNNCData(fun_factor::Real = 1., fun_task::CBFunctionTask = cbft_objective_function)
initializes BundleData, sets center_primal to NULL and calls clear()
ConicBundle.CBNNCModel
— TypeCBNNCModel(fo::Union{<:CBMatrixFunctionOracle,Nothing}, fun_factor::Real = 1., fun_task::CBFunctionTask = cbft_objective_function, cbinc::Integer = -1)
construct a model for the MatrixFunctionOracle pointed to by @a fo
ConicBundle.CBNNCModelParameters
— TypeCBNNCModelParameters(modelsize::Integer, bundlesize::Integer = 10, updaterule::Integer = 0, incr::Integer = -1)
constructor for size parameters
CBNNCModelParameters(bp::CBBundleParameters, incr::Integer = -1)
copy constructor for BundleParameters
CBNNCModelParameters(sms::CBNNCModelParameters)
copy constructor
ConicBundle.CBPCG
— TypeCBPCG(pril::Integer = -1)
default constructor
ConicBundle.CBPSCAffineFunction
— TypeCBPSCAffineFunction(C::CBSparseCoeffmatMatrix, opAt::CBSparseCoeffmatMatrix, generating_primal::Union{<:CBPSCPrimal,Nothing} = nothing, incr::Integer = -1)
@brief initialize the PSCAffineFunction with its matrices and possible a generating_primal
C and opAt define the constant (block-)offset and the linear (block-)matrix function as described in the general text of PSCAffineFunction
generating_primal defines in what form primal matrices should be aggregated. If the argument is NULL then no primal aggregation will take place. The control over the generating primal is passed over to this. This will delete an existing generating primal whenever a new generating primal is set or upon destruction.
The final two arguments allow to set the output, see CBout.
ConicBundle.CBPSCAffineMinorantExtender
— TypeCBPSCAffineMinorantExtender(amf::Union{<:CBPSCAffineFunction,Nothing})
the PSCAffineFunction pointed to has to be valid for the livetime of this object
ConicBundle.CBPSCAffineModification
— TypeCBPSCAffineModification(var_olddim::Integer, block_olddim::CBIndexmatrix, incr::Integer = 0)
calls clear() with these parameters
ConicBundle.CBPSCBundleParameters
— TypeCBPSCBundleParameters()
default constructor
CBPSCBundleParameters(bp::CBBundleParameters)
"copy" constructor
ConicBundle.CBPSCData
— TypeCBPSCData(fun_factor::Real = 1., fun_task::CBFunctionTask = cbft_objective_function)
calls clear()
ConicBundle.CBPSCModel
— TypeCBPSCModel(fo::Union{<:CBPSCOracle,Nothing}, fun_factor::Real = 1., fun_task::CBFunctionTask = cbft_objective_function, cbinc::Integer = -1)
construct a model for the MatrixFunctionOracle pointed to by @a fo
ConicBundle.CBPSCModelParameters
— TypeCBPSCModelParameters(modelsize::Integer, bundlesize::Integer = 10, updaterule::Integer = 0, incr::Integer = -1)
constructor for size parameters
CBPSCModelParameters(bp::CBBundleParameters, incr::Integer = -1)
copy constructor for BundleParameters
CBPSCModelParameters(sms::CBPSCModelParameters)
copy constructor
ConicBundle.CBPSCVariableMetricSelection
— TypeCBPSCVariableMetricSelection(cbincr::Integer = -1)
default constructor
ConicBundle.CBPrimalMatrix
— TypeCBPrimalMatrix()
empty matrix
CBPrimalMatrix(nr::Integer, nc::Integer)
@brief generate a matrix of size nr x nc but WITHOUT initializing the memory
If initializing the memory externally and CONICBUNDLE_DEBUG is defined, please use set_init() via matrix.set_init(true) in order to avoid warnings concerning improper initialization
CBPrimalMatrix(r::Integer, c::Integer, d::Real)
generate a matrix of size nr x nc initializing all elements to the value d
CBPrimalMatrix(pm::CBPrimalMatrix)
copy constructor, *this=pm
CBPrimalMatrix(pm::CBMatrix)
copy constructor, *this=pm
ConicBundle.CBPsqmr
— TypeCBPsqmr(pril::Integer = -1)
default constructor
ConicBundle.CBQPConeModelBlock
— TypeCBQPConeModelBlock(cbinc::Integer = -1)
default constructor
ConicBundle.CBQPDirectKKTSolver
— TypeCBQPDirectKKTSolver(in_factorize_ABC::Bool = false, cbinc::Integer = -1)
default constructor
ConicBundle.CBQPIterativeKKTHASolver
— TypeCBQPIterativeKKTHASolver(insolver::Union{<:CBIterativeSolverObject,Nothing}, inprecond::Union{<:CBQPKKTPrecondObject,Nothing} = nothing, cbinc::Integer = -1)
default constructor
ConicBundle.CBQPIterativeKKTHAeqSolver
— TypeCBQPIterativeKKTHAeqSolver(insolver::Union{<:CBIterativeSolverObject,Nothing}, inprecond::Union{<:CBQPKKTPrecondObject,Nothing} = nothing, cbinc::Integer = -1)
default constructor
ConicBundle.CBQPKKTSolverComparison
— TypeCBQPKKTSolverComparison(cbinc::Integer = -1)
default constructor
ConicBundle.CBQPKKTSubspaceHPrecond
— TypeCBQPKKTSubspaceHPrecond(inmethod::Integer = 0, cbinc::Integer = -1)
default constructor
ConicBundle.CBQPSolver
— TypeCBQPSolver(cbinc::Integer = -1)
default constructor
ConicBundle.CBQPSolverParameters
— TypeCBQPSolverParameters(incr::Integer = -1)
default constructor
ConicBundle.CBQPSumModelBlock
— TypeCBQPSumModelBlock(cbincr::Integer = -1)
default constructor
ConicBundle.CBSOCData
— TypeCBSOCData(fun_factor::Real = 1., fun_task::CBFunctionTask = cbft_objective_function)
calls clear()
ConicBundle.CBSOCModel
— TypeCBSOCModel(fo::Union{<:CBSOCOracle,Nothing}, fun_factor::Real = 1., fun_task::CBFunctionTask = cbft_objective_function, cbinc::Integer = -1)
construct a model for the MatrixFunctionOracle pointed to by @a fo
ConicBundle.CBSOCModelParameters
— TypeCBSOCModelParameters(modelsize::Integer, bundlesize::Integer = 10, updaterule::Integer = 0, incr::Integer = -1)
constructor for size parameters
CBSOCModelParameters(bp::CBBundleParameters, incr::Integer = -1)
copy constructor for BundleParameters
CBSOCModelParameters(sms::CBSOCModelParameters)
copy constructor
ConicBundle.CBSOCSupportFunction
— TypeCBSOCSupportFunction(socdim::Integer, incr::Integer = -1)
initialize with dimension >= 1 (and output options)
ConicBundle.CBSOCSupportMinorantExtender
— TypeCBSOCSupportMinorantExtender(fun::Union{<:CBSOCSupportFunction,Nothing})
the SOCSupportFunction pointed to has to be valid for the livetime of this object
ConicBundle.CBSOCSupportModification
— TypeCBSOCSupportModification(var_olddim::Integer = 0, incr::Integer = -1)
constructor, calls modification constructor
ConicBundle.CBSparseCoeffmatMatrix
— TypeCBSparseCoeffmatMatrix(incr::Integer = -1)
set the output and call clear()
CBSparseCoeffmatMatrix(S::CBSparseCoeffmatMatrix, incr::Integer = -1)
set the output and call clear()
CBSparseCoeffmatMatrix(in_block_dim::CBIndexmatrix, in_col_dim::Integer, block_ind::Union{<:CBIndexmatrix,Nothing} = nothing, col_ind::Union{<:CBIndexmatrix,Nothing} = nothing, coeff_vec::Union{<:CBCoeffmatVector,Nothing} = nothing, incr::Integer = -1)
set the output and call init() for the given sparse information
ConicBundle.CBSparsePSCPrimal
— TypeCBSparsePSCPrimal(sps::CBSparsesym, factor::Real = 1.)
copy constructor from a CHMatrixClasses::Sparssym, only the support of this matrix will be used in all Gram operations
CBSparsePSCPrimal(pr::CBSparsePSCPrimal, factor::Real = 1.)
copy constructor, only the same support will be used in all Gram operations
ConicBundle.CBSparsemat
— TypeCBSparsemat()
empty matrix
CBSparsemat(A::CBSparsemat, d::Real = 1.)
copy constructor, this=dA, abs(values)<tol are removed from the support
CBSparsemat(nr::Integer, nc::Integer)
initialize to zero-matrix of size nr*nc
CBSparsemat(nr::Integer, nc::Integer, nz::Integer, ini::Union{<:AbstractVector{Cint},Nothing}, inj::Union{<:AbstractVector{Cint},Nothing}, va::Union{<:AbstractVector{Cdouble},Nothing})
initialize to size nr*nc and nz nonzeros so that this(ini[i],inj[i])=val[i] for i=0,..,nz-1; multiple elements are summed up.
CBSparsemat(nr::Integer, nc::Integer, nz::Integer, ini::CBIndexmatrix, inj::CBIndexmatrix, va::CBMatrix)
initialize to size nr*nc and nz nonzeros so that this(ini(i),inj(i))=val(i) for i=0,..,nz-1; multiple elements are summed up.
CBSparsemat(A::CBMatrix, d::Real = 1.)
initialize to this=dA, abs(values)<tol are removed from the support
CBSparsemat(A::CBIndexmatrix, d::Real = 1.)
initialize to this=dA, zeros are removed from the support
CBSparsemat(A::CBSymmatrix, d::Real = 1.)
initialize to this=dA, abs(values)<tol are removed from the support
CBSparsemat(A::CBSparsesym, d::Real = 1.)
initialize to this=dA
ConicBundle.CBSparsesym
— TypeCBSparsesym()
empty matrix
CBSparsesym(A::CBSparsesym, d::Real = 1.)
copy constructor, this=dA
CBSparsesym(nr::Integer)
initialize to zero-matrix of size nr*nr
CBSparsesym(nr::Integer, nz::Integer, ini::Union{<:AbstractVector{Cint},Nothing}, inj::Union{<:AbstractVector{Cint},Nothing}, va::Union{<:AbstractVector{Cdouble},Nothing})
initialize to size nr*nr and nz nonzeros so that this(ini[i],inj[i])=val[i] for i=0,..,nz-1; specify only one of (i,j) and (j,i), multiple elements are summed up.
CBSparsesym(nr::Integer, nz::Integer, ini::CBIndexmatrix, inj::CBIndexmatrix, va::CBMatrix)
initialize to size nr*nr and nz nonzeros so that this(ini(i),inj(i))=val[i] for i=0,..,nz-1; specify only one of (i,j) and (j,i), multiple elements are summed up.
CBSparsesym(param0::CBMatrix, d::Real = 1.)
initialize to this=d(A+transpose(A))/2., abs(values)<tol are removed from the support
CBSparsesym(param0::CBIndexmatrix, d::Real = 1.)
initialize to this=d(A+transpose(A))/2., zeros are removed from the support
CBSparsesym(param0::CBSymmatrix, d::Real = 1.)
initialize to this=Ad, abs(values)<tol are removed from the support
CBSparsesym(param0::CBSparsemat, d::Real = 1.)
initialize to this=d(A+transpose(A))/2.
ConicBundle.CBSumBundle
— TypeCBSumBundle(sb::CBSumBundle)
copy constructor
ConicBundle.CBSumBundleParameters
— TypeCBSumBundleParameters(modelsize::Integer, bundlesize::Integer = 10, updaterule::Integer = 0, incr::Integer = -1)
constructor for customized parameters
CBSumBundleParameters(sbp::CBSumBundleParameters)
copy constructor
ConicBundle.CBSumModel
— TypeCBSumModel()
constructor
ConicBundle.CBSymmatrix
— TypeCBSymmatrix()
empty matrix
CBSymmatrix(A::CBSymmatrix, d::Real = 1.)
copy constructor, this=dA
CBSymmatrix(nr::Integer)
@brief generate a matrix of size nr x nr but WITHOUT initializing the memory
If initializing the memory externally and CONICBUNDLE_DEBUG is defined, please use set_init() via matrix.set_init(true) in order to avoid warnings concerning improper initialization
CBSymmatrix(nr::Integer, d::Real)
generate a matrix of size nr x nr initializing all elements to the value d
CBSymmatrix(nr::Integer, dp::Union{<:AbstractVector{Cdouble},Nothing})
generate a matrix of size nr x nr initializing the elements from the (one dimensional) array dp, which must have the elements arranged consecutively in internal order
CBSymmatrix(param0::CBMatrix, d::Real = 1.)
(this)=d(A+transpose(A))/2.
CBSymmatrix(param0::CBIndexmatrix, d::Real = 1.)
(this)=d(A+transpose(A))/2.
CBSymmatrix(A::CBSparsesym, d::Real = 1.)
(this)=dA
ConicBundle.CBUQPConeModelBlock
— TypeCBUQPConeModelBlock(cbinc::Integer = -1)
default constructor
ConicBundle.CBUQPSolver
— TypeCBUQPSolver(cbinc::Integer = -1)
default constructor
ConicBundle.CBUQPSumModelBlock
— TypeCBUQPSumModelBlock(incr::Integer = -1)
default constructor
ConicBundle.CBUnconstrainedGroundset
— TypeCBUnconstrainedGroundset(indim::Integer = 0, start_val::Union{<:CBMatrix,Nothing} = nothing, costs::Union{<:CBMatrix,Nothing} = nothing, offset::Real = 0., in_groundset_id::Integer = 0)
calls clear() with the same parameters
ConicBundle.CBVariableMetricSVDSelection
— TypeCBVariableMetricSVDSelection(cbincr::Integer = -1)
default constructor
CBVariableMetricSVDSelection(in_n_latest_minorants::Integer, in_selection_method::Integer, in_oldfactor::Real = 0., cbincr::Integer = -1)
constructor for specifying values for nlatestminorants and selection_method
ConicBundle.cb_Aasen_Lsolve
— Functioncb_Aasen_Lsolve(self::CBSymmatrix, x::CBMatrix)
computes, after Aasen_factor into LTL^T was executed, the solution to Lx=rhs; rhs is overwritten by the solution; always returns 0;
ConicBundle.cb_Aasen_Ltsolve
— Functioncb_Aasen_Ltsolve(self::CBSymmatrix, x::CBMatrix)
computes, after Aasen_factor into LTL^T was executed, the solution to L^Tx=rhs; rhs is overwritten by the solution; always returns 0;
ConicBundle.cb_Aasen_factor!
— Functioncb_Aasen_factor!(self::CBSymmatrix, piv::CBIndexmatrix)
computes Aasen factorization LTL^T with pivoting, where L is unit lower triangular with first colum e_1 and T is tridiagonal; (this) is overwritten by the factorization, with column i of L being stored in column i-1 of (this); always returns 0;
ConicBundle.cb_Aasen_solve
— Functioncb_Aasen_solve(self::CBSymmatrix, x::CBMatrix, piv::CBIndexmatrix)
computes, after Aasenfactor into LTL^T was executed, the solution to (*oldthis)x=rhs; rhs is overwritten by the solution; if the solution fails due to division by zero (=system not solvable) the return value is -(rowindex+1) where this occured in the backsolve
ConicBundle.cb_Aasen_tridiagsolve
— Functioncb_Aasen_tridiagsolve(self::CBSymmatrix, x::CBMatrix)
computes, after Aasen_factor into LTL^T was executed, the solution to Tx=rhs; rhs is overwritten by the solution;if the solution fails due to division by zero (=system not solvable) the return value is -(rowindex+1) where this occured in the backsolve
ConicBundle.cb_B_times!
— Functioncb_B_times!(self::CBQPConeModelBlock, A::CBMatrix, C::CBMatrix, alpha::Real, beta::Real, Btrans::Integer, Atrans::Integer, startindex_model::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
C=betaC+alphaB*A where B and A may be transposed; carry out the model part of this beginning at startindex_model and beta for the part, that is added to (the calling routine has to make sure beta is not executed repeatedly if the same part is affected by other models as well)
cb_B_times!(self::CBQPSumModelBlock, A::CBMatrix, C::CBMatrix, alpha::Real, beta::Real, Btrans::Integer, Atrans::Integer, startindex_model::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
C=betaC+alphaB*A where B and A may be transposed; carry out the model part of this beginning at startindex_model and beta for the part, that is added to (the calling routine has to make sure beta is not executed repeatedly if the same part is affected by other models as well)
ConicBundle.cb_Chol_Lmult
— Functioncb_Chol_Lmult(self::CBSymmatrix, rhs::CBMatrix)
computes, after Chol_factor into LL^T was executed succesfully, L*rhs, overwriting rhs by the result; always returns 0;
ConicBundle.cb_Chol_Lsolve
— Functioncb_Chol_Lsolve(self::CBSymmatrix, rhs::CBMatrix)
computes, after Chol_factor into LL^T was executed succesfully, the solution to Lx=rhs; rhs is overwritten by the solution; always returns 0; NOTE: there is NO check against division by zero
ConicBundle.cb_Chol_Ltmult
— Functioncb_Chol_Ltmult(self::CBSymmatrix, rhs::CBMatrix)
computes, after Chol_factor into LL^T was executed succesfully, L^Trhs, overwriting rhs by the result; always returns 0;
ConicBundle.cb_Chol_Ltsolve
— Functioncb_Chol_Ltsolve(self::CBSymmatrix, rhs::CBMatrix)
computes, after Chol_factor into LL^T was executed succesfully, the solution to L^Tx=rhs; rhs is overwritten by the solution; always returns 0; NOTE: there is NO check against division by zero
ConicBundle.cb_Chol_factor!
— Functioncb_Chol_factor!(self::CBSymmatrix, tol::Real = 1e-10)
computes the Cholesky factorization, for positive definite matrices only, (*this) is overwritten by the factorization; there is no pivoting; returns 1 if diagonal elements go below tol
cb_Chol_factor!(self::CBSymmatrix, piv::CBIndexmatrix, tol::Real = 1e-10)
computes the Cholesky factorization with pivoting, for positive semidefinite matrices only, (*this) is overwritten by the factorization; on termination piv.dim() is the number of positive pivots>=tol; returns 1 if negative diagonal element is encountered during computations, 0 otherwise.
ConicBundle.cb_Chol_inverse
— Functioncb_Chol_inverse(self::CBSymmatrix, S::CBSymmatrix)
computes, after Cholfactor was executed succesfully, the inverse to (*oldthis) and stores it in S (numerically not too wise); always returns 0; NOTE: there is NO check against division by zero
cb_Chol_inverse(self::CBSymmatrix, S::CBSymmatrix, piv::CBIndexmatrix)
computes, after Cholfactor(Indexmatrix&,Real) with pivoting was executed succesfully, the inverse to (*oldthis) and stores it in S (the pivoting permutation is undone in S); NOTE: there is NO check against division by zero
ConicBundle.cb_Chol_scaleLi
— Functioncb_Chol_scaleLi(self::CBSymmatrix, S::CBSymmatrix)
computes, after Chol_factor into LL^T was executed succesfully, L^{-1}SL^{-T} overwriting S
ConicBundle.cb_Chol_scaleLt
— Functioncb_Chol_scaleLt(self::CBSymmatrix, S::CBSymmatrix)
computes, after Chol_factor into LL^T was executed succesfully, L^TSL overwriting S
ConicBundle.cb_Chol_solve
— Functioncb_Chol_solve(self::CBSymmatrix, x::CBMatrix)
computes, after Cholfactor was executed succesfully, the solution to (*oldthis)x=rhs; rhs is overwritten by the solution; always returns 0; NOTE: there is NO check against division by zero
cb_Chol_solve(self::CBSymmatrix, x::CBMatrix, piv::CBIndexmatrix)
computes, after Cholfactor(Indexmatrix&,Real) with pivoting was executed succesfully, the solution to (*oldthis)*x=rhs(piv); rhs is overwritten by the solution arranged in original unpermuted order; always returns 0; NOTE: there is NO check against division by zero
ConicBundle.cb_Diag
— Functioncb_Diag(A::CBMatrix)
returns a symmetric diagonal matrix S of order A.dim() with vec(A) on the diagonal, i.e., S(i,i)=A(i) for all i and S(i,j)=0 for i!=j
ConicBundle.cb_Gram_ip
— Functioncb_Gram_ip(self::CBSparseCoeffmatMatrix, ipvec::CBMatrix, P::CBMatrix, Lam::Union{<:CBMatrix,Nothing} = nothing, ind::Union{<:CBIndexmatrix,Nothing} = nothing)
computes the inner products of (selected) columns (which represent block diagonal symmetric matrices) with the Gram matrix PP^T (or, if Lam is given, PDiag(Lam)P^T) into the column vector ipvec(j)=ip(PP^T,A.column((*ind)(j)}) (j=0,...,ind->dim()-1); if ind==NULL, use all columns
cb_Gram_ip(self::CBSparseCoeffmatMatrix, P::CBMatrix, j::Integer)
computes the inner product of the block diagonal symmetric matrix stored in colummn j with the Gram matrix PP^T into ipval=ip(PP^T,A.column(j))
ConicBundle.cb_ItSys_mult!
— Functioncb_ItSys_mult!(self::CBQPIterativeKKTHAeqSolver, in_vec::CBMatrix, out_vec::CBMatrix)
returns outvec=(system matrix)*invec
cb_ItSys_mult!(self::CBQPIterativeKKTHASolver, in_vec::CBMatrix, out_vec::CBMatrix)
returns outvec=(system matrix)*invec
ConicBundle.cb_LDLfactor!
— Functioncb_LDLfactor!(self::CBSymmatrix, tol::Real = 1e-10)
computes LDLfactorization (implemented only for positive definite matrices so far, no pivoting), (*this) is overwritten by the factorization; returns 1 if diagonal elements go below tol
ConicBundle.cb_LDLinverse
— Functioncb_LDLinverse(self::CBSymmatrix, S::CBSymmatrix)
computes, after LDLfactor was executed succesfully, the inverse to (*old_this) and stores it in S (numerically not too wise); always returns 0; NOTE: there is NO check against division by zero
ConicBundle.cb_LDLsolve
— Functioncb_LDLsolve(self::CBSymmatrix, x::CBMatrix)
computes, after LDLfactor was executed succesfully, the solution to (*old_this)x=rhs; rhs is overwritten by the solution; always returns 0; NOTE: there is NO check against division by zero
ConicBundle.cb_QPallow_UQPSolver!
— Functioncb_QPallow_UQPSolver!(self::CBQPSolverParameters)
set to true/false if switching to the unconstrained solver is allowed or not
ConicBundle.cb_QPapply_modification!
— Functioncb_QPapply_modification!(self::CBQPSolver, mdf::CBGroundsetModification)
groundset changes are communicated to the solver here
cb_QPapply_modification!(self::CBUQPSolver, param0::CBGroundsetModification)
no modifications need to be carried out here as there is no data to be modified, so any modification succeeds
ConicBundle.cb_QPclear!
— Functioncb_QPclear!(self::CBQPSolver)
(re)initialize to empty
cb_QPclear!(self::CBUQPSolver)
calls clear(), i.e. reinitialize completely
ConicBundle.cb_QPconstrained
— Functioncb_QPconstrained(self::CBQPSolver)
returns false if the feasible set is the entire space (unconstrained optimization), true otherwise.
cb_QPconstrained(self::CBUQPSolver)
it is always unconstrained
ConicBundle.cb_QPensure_feasibility!
— Functioncb_QPensure_feasibility!(self::CBQPSolver, y::CBMatrix, ychanged::Bool, inHp::Union{<:CBQPSolverProxObject,Nothing}, relprec::Real = 1e-10)
makes y feasible if not so, see Groundset::ensure_feasibility()
cb_QPensure_feasibility!(self::CBUQPSolver, param0::CBMatrix, ychanged::Bool, param2::Union{<:CBQPSolverProxObject,Nothing}, param3::Real = 1e-10)
for the unconstrained solver any point is feasible, because it cannot even check the dimension of the design space, so any y is left unchanged
ConicBundle.cb_QPget_KKTsolver!
— Functioncb_QPget_KKTsolver!(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_blockA_norm!
— Functioncb_QPget_blockA_norm!(self::CBQPKKTSolverComparison)
for judging violation this returns (an estimate of) the norm of the A-row in the latest system
ConicBundle.cb_QPget_blockH_norm!
— Functioncb_QPget_blockH_norm!(self::CBQPKKTSolverComparison)
for judging violation this returns (an estimate of) the norm of the H-row in the latest system
ConicBundle.cb_QPget_dual_infeasibility_eps
— Functioncb_QPget_dual_infeasibility_eps(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_lower_bound
— Functioncb_QPget_lower_bound(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_lower_bound!
— Functioncb_QPget_lower_bound!(self::CBQPSolver)
returns the current lower bound on the optimal value (if feasibility is good enough)
cb_QPget_lower_bound!(self::CBUQPSolver)
return the lower bound on the objective value of the bundle subproblem
ConicBundle.cb_QPget_lower_bound_gap_eps
— Functioncb_QPget_lower_bound_gap_eps(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_maxiter
— Functioncb_QPget_maxiter(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_min_objective_relprec
— Functioncb_QPget_min_objective_relprec(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_nbh_lb
— Functioncb_QPget_nbh_lb(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_nbh_ub
— Functioncb_QPget_nbh_ub(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_objective_gap_eps
— Functioncb_QPget_objective_gap_eps(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_primal_infeasibility_eps
— Functioncb_QPget_primal_infeasibility_eps(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_solution!
— Functioncb_QPget_solution!(self::CBQPSolver, new_point::CBMatrix, gsaggr_gradient::CBMatrix)
retrieve the solution produced (see \ref InternalQPSolverInterface)
cb_QPget_solution!(self::CBUQPSolver, new_point::CBMatrix, gsaggr_gradient::CBMatrix)
the unconstrained solver can only provide this information if the references to the input data of QPsolve() and QPudate() are still available and unchanged, otherwise the behavior is undefined and will hopefully return 1 if not valid
ConicBundle.cb_QPget_system_size!
— Functioncb_QPget_system_size!(self::CBQPIterativeKKTHAeqSolver)
for evaluation purposes with iterative solvers, return the size of the system matrix
cb_QPget_system_size!(self::CBQPIterativeKKTHASolver)
for evaluation purposes with iterative solvers, return the size of the system matrix
ConicBundle.cb_QPget_upper_bound
— Functioncb_QPget_upper_bound(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_upper_bound_gap_eps
— Functioncb_QPget_upper_bound_gap_eps(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_use_neighborhood
— Functioncb_QPget_use_neighborhood(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_use_predictor_corrector
— Functioncb_QPget_use_predictor_corrector(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPget_use_socqp
— Functioncb_QPget_use_socqp(self::CBQPSolverParameters)
get this variable value
ConicBundle.cb_QPinit_KKTdata!
— Functioncb_QPinit_KKTdata!(self::CBQPDirectKKTSolver, Hp::Union{<:CBQPSolverProxObject,Nothing}, model::Union{<:CBQPModelBlockObject,Nothing}, A::Union{<:CBSparsemat,Nothing}, eq_indices::Union{<:CBIndexmatrix,Nothing})
returns 1 if this class is not applicable in the current data situation, otherwise it stores the data pointers and these need to stay valid throught the use of the other routines but are not deleted here
cb_QPinit_KKTdata!(self::CBQPIterativeKKTHAeqSolver, Hp::Union{<:CBQPSolverProxObject,Nothing}, model::Union{<:CBQPModelBlockObject,Nothing}, A::Union{<:CBSparsemat,Nothing}, eq_indices::Union{<:CBIndexmatrix,Nothing})
returns 1 if this class is not applicable in the current data situation, otherwise it stores the data pointers and these need to stay valid throught the use of the other routines but are not deleted here
cb_QPinit_KKTdata!(self::CBQPKKTSolverComparison, Hp::Union{<:CBQPSolverProxObject,Nothing}, model::Union{<:CBQPModelBlockObject,Nothing}, A::Union{<:CBSparsemat,Nothing}, eq_indices::Union{<:CBIndexmatrix,Nothing})
returns 1 if this class is not applicable in the current data situation, otherwise it stores the data pointers and these need to stay valid throught the use of the other routines but are not deleted here
ConicBundle.cb_QPinit_KKTsystem!
— Functioncb_QPinit_KKTsystem!(self::CBQPDirectKKTSolver, KKTdiagx::CBMatrix, KKTdiagy::CBMatrix, Hfactor::Real, prec::Real, params::Union{<:CBQPSolverParameters,Nothing})
set up the primal dual KKT system for being solved for predictor and corrector rhs in QPsolve_KKTsystem
cb_QPinit_KKTsystem!(self::CBQPKKTSolverComparison, KKTdiagx::CBMatrix, KKTdiagy::CBMatrix, Hfactor::Real, prec::Real, params::Union{<:CBQPSolverParameters,Nothing})
set up the primal dual KKT system for being solved for predictor and corrector rhs in QPsolve_KKTsystem
ConicBundle.cb_QPis_feasible!
— Functioncb_QPis_feasible!(self::CBQPSolver, y::CBMatrix, relprec::Real = 1e-10)
check feasiblity of y for the current groundset constraints
cb_QPis_feasible!(self::CBUQPSolver, param0::CBMatrix, param1::Real = 1e-10)
for the unconstrained solver any point is feasible, because it cannot even check the dimension of the design space
ConicBundle.cb_QPprefer_UQPSolver
— Functioncb_QPprefer_UQPSolver(self::CBQPSolver, param0::Union{<:CBQPSolverProxObject,Nothing})
returns true if, for the current constraints and the requested ProxObject, it might be better to use the internal unconstrained QP solver (which can deal with box constraints by a work-around)
cb_QPprefer_UQPSolver(self::CBUQPSolver, param0::Union{<:CBQPSolverProxObject,Nothing})
as this IS the internal UQPSolver, the answer doesn't matter, but the solver would certainly say yes
ConicBundle.cb_QPprint_statistics!
— Functioncb_QPprint_statistics!(self::CBQPSolver, param1::Integer = 0)
currently it does nothing
cb_QPprint_statistics!(self::CBUQPSolver, param1::Integer = 0)
outputs some statistical data about solver performance
ConicBundle.cb_QPresolve!
— Functioncb_QPresolve!(self::CBQPSolver, lower_bound::Real, upper_bound::Real, relprec::Real)
resolve the bundle subproblem (usually because of modified penalty parameters) so that precision requirements are met (see \ref InternalQPSolverInterface)
cb_QPresolve!(self::CBUQPSolver, lower_bound::Real, upper_bound::Real, relprec::Real)
see QPSolverObject::QPresolve() and \ref UnconstrainedQPSolver
ConicBundle.cb_QPset_KKTsolver!
— Functioncb_QPset_KKTsolver!(self::CBQPSolverParameters, in_KKTsolver::Union{<:CBQPKKTSolverObject,Nothing})
delete previous solver and replace by the new one (should not be zero when calling the solver)
ConicBundle.cb_QPset_allow_UQPSolver!
— Functioncb_QPset_allow_UQPSolver!(self::CBQPSolverParameters, allow::Bool)
set to true/false if switching to the unconstrained solver is allowed or not
ConicBundle.cb_QPset_dual_infeasibility_eps!
— Functioncb_QPset_dual_infeasibility_eps!(self::CBQPSolverParameters, eps::Real)
set this variable value
ConicBundle.cb_QPset_lower_and_upper_bounds!
— Functioncb_QPset_lower_and_upper_bounds!(self::CBQPSolverParameters, lb::Real, ub::Real)
set this variable value
ConicBundle.cb_QPset_lower_bound_gap_eps!
— Functioncb_QPset_lower_bound_gap_eps!(self::CBQPSolverParameters, eps::Real)
set this variable value
ConicBundle.cb_QPset_maxiter!
— Functioncb_QPset_maxiter!(self::CBQPSolverParameters, mi::Integer)
set this variable value
ConicBundle.cb_QPset_min_objective_relprec!
— Functioncb_QPset_min_objective_relprec!(self::CBQPSolverParameters, eps::Real)
set this variable value
ConicBundle.cb_QPset_nbh_bounds!
— Functioncb_QPset_nbh_bounds!(self::CBQPSolverParameters, nbhlb::Real, nbhub::Real)
set the upper bound on the neighborhood that should be ensured in curve searches; ensures eps_Real<=nbhlb<=nbhub (nbhub should be < 1. and <=.35 is safe)
ConicBundle.cb_QPset_objective_gap_eps!
— Functioncb_QPset_objective_gap_eps!(self::CBQPSolverParameters, eps::Real)
set this variable value
ConicBundle.cb_QPset_parameters!
— Functioncb_QPset_parameters!(self::CBQPSolver, params::Union{<:CBQPSolverParametersObject,Nothing})
check whether the parameters are QPSolverParameters and set them if so
cb_QPset_parameters!(self::CBUQPSolver, param0::Union{<:CBQPSolverParametersObject,Nothing})
does nothing here
ConicBundle.cb_QPset_primal_infeasibility_eps!
— Functioncb_QPset_primal_infeasibility_eps!(self::CBQPSolverParameters, eps::Real)
set this variable value
ConicBundle.cb_QPset_upper_bound_gap_eps!
— Functioncb_QPset_upper_bound_gap_eps!(self::CBQPSolverParameters, eps::Real)
set this variable value
ConicBundle.cb_QPset_use_neighborhood!
— Functioncb_QPset_use_neighborhood!(self::CBQPSolverParameters, nbh::Bool)
if set to true (default: false), the lines search is carried out with respect to the neighborhood polynomial ensuring the afte this step the point is again inside the neighborhood of the central path
ConicBundle.cb_QPset_use_predictor_corrector!
— Functioncb_QPset_use_predictor_corrector!(self::CBQPSolverParameters, upc::Bool)
if set to true (=default), a predictor corrector approach is used for solving the KKT system (solve for barrier parameter mu=0, guess mu, solve again for this mu including some bilinear perturbation) otherwise the barrier parameter is set apriori and the step computed in one solve
ConicBundle.cb_QPset_use_socqp!
— Functioncb_QPset_use_socqp!(self::CBQPSolverParameters, s::Bool)
if set to true (default: false), the quadratic term is modelled via a second order cone approach
ConicBundle.cb_QPsolve!
— Functioncb_QPsolve!(self::CBQPSolver, center_y::CBMatrix, lower_bound::Real, upper_bound::Real, relprec::Real, Hp::Union{<:CBQPSolverProxObject,Nothing}, gs_aggr::CBMinorantPointer, yfixed::Union{<:CBIndexmatrix,Nothing})
solve the current bundle subproblem so that precision requirements are met (see \ref InternalQPSolverInterface)
cb_QPsolve!(self::CBUQPSolver, center_y::CBMatrix, lower_bound::Real, upper_bound::Real, relprec::Real, Hp::Union{<:CBQPSolverProxObject,Nothing}, gs_aggr::CBMinorantPointer, yfixed::Union{<:CBIndexmatrix,Nothing})
see QPSolverObject::QPsolve() and \ref UnconstrainedQPSolver
ConicBundle.cb_QPsolve_KKTsystem!
— Functioncb_QPsolve_KKTsystem!(self::CBQPDirectKKTSolver, solx::CBMatrix, soly::CBMatrix, primalrhs::CBMatrix, dualrhs::CBMatrix, rhsmu::Real, rhscorr::Real, prec::Real, params::Union{<:CBQPSolverParameters,Nothing})
solve the KKTsystem to precision prec for the given right hand sides that have been computed for the value rhsmu of the barrier parameter and in which a rhscorr fraction (out of [0,1] of the corrector term have been included; in iterative solvers solx and soly may be used as starting points
cb_QPsolve_KKTsystem!(self::CBQPIterativeKKTHAeqSolver, solx::CBMatrix, soly::CBMatrix, primalrhs::CBMatrix, dualrhs::CBMatrix, rhsmu::Real, rhscorr::Real, prec::Real, params::Union{<:CBQPSolverParameters,Nothing})
solve the KKTsystem to precision prec for the given right hand sides that have been computed for the value rhsmu of the barrier parameter and in which a rhscorr fraction (out of [0,1] of the corrector term have been included; in iterative solvers solx and soly may be used as starting points
cb_QPsolve_KKTsystem!(self::CBQPIterativeKKTHASolver, solx::CBMatrix, soly::CBMatrix, primalrhs::CBMatrix, dualrhs::CBMatrix, rhsmu::Real, rhscorr::Real, prec::Real, params::Union{<:CBQPSolverParameters,Nothing})
solve the KKTsystem to precision prec for the given right hand sides that have been computed for the value rhsmu of the barrier parameter and in which a rhscorr fraction (out of [0,1] of the corrector term have been included; in iterative solvers solx and soly may be used as starting points
cb_QPsolve_KKTsystem!(self::CBQPKKTSolverComparison, solx::CBMatrix, soly::CBMatrix, primalrhs::CBMatrix, dualrhs::CBMatrix, rhsmu::Real, rhscorr::Real, prec::Real, params::Union{<:CBQPSolverParameters,Nothing})
solve the KKTsystem to precision prec for the given right hand sides that have been computed for the value rhsmu of the barrier parameter and in which a rhscorr fraction (out of [0,1] of the corrector term have been included; in iterative solvers solx and soly may be used as starting points
ConicBundle.cb_QPstart_modification!
— Functioncb_QPstart_modification!(self::CBQPSolver)
return a new modification object on the heap that is initialized for modification of *this
cb_QPstart_modification!(self::CBUQPSolver)
returns 0 because no modifications are applicable
ConicBundle.cb_QPsupports_updates!
— Functioncb_QPsupports_updates!(self::CBQPSolver)
- @brief return true iff the code supports QPupdate(), i.e., it supports external updates of the groundset aggregate in order to model constraints not included explicitly in the QP's model
cb_QPsupports_updates!(self::CBUQPSolver)
- @brief return true iff the code supports QPupdate(), i.e., it supports external updates of the groundset aggregate in order to model constraints not included explicitly in the QP's model
ConicBundle.cb_QPsupports_yfixing!
— Functioncb_QPsupports_yfixing!(self::CBQPSolver)
yfixing is currently not supported, this returns false.
cb_QPsupports_yfixing!(self::CBUQPSolver)
no difficulty if the BundleProxObject does it
ConicBundle.cb_QPupdate!
— Functioncb_QPupdate!(self::CBQPSolver, center_y::CBMatrix, lower_bound::Real, upper_bound::Real, relprec::Real, Hp::Union{<:CBQPSolverProxObject,Nothing}, gs_aggr::CBMinorantPointer, yfixed::Union{<:CBIndexmatrix,Nothing}, delta_gs_aggr::CBMinorantPointer, delta_index::CBIndexmatrix)
solve the bundle subproblem for updated box multipliers so that precision requirements are met (see \ref InternalQPSolverInterface). This routine is typically not called for this solver, because box constraints are included explicitly.
cb_QPupdate!(self::CBUQPSolver, center_y::CBMatrix, lower_bound::Real, upper_bound::Real, relprec::Real, Hp::Union{<:CBQPSolverProxObject,Nothing}, gs_aggr::CBMinorantPointer, yfixed::Union{<:CBIndexmatrix,Nothing}, delta_gs_subg::CBMinorantPointer, delta_index::CBIndexmatrix)
see QPSolverObject::QPupdate() and \ref UnconstrainedQPSolver
ConicBundle.cb_QR_concat_right!
— Functioncb_QR_concat_right!(self::CBMatrix, A::CBMatrix, piv::CBIndexmatrix, r::Integer, tol::Real = 1e-10)
extend the current Householder QR-factorization stored in this by appending and factorizing the columns of A yielding a new QR_factorization
@param[in] A contains the addtionial columns to be factorized @param[in,out] piv contains on input, the permution vector returned by QR_factor with pivoting, and on output the new entire permutation @param[in] r gives the initial rank of *this as returned by QR_factor with pviaton @param[in] tol gives the tolerance for regarding a vector as having norm zero @return the rank of the new QR-facotrization
ConicBundle.cb_QR_factor
— Functioncb_QR_factor(self::CBMatrix, Q::CBMatrix, R::CBMatrix, tol::Real)
computes a Householder QR_factorization computing matrices Q and R explicitly and leaving (*this) unchanged; it always returns 0
cb_QR_factor(self::CBMatrix, Q::CBMatrix, R::CBMatrix, piv::CBIndexmatrix, tol::Real)
computes a Householder QR_factorization with pivoting computing matrices Q and R explicitly and leaving (*this) unchanged; the pivoting permutation is stored in piv; returns the rank
ConicBundle.cb_QR_factor!
— Functioncb_QR_factor!(self::CBMatrix, tol::Real = 1e-10)
computes a Householder QR_factorization overwriting (*this); returns 0 on success, otherwise column index +1 if the norm of the column is below tol when reaching it.
cb_QR_factor!(self::CBMatrix, Q::CBMatrix, tol::Real = 1e-10)
computes a Householder QR_factorization computing the Q matrix explicitly and setting (*this)=R; it always returns 0
cb_QR_factor!(self::CBMatrix, piv::CBIndexmatrix, tol::Real = 1e-10)
computes a Householder QR_factorization with pivoting and overwriting (*this); the pivoting permutation is stored in piv; returns the rank
cb_QR_factor!(self::CBMatrix, Q::CBMatrix, piv::CBIndexmatrix, tol::Real = 1e-10)
Computes a Householder QR_factorization with pivoting computing the Q matrix explicitly and setting (*this)=R; the pivoting permutation is stored in piv; returns the rank
ConicBundle.cb_QR_factor_relpiv!
— Functioncb_QR_factor_relpiv!(self::CBMatrix, piv::CBIndexmatrix, tol::Real = 1e-10)
computes a Householder QR_factorization with pivoting on those with tolerable norm and tolerable reduction in norm and overwriting (*this); the pivoting permutation is stored in piv; returns the rank
ConicBundle.cb_QR_solve!
— Functioncb_QR_solve!(self::CBMatrix, rhs::CBMatrix, tol::Real = 1e-10)
@brief solves (this)x=rhs by factorizing and overwriting (this); rhs is overwritten with the solution. Returns 0 on success, otherwise i+1 if in the backsolve abs(this)(i,i)<tol and the reduced row of rhs is nonzero.
To avoid overwriting (*this), use the appropriate version of #QR_factor and #triu_solve.
ConicBundle.cb_Q_times
— Functioncb_Q_times(self::CBMatrix, A::CBMatrix, r::Integer)
computes A=QA, assuming a housholder Q is coded in the first r columns of the lower triangle of (this); it always returns 0
ConicBundle.cb_Qt_times
— Functioncb_Qt_times(self::CBMatrix, A::CBMatrix, r::Integer)
computes A=transpose(Q)A, assuming a housholder Q is coded in the first r columns of the lower triangle of (this); it always returns 0
ConicBundle.cb_abs
— Functioncb_abs(A::CBMatrix)
returns a matrix with elements (i,j)=abs((*this)(i,j)) for all i,j
cb_abs(A::CBSparsemat)
returns a Sparsmat with elements abs((*this)(i,j)) for all i,j
cb_abs(A::CBSymmatrix)
returns a Symmatrix with elements abs(A(i,j))
cb_abs(A::CBSparsesym)
returns a Sparsesym with elements abs((*this)(i,j)) for all i,j
ConicBundle.cb_abs!
— Functioncb_abs!(self::CBMatrix)
sets (this)(i,j)=abs((this)(i,j)) for all i,j and returns *this
cb_abs!(self::CBIndexmatrix)
using ::abs assign (this)(i,j)=abs((this)(i,j)) for all i,j
ConicBundle.cb_active
— Functioncb_active(self::CBSumBundle)
returns true if one of its parts is not inactive
ConicBundle.cb_add_BCSchur_diagonal!
— Functioncb_add_BCSchur_diagonal!(self::CBQPConeModelBlock, diagonal::CBMatrix, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
- @brief add the diagonal of the Schur complemented blocks belonging to bundle and local constraints (used for diagonal preconditioning)
cb_add_BCSchur_diagonal!(self::CBQPSumModelBlock, diagonal::CBMatrix, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
- @brief add the diagonal of the Schur complemented blocks belonging to bundle and local constraints (used for diagonal preconditioning)
ConicBundle.cb_add_BDBt!
— Functioncb_add_BDBt!(self::CBQPConeModelBlock, diagvec::CBMatrix, bigS::CBSymmatrix, minus::Bool, startindex::Integer, Bt::CBMatrix, startindex_model::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
add the main diagonal block tranpose(projection)diagvecprojection to bigS starting at startindex
cb_add_BDBt!(self::CBQPSumModelBlock, diagvec::CBMatrix, bigS::CBSymmatrix, minus::Bool, startindex::Integer, Bt::CBMatrix, startindex_model::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
add the main diagonal block tranpose(projection)diagvecprojection to bigS starting at startindex
ConicBundle.cb_add_Bs
— Functioncb_add_Bs(self::CBUQPConeModelBlock, qp_vec::CBMatrix)
add the local product of matrices B and s in the positions corresponding to qpyrange (rows) and return qpvec; returns 0 on success, 1 on failure
cb_add_Bs(self::CBUQPSumModelBlock, qp_vec::CBMatrix)
do this for all subblocks
ConicBundle.cb_add_BtinvsysB!
— Functioncb_add_BtinvsysB!(self::CBQPConeModelBlock, globalsys::CBSymmatrix, bundle::CBMinorantBundle, startindex_bundle::Integer)
add the "scaled" minorant outer products to globalsys, where the correct minorants start at the given index
cb_add_BtinvsysB!(self::CBQPSumModelBlock, globalsys::CBSymmatrix, bundle::CBMinorantBundle, startindex_bundle::Integer)
add the "scaled" minorant outer products to globalsys, where the correct minroants start at the given index
ConicBundle.cb_add_H
— Functioncb_add_H(self::CBBundleDenseTrustRegionProx, big_sym::CBSymmatrix, start_index::Integer = 0)
add H to the dense symmetric matrix as a principal submatrix starting at position start_index
cb_add_H(self::CBBundleDiagonalTrustRegionProx, big_sym::CBSymmatrix, start_index::Integer = 0)
add H to the dense symmetric matrix as a principal submatrix starting at position start_index
cb_add_H(self::CBBundleDLRTrustRegionProx, big_sym::CBSymmatrix, start_index::Integer = 0)
add H to the dense symmetric matrix as a principal submatrix starting at position start_index
cb_add_H(self::CBBundleIdProx, big_sym::CBSymmatrix, start_index::Integer = 0)
add H to the dense symmetric matrix as a principal submatrix starting at position start_index
cb_add_H(self::CBBundleLowRankTrustRegionProx, big_sym::CBSymmatrix, start_index::Integer = 0)
add H to the dense symmetric matrix as a principal submatrix starting at position start_index
ConicBundle.cb_add_Hx
— Functioncb_add_Hx(self::CBBundleDenseTrustRegionProx, x::CBMatrix, outplusHx::CBMatrix, alpha::Real = 1.)
adds \f$alpha*Hx\f$ to outplusHx and returns this
cb_add_Hx(self::CBBundleDiagonalTrustRegionProx, x::CBMatrix, outplusHx::CBMatrix, alpha::Real = 1.)
adds \f$alpha*Hx\f$ to outplusHx and returns this
cb_add_Hx(self::CBBundleDLRTrustRegionProx, x::CBMatrix, outplusHx::CBMatrix, alpha::Real = 1.)
adds \f$alpha*Hx\f$ to outplusHx and returns this
cb_add_Hx(self::CBBundleIdProx, x::CBMatrix, outplusHx::CBMatrix, alpha::Real = 1.)
adds \f$alpha*Hx\f$ to outplusHx and returns this
cb_add_Hx(self::CBBundleLowRankTrustRegionProx, x::CBMatrix, outplusHx::CBMatrix, alpha::Real = 1.)
adds \f$alpha*Hx\f$ to outplusHx and returns this
ConicBundle.cb_add_Schur_mult!
— Functioncb_add_Schur_mult!(self::CBQPConeModelBlock, in_vec::CBMatrix, out_vec::CBMatrix, in_cvec::Union{<:CBMatrix,Nothing}, out_cvec::Union{<:CBMatrix,Nothing}, startindex_constraints::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
multiply invec with the local contribution to the global main block and add it to outvec; the other local multiplications are carried out externally with the information provide in prepareSchurprecond and are not done here.
cb_add_Schur_mult!(self::CBQPSumModelBlock, in_vec::CBMatrix, out_vec::CBMatrix, in_cvec::Union{<:CBMatrix,Nothing}, out_cvec::Union{<:CBMatrix,Nothing}, startindex_constraints::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
multiply invec with the local contribution to the global main block and add it to outvec; the other local multiplications are carried out externally with the information provide in prepareSchurprecond and are not done here.
ConicBundle.cb_add_Schur_rhs!
— Functioncb_add_Schur_rhs!(self::CBQPConeModelBlock, glob_rhs::CBMatrix, local_rhs::Union{<:CBMatrix,Nothing}, rhsmu::Real, rhscorr::Real, startindex_constraints::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
add the contributions to globrhs of the Schur complemented model block, and return localrhs of the non complemented constraint block in the rows/columns/diagonal block starting at startindex_constraints
cb_add_Schur_rhs!(self::CBQPSumModelBlock, glob_rhs::CBMatrix, local_rhs::Union{<:CBMatrix,Nothing}, rhsmu::Real, rhscorr::Real, startindex_constraints::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
add the contributions to globrhs of the Schur complemented model block, and return localrhs of the non complemented constraint block in the rows/columns/diagonal block starting at startindex_constraints
ConicBundle.cb_add_append_blocks!
— Functioncb_add_append_blocks!(self::CBPSCAffineModification, append_dim::CBIndexmatrix, append_offsets::Union{<:CBSparseCoeffmatMatrix,Nothing}, append_blocks::Union{<:CBSparseCoeffmatMatrix,Nothing})
@brief append information on new rows at the respective ends
@param append_dim the dimension gives the number of (diagonal) blocks and each entry the order of the block to be appended @param append_blocks if NULL, append zero matrics, otherwise it must point to a sparse matrix of size @a append_dim times new_vardim() that is to be appended to the constraint matrix below. @param append_offsets if NULL, append zero matrices, otherwise it must point to a column vector of size @a append_dim that is to be appended to the vector of offsets
@return number of errors; if errors occured, none of the new changes are performed
ConicBundle.cb_add_append_rows!
— Functioncb_add_append_rows!(self::CBAFTModification, append_dim::Integer, append_rows::Union{<:CBSparsemat,Nothing}, append_rhs::Union{<:CBMatrix,Nothing})
append @a appenddim new rows as in appendrows (if NULL, use default value) with affine offset appendrhs (if NULL use default value 0.), calls Modification::addappend_rows
ConicBundle.cb_add_append_variables!
— Functioncb_add_append_variables!(self::CBAFTModification, append_dim::Integer)
append append_dim further variables at the end of the argument vector (without specifying their effect, they may e.g. be ignored by the function)
cb_add_append_variables!(self::CBGroundsetModification, append_dim::Integer)
append append_dim further variables at the end of the argument vector (without specifying their effect, they may e.g. be ignored by the function)
cb_add_append_variables!(self::CBNNCBoxSupportModification, append_dim::Integer)
append append_dim further variables at the end of the argument vector (without effect on the box function, i.e., lower and upper bounds are set to 0)
cb_add_append_variables!(self::CBPSCAffineModification, append_dim::Integer)
append append_dim further variables at the end of the argument vector (without specifying their effect, they may e.g. be ignored by the function)
cb_add_append_variables!(self::CBSOCSupportModification, append_dim::Integer)
append append_dim further variables at the end of the argument vector (without effect on the box function, i.e., lower and upper bounds are set to 0)
ConicBundle.cb_add_append_vars!
— Functioncb_add_append_vars!(self::CBAFTModification, append_dim::Integer, append_cols::Union{<:CBSparsemat,Nothing}, linear_costs::Union{<:CBMatrix,Nothing})
append @a appenddim new variables/columns with values specified by @a appendcols (NULL: default value) and @a linearcosts coefficients (NULL: default value) by calling Modification::addappend_vars
cb_add_append_vars!(self::CBGroundsetModification, append_dim::Integer, start_val::Union{<:CBMatrix,Nothing} = nothing, costs::Union{<:CBMatrix,Nothing} = nothing)
append @a appenddim new variables with startval as initial values (if NULL, use default value), calls Modification::addappendvars
cb_add_append_vars!(self::CBNNCBoxSupportModification, append_dim::Integer, append_lb::Union{<:CBMatrix,Nothing}, append_ub::Union{<:CBMatrix,Nothing})
append @a append_dim new variables to the box function
cb_add_append_vars!(self::CBPSCAffineModification, append_dim::Integer, append_cols::Union{<:CBSparseCoeffmatMatrix,Nothing})
@brief append information on new variables at the respective ends
@param append_dim number of variables (or columns ) to be appended @param append_cols if NULL, append zero matrices, otherwise it must point to a sparse matrix of size new_rowdim() times @a append_dim that is to be appended to the constraint matrix on the right @return number of errors; if errors occured, none of the new changes are performed
cb_add_append_vars!(self::CBSOCSupportModification, append_dim::Integer)
append @a append_dim new variables to the box function
ConicBundle.cb_add_apply_factor!
— Functioncb_add_apply_factor!(self::CBAFTModification, times_factor::Real)
multiply the current factor by the value @a times_factor (>=0, returns 1 if <0.)
ConicBundle.cb_add_coeff!
— Functioncb_add_coeff!(self::CBMinorant, i::Integer, value::Real)
adds the value to the coefficient in coordinate i
ConicBundle.cb_add_coeffs!
— Functioncb_add_coeffs!(self::CBMinorant, n_elements::Integer, values::Union{<:AbstractVector{Real},Nothing}, factor::Real = 1., start_pos::Integer = 0)
adds the n values (possibly multiplied by factor) to consecutive coefficients starting at start_pos (by default 0); this always converts the minroant into a dense vector first and adds then
cb_add_coeffs!(self::CBMinorant, n_elements::Integer, values::Union{<:AbstractVector{Real},Nothing}, indices::Union{<:AbstractVector{Integer},Nothing}, factor::Real = 1.)
adds the n values (possibly multiplied by factor) to the coefficients indicated by indices (if zero, this calls the other add_coeffs for the consecutive version)
ConicBundle.cb_add_contributions!
— Functioncb_add_contributions!(self::CBSumBundleHandler)
@brief add root parts of this sumbundle to the parent's sumbundle and set the states correspondingly
If the current mode is child, nothing is done, because it is assumed that the sumbundle is already part of the parent. Thus, only root parts are considerd new and are added. This is only done, if the parenhandler accepts these kind of parts. When a contribution is added to a parent that is currently inactive or child, any respective parent's contributions to the parent's parent are first removed and then the mode of the parent is set to root. Thus, the parent has to call add_contributions afterwards, if it still wants to contribute to its own parent. add_contribution should only be called from SumBlockModel::sumbundle_contribution() with a normalized bundle, i.e., normalize_sumbundle() should have been called before.
ConicBundle.cb_add_delete_blocks!
— Functioncb_add_delete_blocks!(self::CBPSCAffineModification, del_ind::CBIndexmatrix, map_to_old::CBIndexmatrix)
@brief delete the rows indexed by the vector delind and return the index changes of the others in a vector mapto_old
@a del_ind need not be ordered in any way, but any index in 0 to new_rowdim()-1 may appear at most once. On output the dimension of the column vector @a map_to_old gives the number of remaining rows and its entry i holds the index the row with new index i had before the deletion. The return value is the number of errors in @a del_ind. If such occured, this deletion is not performed and @a map_to_old may contain garbage.
ConicBundle.cb_add_delete_rows!
— Functioncb_add_delete_rows!(self::CBAFTModification, rows_del_ind::CBIndexmatrix, rows_map_to_old::CBIndexmatrix)
delete the rows indexed by @a rowsdelind; for each new index @a rowsmaptoold returns the old one; calls Modification::adddelete_rows
ConicBundle.cb_add_delete_vars!
— Functioncb_add_delete_vars!(self::CBAFTModification, del_ind::CBIndexmatrix, map_to_old::CBIndexmatrix)
delete the variables indexed by @a delind; for each new index @a maptoold returns the old one; calls Modification::adddelete_vars
cb_add_delete_vars!(self::CBGroundsetModification, del_ind::CBIndexmatrix, map_to_old::CBIndexmatrix)
delete the variables indexed by @a delind; for each new index @a maptoold returns the old one; calls Modification::adddelete_vars
cb_add_delete_vars!(self::CBNNCBoxSupportModification, del_ind::CBIndexmatrix, map_to_old::CBIndexmatrix)
delete the variables indexed by @a delind; for each new index @a maptoold returns the old one; calls Modification::adddelete_vars
cb_add_delete_vars!(self::CBPSCAffineModification, del_ind::CBIndexmatrix, map_to_old::CBIndexmatrix)
@brief delete the variables indexed by the vector delind and return the index changes of the others in a vector mapto_old
@a del_ind need not be ordered in any way, but any index in 0 to new_vardim()-1 may appear at most once. On output the dimension of the column vector @a map_to_old gives the number of remaining variables and its entry i holds the index the variable with new index i had before the deletion. The return value is the number of errors in @a del_ind. If such occured, this deletion is not performed and @a map_to_old may contain garbage.
cb_add_delete_vars!(self::CBSOCSupportModification, del_ind::CBIndexmatrix, map_to_old::CBIndexmatrix)
delete the variables indexed by @a delind; for each new index @a maptoold returns the old one; calls Modification::adddelete_vars
ConicBundle.cb_add_diagonal_scaling
— Functioncb_add_diagonal_scaling(self::CBAffineFunctionTransformation, diagscale::CBMatrix, indices::Union{<:CBIndexmatrix,Nothing}, alpha::Real, in_diagscale::CBMatrix)
@brief transform the scaling matrix indiagscale of the untransformed function model and add it as described in BundleMethod::adddiagonal_scaling.
If indices are given, they must be sorted in striclty increasing order.
ConicBundle.cb_add_function!
— Methodcb_add_function!(self::CBMatrixCBSolver, function_::CBFunctionObject, fun_factor::Real = 1., fun_task::CBFunctionTask = cbft_objective_function, aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing, argument_list_may_change_dynamically::Bool = false)
@brief Adds a function, typically derived from ConicBundle::FunctionOracle. If the dimension does not match the current one, specify an affine function transformation to map the current ground set to the argument of the function.
Besides the standard ConicBundle::MatrixFunctionOracle the interface only accepts a few other prespecified derivations of the class FunctionObject that come along with the CHMatrixClasses interface (e.g. for semidefinite and second order cones). Functions not derived from these will fail to be added and return a value !=0.
The @a funfactor allows to specify a scaling factor for the function. @a funfactor must be a strictly positive number.
The ConicBundle::FunctionTask @a funtask specifies whether the function is to be used as a an ObjectiveFunction, a ConstantPenaltyFunction with @a funfactor as maximum penalty factor, or as an AdaptivePenaltyFunction with @a fun_factor at initial penalty guess that might be increased or decreased over time.
The AffineFunctionTransformation @a aft may be used to modify the argument and give an additional affine term (linear term plus offset). For adding an affine term there are several other possibilities, e.g. in init_problem(), so there is no need to do so here. If, however, an existing function implementation requires only some subset of the variables, it is more convenient to supply a corresponding @a aft instead of reimplementing the function.
@a argumentlistmaychangedynamically sets a flag on how to treat the function arguments when variables are added or deleted. If the arguments may not change, any changes in the variables are mapped to an adaptation of an internal AffineFunctionTransformation so that the function does not notice the changes in the variables. If arguments may change, the function oracle should be a ModifiableOracleObject and react accordingly to the changes in its ModifiableOracleObject::apply_modification() routine.
@return
- 0 on success
- != 0 otherwise
ConicBundle.cb_add_local_sys!
— Functioncb_add_local_sys!(self::CBUQPConeModelBlock, sysdy::CBSymmatrix, rhs::CBMatrix)
@brief add the local system informatoin
on input: sysdy= A*barQ^{-1}*A^T (barQ as returned in add_xinv_kron_z) rhs= A*barQ^{-1}*(c-Q*x-A^T*y)-(b-A*x) if the block uses additional internal variables (like an additional term + B*s with s>=0 in the primal feasibility constr) then the corresponding block terms have now to be added to sysdy and rhs, eg, sysdy += B*(t^{-1} kron s)*B^T (if t is the dual variable to s) rhs += B*s - B*(t^{-1} kron s)*B^T*y
cb_add_local_sys!(self::CBUQPSumModelBlock, sysdy::CBSymmatrix, rhs::CBMatrix)
add this for all subblocks
ConicBundle.cb_add_localrhs!
— Functioncb_add_localrhs!(self::CBQPConeModelBlock, globalrhs::CBMatrix, rhsmu::Real, rhscorr::Real, startindex_model::Integer, startindex_constraints::Integer, append::Bool, bundle::CBMinorantBundle, startindex_bundel::Integer)
If mu is not zero, always add the centering term for this mu as well, if append is false, add the Schur complement rhs for addBtinvsysB, if append is true, fill in the rhs of the local system starting at startindex for the model and at startindexconstraints for the modelconstraints
cb_add_localrhs!(self::CBQPSumModelBlock, globalrhs::CBMatrix, rhsmu::Real, rhscorr::Real, startindex_model::Integer, startindex_constraints::Integer, append::Bool, bundle::CBMinorantBundle, startindex_bundel::Integer)
If mu is not zero, always add the centering term for this mu as well, if append is false, add the Schur complement rhs for addBtinvsysB, if append is true, fill in the rhs of the local system starting at startindex for the model and at startindexconstraints for the modelconstraints
ConicBundle.cb_add_localsys!
— Functioncb_add_localsys!(self::CBQPConeModelBlock, globalsys::CBSymmatrix, startindex_model::Integer, startindex_constraints::Integer)
add the local system for the model at startindex, the local for the constraints at startindex_constraints
cb_add_localsys!(self::CBQPSumModelBlock, globalsys::CBSymmatrix, startindex_model::Integer, startindex_constraints::Integer)
virtual int addBtinvsysB(CHMatrix_Classes::Symmatrix& globalsys);
ConicBundle.cb_add_model!
— Functioncb_add_model!(self::CBSumModel, model::Union{<:CBSumBlockModel,Nothing})
adds the @a model as submodel to this model (if this model may have submodels); if any error occurs the model is not added
ConicBundle.cb_add_modelx_aggregate!
— Functioncb_add_modelx_aggregate!(self::CBQPConeModelBlock, vec::CBMatrix, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
adds opB transposed times modelx (with offsets but without constant affine term) to the arguments
cb_add_modelx_aggregate!(self::CBQPSumModelBlock, vec::CBMatrix, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
adds opB transposed times modelx (without constant affine term) to the arguments
cb_add_modelx_aggregate!(self::CBUQPConeModelBlock, gradient::CBMatrix)
adds opB transposed times modelx (with offsets but without constant affine term) to the arguments
cb_add_modelx_aggregate!(self::CBUQPSumModelBlock, gradient::CBMatrix)
do this for all subblocks
ConicBundle.cb_add_offset!
— Functioncb_add_offset!(self::CBAFTModification, delta::Real)
add to the currecnt offset the value @a delta
cb_add_offset!(self::CBGroundsetModification, delta::Real)
add to the current offset the value @a delta
cb_add_offset!(self::CBMinorantPointer, offset::Real)
add the offset; if empty, initialize to offset with zero linear part, if not the only user (use_cnt>1), clone it first
cb_add_offset!(self::CBMinorant, value::Real)
adds this value to the current offset value
ConicBundle.cb_add_projection
— Functioncb_add_projection(self::CBCMgramdense, S::CBSymmatrix, P::CBMatrix, alpha::Real = 1., start_row::Integer = 0)
computes S+=Q^T(*this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_add_projection(self::CBCMgramsparse, S::CBSymmatrix, P::CBMatrix, alpha::Real = 1., start_row::Integer = 0)
computes S+=Q^T(*this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_add_projection(self::CBCMgramsparse_withoutdiag, S::CBSymmatrix, P::CBMatrix, alpha::Real = 1., start_row::Integer = 0)
computes S+=Q^T(*this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_add_projection(self::CBCMlowrankdd, S::CBSymmatrix, P::CBMatrix, alpha::Real = 1., start_row::Integer = 0)
computes S+=Q^T(*this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_add_projection(self::CBCMlowranksd, S::CBSymmatrix, P::CBMatrix, alpha::Real = 1., start_row::Integer = 0)
computes S+=Q^T(*this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_add_projection(self::CBCMlowrankss, S::CBSymmatrix, P::CBMatrix, alpha::Real = 1., start_row::Integer = 0)
computes S+=Q^T(*this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_add_projection(self::CBCMsingleton, S::CBSymmatrix, P::CBMatrix, alpha::Real = 1., start_row::Integer = 0)
computes S+=Q^T(*this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_add_projection(self::CBCMsymdense, S::CBSymmatrix, P::CBMatrix, alpha::Real = 1., start_row::Integer = 0)
computes S+=Q^T(*this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_add_projection(self::CBCMsymsparse, S::CBSymmatrix, P::CBMatrix, alpha::Real = 1., start_row::Integer = 0)
computes S+=Q^T(*this)Q for Q=P.rows(startrow,startrow+dim-1)
ConicBundle.cb_add_reassign_blocks!
— Functioncb_add_reassign_blocks!(self::CBPSCAffineModification, map_to_old::CBIndexmatrix)
@brief reassign the current row indices (with modifications) as specified by @a maptoold
@a map_to_old must specify an injective map (no two values match) into indices 0 up to new_rowdim()-1 (not all need to appear). The row getting index i (for i=0 to map_to_old.dim()-1) is the row with current index map_to_old(i) (current refers to considering all previous modifications as having been carried out already). The return value is the number of errors in @a map_to_old. If such occured, this reassign is not performed.
ConicBundle.cb_add_reassign_rows!
— Functioncb_add_reassign_rows!(self::CBAFTModification, map_to_old::CBIndexmatrix)
reassign the rows as given in @a maptoold, calls Modification::addreassignvars
ConicBundle.cb_add_reassign_variables!
— Functioncb_add_reassign_variables!(self::CBAFTModification, new_dim::Integer, map_to_old_indices::Union{<:AbstractVector{Integer},Nothing})
reorder and resize the variables as given by the first newdim entries of maptooldindices; each former index may appear at most once in this list, so newdim < getnew_vardim()
cb_add_reassign_variables!(self::CBGroundsetModification, new_dim::Integer, map_to_old_indices::Union{<:AbstractVector{Integer},Nothing})
reorder and resize the variables as given by the first newdim entries of maptooldindices; each former index may appear at most once in this list, so newdim < getnew_vardim()
cb_add_reassign_variables!(self::CBNNCBoxSupportModification, new_dim::Integer, map_to_old_indices::Union{<:AbstractVector{Integer},Nothing})
reorder and resize the variables as given by the first newdim entries of maptooldindices; each former index may appear at most once in this list, so newdim < getnew_vardim()
cb_add_reassign_variables!(self::CBPSCAffineModification, new_dim::Integer, map_to_old_indices::Union{<:AbstractVector{Integer},Nothing})
reorder and resize the variables as given by the first newdim entries of maptooldindices; each former index may appear at most once in this list, so newdim < getnew_vardim()
cb_add_reassign_variables!(self::CBSOCSupportModification, new_dim::Integer, map_to_old_indices::Union{<:AbstractVector{Integer},Nothing})
reorder and resize the variables as given by the first newdim entries of maptooldindices; each former index may appear at most once in this list, so newdim < getnew_vardim()
ConicBundle.cb_add_reassign_vars!
— Functioncb_add_reassign_vars!(self::CBAFTModification, map_to_old::CBIndexmatrix)
reassign the variables/columns as given in @a maptoold, calls Modification::addreassignvars
cb_add_reassign_vars!(self::CBGroundsetModification, map_to_old::CBIndexmatrix)
reassign the variables as given in @a maptoold, calls Modification::addreassignvars
cb_add_reassign_vars!(self::CBNNCBoxSupportModification, map_to_old::CBIndexmatrix)
reassign the variables as given in @a maptoold, calls Modification::addreassignvars
cb_add_reassign_vars!(self::CBPSCAffineModification, map_to_old::CBIndexmatrix)
@brief reassign the current variable indices (with modifications) as specified by @a maptoold
@a map_to_old must specify an injective map (no two values match) into indices 0 up to new_vardim()-1 (not all need to appear). The variable getting index i (for i=0 to map_to_old.dim()-1) is the variable with current index map_to_old(i) (current refers to considering all previous modifications as having been carried out already). The return value is the number of errors in @a map_to_old. If such occured, this reassign is not performed.
cb_add_reassign_vars!(self::CBSOCSupportModification, map_to_old::CBIndexmatrix)
reassign the variables as given in @a maptoold, calls Modification::addreassignvars
ConicBundle.cb_add_reset_generating_primal!
— Functioncb_add_reset_generating_primal!(self::CBPSCAffineModification, new_generating_primal::Union{<:CBPSCPrimal,Nothing})
@brief replace the current generating primal by newgeneratingprimal (on the heap, will be deleted here). It may be NULL to switch of generating primals.
Any changes here cause the deletion of all current aggregate minorants. If not NULL, the object pointed to is on the heap and control over it is passed over to *this, so *this will make sure it is deleted at due time. PSCPrimal gives no information on the order of the matrices involved, so no consistency checks are done here.
ConicBundle.cb_add_solver!
— Functioncb_add_solver!(self::CBQPKKTSolverComparison, solver::Union{<:CBQPKKTSolverObject,Nothing}, name::Union{<:AbstractVector{UInt8},Nothing})
the first solver added is the reference solver
ConicBundle.cb_add_variable_metric!
— Functioncb_add_variable_metric!(self::CBBundleDenseTrustRegionProx, addH::CBSymmatrix)
see BundleProxObject::addvariablemetric()
cb_add_variable_metric!(self::CBBundleDenseTrustRegionProx, diagH::CBMatrix, vecH::CBMatrix)
see BundleProxObject::addlowrankvariable_metric()
cb_add_variable_metric!(self::CBBundleDiagonalTrustRegionProx, diagH::CBMatrix, vecH::CBMatrix)
see BundleProxObject::adddynamicscaling()
cb_add_variable_metric!(self::CBBundleDLRTrustRegionProx, diagH::CBMatrix, vecH::CBMatrix)
see BundleProxObject::addvariablemetric()
cb_add_variable_metric!(self::CBBundleLowRankTrustRegionProx, diagH::CBMatrix, vecH::CBMatrix)
see BundleProxObject::adddynamicscaling()
cb_add_variable_metric!(self::CBLPGroundset, H::CBVariableMetric, y_id::Integer, y::CBMatrix, descent_step::Bool, weightu::Real, model_maxviol::Real, indices::Union{<:CBIndexmatrix,Nothing} = nothing)
see VariableMetric
cb_add_variable_metric!(self::CBAFTModel, H::CBVariableMetric, center_id::Integer, y::CBMatrix, descent_step::Bool, weightu::Real, model_maxviol::Real, indices::Union{<:CBIndexmatrix,Nothing} = nothing)
see DynamicScaling
cb_add_variable_metric!(self::CBSumModel, H::CBVariableMetric, y_id::Integer, y::CBMatrix, descent_step::Bool, weightu::Real, model_maxviol::Real, indices::Union{<:CBIndexmatrix,Nothing} = nothing)
see BundleModel::adddynamicscaling
cb_add_variable_metric!(self::CBPSCVariableMetricSelection, H::CBVariableMetric, y_id::Integer, y::CBMatrix, descent_step::Bool, weightu::Real, model_maxviol::Real, indices::Union{<:CBIndexmatrix,Nothing}, bundle_data::CBVariableMetricBundleData)
see ConicBundle::VariableMetricSelection::addvariablemetric(); here it must be possible to cast bundledata to PSCData&, otherwise the routine returns an error. It only adds something after a descentstep
cb_add_variable_metric!(self::CBVariableMetricSVDSelection, H::CBVariableMetric, y_id::Integer, y::CBMatrix, descent_step::Bool, weightu::Real, model_maxviol::Real, indices::Union{<:CBIndexmatrix,Nothing}, bundle_data::CBVariableMetricBundleData)
see ConicBundle::VariableMetricSelection::addvariablemetric()
cb_add_variable_metric!(self::CBSumBundleHandler, ft::CBFunctionTask, H::CBVariableMetric, yid::Integer, y::CBMatrix, descent_step::Bool, weightu::Real, model_maxviol::Real, indices::Union{<:CBIndexmatrix,Nothing} = nothing)
see DynamicScaling
cb_add_variable_metric!(self::CBSumBundleHandler, H::CBVariableMetric, yid::Integer, center_y::CBMatrix, descent_step::Bool, weightu::Real, model_maxviol::Real, indices::Union{<:CBIndexmatrix,Nothing} = nothing)
see DynamicScaling
ConicBundle.cb_add_xinv_kron_z!
— Functioncb_add_xinv_kron_z!(self::CBUQPConeModelBlock, barQ::CBSymmatrix)
add the system term corresponding to (xinv kron z) (that arises from solving the linearized perturbed complementarity system xz =0 or =muI for dx in the preferred search direction) to the diagonal block corresponding to qpxrange x qpxrange
cb_add_xinv_kron_z!(self::CBUQPSumModelBlock, barQ::CBSymmatrix)
add this for all subblocks
ConicBundle.cb_addmeto
— Functioncb_addmeto(self::CBCMgramdense, S::CBSymmatrix, d::Real = 1.)
computes S+=d(this);
cb_addmeto(self::CBCMgramsparse, S::CBSymmatrix, d::Real = 1.)
computes S+=d(this);
cb_addmeto(self::CBCMgramsparse_withoutdiag, S::CBSymmatrix, d::Real = 1.)
computes S+=d(this);
cb_addmeto(self::CBCMlowrankdd, S::CBSymmatrix, d::Real = 1.)
computes S+=d(this);
cb_addmeto(self::CBCMlowranksd, S::CBSymmatrix, d::Real = 1.)
computes S+=d(this);
cb_addmeto(self::CBCMlowrankss, S::CBSymmatrix, d::Real = 1.)
computes S+=d(this);
cb_addmeto(self::CBCMsingleton, S::CBSymmatrix, d::Real = 1.)
computes S+=d(this);
cb_addmeto(self::CBCMsymdense, S::CBSymmatrix, d::Real = 1.)
computes S+=d(this);
cb_addmeto(self::CBCMsymsparse, S::CBSymmatrix, d::Real = 1.)
computes S+=d(this);
ConicBundle.cb_addprodto
— Functioncb_addprodto(self::CBCMgramdense, B::CBMatrix, C::CBMatrix, d::Real = 1.)
computes B+=d(this)*C
cb_addprodto(self::CBCMgramdense, B::CBMatrix, C::CBSparsemat, d::Real = 1.)
computes B+=d(this)*C
cb_addprodto(self::CBCMgramsparse, B::CBMatrix, C::CBMatrix, d::Real = 1.)
computes B+=d(this)*C
cb_addprodto(self::CBCMgramsparse, B::CBMatrix, C::CBSparsemat, d::Real = 1.)
computes B+=d(this)*C
cb_addprodto(self::CBCMgramsparse_withoutdiag, B::CBMatrix, C::CBMatrix, d::Real = 1.)
computes B+=d(this)*C
cb_addprodto(self::CBCMgramsparse_withoutdiag, B::CBMatrix, C::CBSparsemat, d::Real = 1.)
computes B+=d(this)*C
cb_addprodto(self::CBCMlowrankdd, D::CBMatrix, C::CBMatrix, d::Real = 1.)
computes D+=d(this)*C
cb_addprodto(self::CBCMlowrankdd, D::CBMatrix, C::CBSparsemat, d::Real = 1.)
computes D+=d(this)*C
cb_addprodto(self::CBCMlowranksd, D::CBMatrix, C::CBMatrix, d::Real = 1.)
computes D+=d(this)*C
cb_addprodto(self::CBCMlowranksd, D::CBMatrix, C::CBSparsemat, d::Real = 1.)
computes D+=d(this)*C
cb_addprodto(self::CBCMlowrankss, D::CBMatrix, C::CBMatrix, d::Real = 1.)
computes D+=d(this)*C
cb_addprodto(self::CBCMlowrankss, D::CBMatrix, C::CBSparsemat, d::Real = 1.)
computes D+=d(this)*C
cb_addprodto(self::CBCMsingleton, B::CBMatrix, C::CBMatrix, d::Real = 1.)
comutes B+=d(this)*C
cb_addprodto(self::CBCMsingleton, B::CBMatrix, C::CBSparsemat, d::Real = 1.)
computes B+=d(this)*C
cb_addprodto(self::CBCMsymdense, B::CBMatrix, C::CBMatrix, d::Real = 1.)
computes B+=d(this)*C
cb_addprodto(self::CBCMsymdense, B::CBMatrix, C::CBSparsemat, d::Real = 1.)
computes B+=d(this)*C
cb_addprodto(self::CBCMsymsparse, B::CBMatrix, C::CBMatrix, d::Real = 1.)
computes B+=d(this)*C
cb_addprodto(self::CBCMsymsparse, B::CBMatrix, C::CBSparsemat, d::Real = 1.)
computes B+=d(this)*C
ConicBundle.cb_adjust_multiplier!
— Functioncb_adjust_multiplier!(self::CBMatrixCBSolver)
@brief Adjusts on all conic functions the penalty parameter for conic violations to twice the trace of the primal approximation.
This routine is only needed for conic function objects such as the nonnegative cone, the second order cone and the semidefinite cone if no good upper bound on the trace of feasible points is known and has to be determined automatically. If after some time, the trace values settle, the upper bounds on the trace may be way to high and can then be reset with this call. @return - 0 on success - != 0 otherwise
cb_adjust_multiplier!(self::CBAFTModel, values_may_have_changed::Bool)
see SumBlockModel::adjust_multiplier
cb_adjust_multiplier!(self::CBSumModel, values_may_have_changed::Bool)
see SumBlockModel::adjust_multiplier()
cb_adjust_multiplier!(self::CBSumBundleHandler, values_may_have_changed::Bool)
see SumBlockModel::adjust_multiplier
ConicBundle.cb_adjust_trace!
— Functioncb_adjust_trace!(self::CBQPConeModelBlock, b::Real)
change the right hand side of the trace constraint to b
cb_adjust_trace!(self::CBUQPConeModelBlock, b::Real)
change the right hand side of the trace constraint to b
ConicBundle.cb_aggregate
— Functioncb_aggregate(self::CBMinorantPointer)
*@brief returns ture if it points to a combination of minorants from the same function;
A minorant is considered an aggregate if it is obtained from an aggregate
or it was computed by a call to aggregate(MinorantBundle&,Real);
It is not an aggregate if it is the sum of non aggregate minorants from
different functions.
An _empty_ pointer is not an aggregate.
cb_aggregate(self::CBMinorantUseData)
returns true if the minorant is an aggregate of several minorants
ConicBundle.cb_aggregate!
— Functioncb_aggregate!(self::CBMinorantPointer, minorants::CBMinorantBundle, coeff::CBMatrix, factor::Real = 1.)
*@brief collect the aggregate as the nonnegative linear combination of the bundle minorants (here *this may not be part of the bundle!). If *this is not empty, add this aggregate to *this. Only aggregation carries along primal data!
All minorants in the bundle need to be valid. Aggregating over no minorants
is treated as a zero minorant without any primal information.
cb_aggregate!(self::CBMinorantPointer, minorant::CBMinorantPointer, itsfactor::Real = 1.)
@brief aggregate the minorantitsfactor to *this, both must be valid for this. Only aggregation carries along primal data!
cb_aggregate!(self::CBMinorant, minorant::CBMinorant, factor::Real = 1.)
adds factor*minorant to this and does this also for the primal if it is availabe
ConicBundle.cb_aggregate_Gram_matrix!
— Functioncb_aggregate_Gram_matrix!(self::CBBlockPSCPrimal, P::CBMatrix, factor::Real = 1.)
@brief add factorP*P^T to this
The rows of P corresponding to each block are passed on the
with a corresponding call to the PSCPrimal of this block
cb_aggregate_Gram_matrix!(self::CBDensePSCPrimal, P::CBMatrix, factor::Real = 1.)
add factorPP^T to this
cb_aggregate_Gram_matrix!(self::CBGramSparsePSCPrimal, P::CBMatrix, factor::Real = 1.)
@brief add factorP*P^T to this, collecting all available information only in the sparse part, even the own Gram part.
This operation more or less converts this to a SparsePSCPrimal. The point
is that this routine is typically only called by PSCModel when aggregating
the information in a single aggregate matrix over several steps and it is
pointless to try to keep any gram information in this case.
cb_aggregate_Gram_matrix!(self::CBSparsePSCPrimal, P::CBMatrix, factor::Real = 1.)
add factorPP^T on the support to this
ConicBundle.cb_aggregate_primal_data!
— Functioncb_aggregate_primal_data!(self::CBPrimalMatrix, it::CBPrimalData, itsfactor::Real)
multiply this Matrix with myfactor and add itsfactorit (it must dynamic_cast to a PrimalMatrix)
cb_aggregate_primal_data!(self::CBBlockPSCPrimal, it::CBPrimalData, factor::Real = 1.)
- add factor*it to this (it must also be a BlockPSCPrimal with the same block partition)
cb_aggregate_primal_data!(self::CBDensePSCPrimal, it::CBPrimalData, factor::Real = 1.)
add factor*it to this (it must also be a DensePSCPrimal)
cb_aggregate_primal_data!(self::CBGramSparsePSCPrimal, it::CBPrimalData, factor::Real = 1.)
@brief if it is a GramSparsePSCPrimal or SparseSDPRimal, add factorit to this on only the support of this sparsematrix
Even if it is a GramSparsePSCPrimal and it has a nontirival Gram matrix part,
this part is only added to the sparse part of this on the support of the
sparse part of this. No attempt is made to enlarge the Gram part.
cb_aggregate_primal_data!(self::CBSparsePSCPrimal, it::CBPrimalData, factor::Real = 1.)
if it is a SparseSDPRimal, add factor*it to this on the support of this
ConicBundle.cb_aggregated!
— Functioncb_aggregated!(self::CBMinorantUseData, n::Integer)
add @a n to the number couting the aggregations
ConicBundle.cb_analyze_modification
— Functioncb_analyze_modification(self::CBAffineFunctionTransformation, minorant_trafo_differs::Bool, aftmdf::Union{<:CBAFTModification,Nothing}, gsmdf::CBGroundsetModification)
@brief returns information on the changes in the ground set of the transformed arguments and checks whether after the modification the nonzero image of the transformed minorants will not differ from before; returns NULL on errors.
If argtrafo==NULL (act as identity) and if aftmdf!=NULL adds any explicit matrix parts or has modifications not consistent with maintaining the identity, argtrafo is virtually first set to an explicit identity before executing the modification. If argtrafo==NULL and aftmdf==NULL, the transformations of gsmdf are applied to linearcost and arg_offset.
If the input @a gsmdf and the AFT modifications in @a aftmdf result in a different GroundsetModification of the transformed space, this is computed into the member @a localgsmdf and the returned pointer points to this @a localgsmdf. If all transformations are passed on exactly as in @a gsmdf (because the trafo still acts as the identity), the returned pointer points to @a gsmdf.
If the changes affect the transformation at all in its effect
on the nonzero image of transformed minorants, @a minoranttrafodiffers will be set to true otherwise to false.
ConicBundle.cb_append!
— Functioncb_append!(self::CBQPSumModelBlock, inblock::Union{<:CBQPModelDataObject,Nothing})
add another model at the end of the list
cb_append!(self::CBUQPSumModelBlock, inblock::Union{<:CBQPModelDataObject,Nothing})
add another model at the end of the list
ConicBundle.cb_append_blocks!
— Functioncb_append_blocks!(self::CBSparseCoeffmatMatrix, append_mat::CBSparseCoeffmatMatrix, blocks::Union{<:CBIndexmatrix,Nothing} = nothing, cols::Union{<:CBIndexmatrix,Nothing} = nothing)
@brief append append_mat (or its submatrix given by blocks and/or cols) below
If blocks or cols have negative entries, each of these represent a row of blocks of zeros whose order is the negative of the given value or a column of zeros of appropriate size (the size of the negative value does not matter for columns)
ConicBundle.cb_append_columns!
— Functioncb_append_columns!(self::CBSparseCoeffmatMatrix, append_mat::CBSparseCoeffmatMatrix, blocks::Union{<:CBIndexmatrix,Nothing} = nothing, cols::Union{<:CBIndexmatrix,Nothing} = nothing)
@brief append append_mat (or its submatrix given by blocks and/or cols) to the right
If blocks or cols have negative entries, each of these represent a row of blocks of zeros whose order is the negative of the given value (if columns exist already, these need to match the order of the existing blocks) or a column of zeros of appropriate size (the size of the negative value does not matter for columns)
ConicBundle.cb_append_constraints!
— Functioncb_append_constraints!(self::CBMatrixCBSolver, append_n_rows::Integer, append_rows::Union{<:CBSparsemat,Nothing} = nothing, append_rhslb::Union{<:CBMatrix,Nothing} = nothing, append_rhsub::Union{<:CBMatrix,Nothing} = nothing)
@brief append \f$rhslb\le Ay \le rhsub\f$ as linear constraints on the groundset variables \f$y\f$. \f$A\f$ has @a appendnrows new rows with coefficients given in appendrows (if NULL, use default value), lower bounds appendrhslb (if NULL use default) and upper bounds append_rhsub (if NULL use default)
@param[in] appendnrows (Integer) (nonnegative) number of rows to be appended as linear constraints on the ground set
@param[in] appendrows (Sparsemat*) describes the coefficients of the linear constraints; the number of rows must match appendn_rows, the number of columns must match the current dimension of the groundset; if NULL, all coefficients are considered zero.
@param[in] appendrhslb (Matrix*) specifies lower bounds on the values of the constraints; the number of rows must match appendnrows; if NULL, all coefficients are considered CBminus_infinity.
@param[in] appendrhsub (Matrix*) specifies upper bound on the values of the constraints; the number of rows must match appendnrows; if NULL, all coefficients are considered CBplus_infinity.
@return - 0 on success - != 0 otherwise
ConicBundle.cb_append_to_old
— Functioncb_append_to_old(self::CBAFTModification)
returns true if this only contains appending operations and incorporating this is done with respect to the old dimension
cb_append_to_old(self::CBGroundsetModification)
returns true if this only contains appending operations and incorporating this is done with respect to the old dimension
cb_append_to_old(self::CBNNCBoxSupportModification)
returns true if this only contains appending operations and incorporating this is done with respect to the old dimension
cb_append_to_old(self::CBPSCAffineModification)
returns true if this only contains appending operations and incorporating this is done with respect to the old dimension
cb_append_to_old(self::CBSOCSupportModification)
returns true if this only contains appending operations and incorporating this is done with respect to the old dimension
ConicBundle.cb_append_variables!
— Methodcb_append_variables!(self::CBMatrixCBSolver, n_append::Integer, lbounds::Union{<:CBMatrix,Nothing} = nothing, ubounds::Union{<:CBMatrix,Nothing} = nothing, constraint_columns::Union{<:CBSparsemat,Nothing} = nothing, startval::Union{<:CBMatrix,Nothing} = nothing, costs::Union{<:CBMatrix,Nothing} = nothing)
@brief Append new variables (always in last postions in this order).
@attention Be sure to include a desription of required changes to your functions via @a affectedfunctionswith_modifications
@param[in] n_append (int) number of variables to append (always in last position in the same order)
@param[in] lbounds (const Matrix*) If NULL, all appended variables are considered unbounded below, otherwise lbounds[i] gives the minimum feasible value for variable y[i], use ConicBundle::CBminusinfinity for unbounded below.
@param[in] ubounds (const Matrix*) If NULL, all appended variables are considered unbounded above, otherwise ubounds[i] gives the maximum feasible value for variable y[i], use ConicBundle::CBplusinfinity for unbounded above.
@param[in] constraintcolumns (const Sparsemat*) This must be NULL unless appendconstraints() has been used before for specifying linear constraints on the ground set; if there are constraints, NULL is interpreted as appending zero columns to the constraints, otherwise the the number of rows of the Sparsemant has to match the current number of linear constraints and the number of columns the must equal n_append.
@param[in] startval (const Matrix*) If NULL, the starting values are obtained by projecting zero onto the feasible set given by the lower and upper bounds resulting from the arguments before
@param[in] costs (const Matrix*) Use this in order to specify linear costs on the variables in addition to the functions (may be convenient in Lagrangean relaxation for the right hand side of coupling contsraints); NULL is equivalent to costs zero.
@param[in,out] affectedfunctionswithmodifications (const FunObjModMap*) If NULL, default actions are performed on all functions. In particular, those admitting dynamic argument changes will get the new variables appended at the end of their argument vector and (eventually) their applymodification() routines will be called informing them about the groundset changes; for those not admitting changes in their arguments, their corresponding (possibly newly created) affine function transformation will be set up to ignore the new arguments. If !=NULL, for the listed functions (and their parents up to the root function) the default appending action is performed unless their FunctionObjectModification entry gives explicit modification instructions which are then applied instead. For all functions NOT listed in the map and not having modified offsprings their corresponding aft will be set up to ignore the new variables.
@return - 0 on success - != 0 otherwise
ConicBundle.cb_appended_blockdim
— Functioncb_appended_blockdim(self::CBPSCAffineModification)
returns the number of rows that are appended (due to later reassignments they may no longer be located at the end)
ConicBundle.cb_appended_rowdim
— Functioncb_appended_rowdim(self::CBAFTModification)
returns the number of rows that are appended (due to later reassignments they may no longer be located at the end)
ConicBundle.cb_appended_vardim
— Functioncb_appended_vardim(self::CBAFTModification)
returns the number of variables that are appended (due to later reassignmentds they may no longer be located at the end)
cb_appended_vardim(self::CBGroundsetModification)
returns the number of variables that are appended (due to later reassignmentds they may no longer be located at the end)
cb_appended_vardim(self::CBNNCBoxSupportModification)
returns the number of variables that are appended (due to later reassignmentds they may no longer be located at the end)
cb_appended_vardim(self::CBPSCAffineModification)
returns the number of variables that are appended (due to later reassignmentds they may no longer be located at the end)
cb_appended_vardim(self::CBSOCSupportModification)
returns the number of variables that are appended (due to later reassignmentds they may no longer be located at the end)
ConicBundle.cb_apply_Hinv
— Functioncb_apply_Hinv(self::CBBundleDenseTrustRegionProx, x::CBMatrix)
returns \f$H^{-1}x\f$
cb_apply_Hinv(self::CBBundleDiagonalTrustRegionProx, x::CBMatrix)
returns \f$H^{-1}x\f$
cb_apply_Hinv(self::CBBundleDLRTrustRegionProx, x::CBMatrix)
returns \f$H^{-1}x\f$ where \f$H^{-1}=\frac1u(I-V(\Lambda/(\Lambda+u))V^\top)\f$
cb_apply_Hinv(self::CBBundleIdProx, x::CBMatrix)
returns \f$H^{-1}x\f$
cb_apply_Hinv(self::CBBundleLowRankTrustRegionProx, x::CBMatrix)
returns \f$H^{-1}x\f$ where \f$H^{-1}=\frac1u(I-V(\Lambda/(\Lambda+u))V^\top)\f$
ConicBundle.cb_apply_modification!
— Functioncb_apply_modification!(self::CBAffineFunctionTransformation, aftmdf::Union{<:CBAFTModification,Nothing}, gsmdf::CBGroundsetModification)
- @brief if argtrafo==NULL (act as identity) and if aftmdf!=NULL adds any explicit matrix parts or has modifications not consistent with maintaining the identity, argtrafo is first set to an explicit identity before executing the modification. If argtrafo==NULL and aftmdf==NULL, the transformations of gsmdf are applied to linearcost and arg_offset.
cb_apply_modification!(self::CBMinorantPointer, gsmdf::CBGroundsetModification, mod_id::Integer, mex::Union{<:CBMinorantExtender,Nothing}, apply_gsmdf_costs::Bool = false)
if valid and the local modificationid is smaller than modid, it modifies the coefficients as described by GroundsetModification; if successful, the modid is assigend and the function returns 0; otherwise it is invalidated and returns !=0; the costs of gsmdf are used only if applygsmdf_costs=false in whic case mex must be NULL
cb_apply_modification!(self::CBBoxData, param0::CBGroundsetModification, mex::Union{<:CBMinorantExtender,Nothing})
rearrange/extend the minorants according to the given groundset modifications
cb_apply_modification!(self::CBNNCData, param0::CBGroundsetModification, mex::Union{<:CBMinorantExtender,Nothing})
rearrange/extend the minorants according to the given groundset modifications
cb_apply_modification!(self::CBPSCData, param0::CBGroundsetModification, mex::Union{<:CBMinorantExtender,Nothing})
rearrange/extend the minorants according to the given groundset modifications
cb_apply_modification!(self::CBSOCData, param0::CBGroundsetModification, mex::Union{<:CBMinorantExtender,Nothing})
rearrange/extend the minorants according to the given groundset modifications
cb_apply_modification!(self::CBBundleHKWeight, gsmdf::CBGroundsetModification)
reinitialize after modifications
cb_apply_modification!(self::CBBundleRQBWeight, gsmdf::CBGroundsetModification)
reinitialize after modifications
cb_apply_modification!(self::CBBundleDenseTrustRegionProx, gsmdf::CBGroundsetModification)
when BundleSolver is called to modify the groundset it also calls this
cb_apply_modification!(self::CBBundleDiagonalTrustRegionProx, gsmdf::CBGroundsetModification)
when BundleSolver is called to modify the groundset it also calls this
cb_apply_modification!(self::CBBundleDLRTrustRegionProx, gsmdf::CBGroundsetModification)
when BundleSolver is called to modify the groundset it also calls this
cb_apply_modification!(self::CBBundleIdProx, gsmdf::CBGroundsetModification)
when BundleSolver is called to modify the groundset it also calls this
cb_apply_modification!(self::CBBundleLowRankTrustRegionProx, gsmdf::CBGroundsetModification)
when BundleSolver is called to modify the groundset it also calls this
cb_apply_modification!(self::CBUQPSolver, param0::CBGroundsetModification)
does nothing here (unconstrained case)
cb_apply_modification!(self::CBLPGroundset, mdf::CBGroundsetModification)
change the groundset description as specified by the argument
cb_apply_modification!(self::CBUnconstrainedGroundset, mdf::CBGroundsetModification)
change the groundset description as specified by the argument
cb_apply_modification!(self::CBSumBundle, gsmdf::CBGroundsetModification, mod_id::Integer, mex::Union{<:CBMinorantExtender,Nothing}, ft::CBFunctionTask)
rearrange/extend the minorants according to the given groundset modifications
cb_apply_modification!(self::CBBundleSolver, gsmdf::CBGroundsetModification)
modify the groundset as described by GroundsetModification and inform the oracle function(s) about this change (calls the other apply_modification for an empty FunObjModMap)
ConicBundle.cb_apply_modified_transform
— Functioncb_apply_modified_transform(self::CBAFTModification, out_y::CBMatrix, in_y::CBMatrix, arg_trafo::Union{<:CBSparsemat,Nothing}, arg_offset::Union{<:CBMatrix,Nothing})
transform the vector as if the Modification had been carried out
ConicBundle.cb_apply_to_PSCAffine
— Functioncb_apply_to_PSCAffine(self::CBPSCAffineModification, offset::Union{<:CBSparseCoeffmatMatrix,Nothing}, matrix::Union{<:CBSparseCoeffmatMatrix,Nothing})
@brief carry out the collected modifications on the data describing the PSCAffineFunction
If a specific parameter is NULL, no changes are performed on it, if it is not null, it must point to a SparseCoeffmatMatrix whose sizes correspond to the "old" data. Then the following operations will be performed on it in this sequence: 1. new variables (columns) are appended to the matrix 2. if reassignment information is given, the columns are mapped/reorderd as given by *map_to_old_variables() 3. new blocks (rows) are appended to the offset and the matrix 4. if reassignment information is given, the rows are mappen/reorderd as given by *map_to_old_blocks() @param[in,out] offset if not NULL, this points to the offset vector. @param[in,out] matrix if not NULL, this points to the old matrix. @return the number of dimension errors of non NULL inputs, if any, no modifications are made to any inputs.
ConicBundle.cb_apply_to_bounds
— Functioncb_apply_to_bounds(self::CBNNCBoxSupportModification, lb::CBMatrix, ub::CBMatrix)
carry out the collected modifications on the given vectors of lower and upper bounds on the variables by calling Modification::applytovars
ConicBundle.cb_apply_to_costs
— Functioncb_apply_to_costs(self::CBGroundsetModification, costs::CBMatrix)
carry out the collected modifications on the given vector by calling Modification::applytovars
ConicBundle.cb_apply_to_factor
— Functioncb_apply_to_factor(self::CBAFTModification)
multiply @a f by the factor
ConicBundle.cb_apply_to_offset
— Functioncb_apply_to_offset(self::CBAFTModification)
add to @a o the offset
ConicBundle.cb_apply_to_vars
— Functioncb_apply_to_vars(self::CBGroundsetModification, vars::CBMatrix)
carry out the collected modifications on the given vector by calling Modification::applytovars
ConicBundle.cb_apply_variable_metric!
— Functioncb_apply_variable_metric!(self::CBBundleDenseTrustRegionProx, groundset::Union{<:CBVariableMetricModel,Nothing}, model::Union{<:CBVariableMetricModel,Nothing}, aggr::CBMatrix, y_id::Integer, y::CBMatrix, descent_step::Bool, model_maxviol::Real, new_indices::Union{<:CBIndexmatrix,Nothing} = nothing)
see DynamicScaling
cb_apply_variable_metric!(self::CBBundleDiagonalTrustRegionProx, groundset::Union{<:CBVariableMetricModel,Nothing}, model::Union{<:CBVariableMetricModel,Nothing}, aggr::CBMatrix, y_id::Integer, y::CBMatrix, descent_step::Bool, model_maxviol::Real, new_indices::Union{<:CBIndexmatrix,Nothing} = nothing)
see VariableMetric
cb_apply_variable_metric!(self::CBBundleDLRTrustRegionProx, groundset::Union{<:CBVariableMetricModel,Nothing}, model::Union{<:CBVariableMetricModel,Nothing}, aggr::CBMatrix, y_id::Integer, y::CBMatrix, descent_step::Bool, model_maxviol::Real, new_indices::Union{<:CBIndexmatrix,Nothing} = nothing)
see DynamicScaling
cb_apply_variable_metric!(self::CBBundleLowRankTrustRegionProx, groundset::Union{<:CBVariableMetricModel,Nothing}, model::Union{<:CBVariableMetricModel,Nothing}, aggr::CBMatrix, y_id::Integer, y::CBMatrix, descent_step::Bool, model_maxviol::Real, new_indices::Union{<:CBIndexmatrix,Nothing} = nothing)
see DynamicProx
ConicBundle.cb_argument_changes
— Functioncb_argument_changes(self::CBAffineFunctionTransformation)
returns true if not the identity
ConicBundle.cb_assign_Gram_matrix!
— Functioncb_assign_Gram_matrix!(self::CBBlockPSCPrimal, P::CBMatrix)
*@brief for each element aij in the support set aij=<P.row(i),P.row(j)>
The rows of P corresponding to each block are passed on the
with a corresponding call to the PSCPrimal of this block
cb_assign_Gram_matrix!(self::CBDensePSCPrimal, P::CBMatrix)
assign P*P^T to this
cb_assign_Gram_matrix!(self::CBGramSparsePSCPrimal, P::CBMatrix)
Set the grammatrix part to \f$P\f$ and set all values on the sparse support to zero (but keep this support even if it is zero now!)
cb_assign_Gram_matrix!(self::CBSparsePSCPrimal, P::CBMatrix)
for each element aij in the support set aij=<P.row(i),P.row(j)>
ConicBundle.cb_block
— Functioncb_block(self::CBBlockPSCPrimal, i::Integer)
returns the PSCPrimal of block i if there is one, 0 otherwise
ConicBundle.cb_block_modifications
— Functioncb_block_modifications(self::CBPSCAffineModification)
returns true if some modifications are performed on the block structure
ConicBundle.cb_blockdim
— Functioncb_blockdim(self::CBSparseCoeffmatMatrix)
returns a column vector with row i giving the order of block i
cb_blockdim(self::CBSparseCoeffmatMatrix, i::Integer)
returns the order of block i
cb_blockdim(self::CBBlockPSCPrimal, i::Integer)
returns the size of block i
ConicBundle.cb_bundle_size
— Functioncb_bundle_size(self::CBSumBundle, ft::CBFunctionTask)
if BData exists for this mode it returns its bundle_size (possibly 0), otherwise 0
ConicBundle.cb_call_primal_extender!
— Functioncb_call_primal_extender!(self::CBMatrixCBSolver, function_::CBFunctionObject, primal_extender::CBPrimalExtender)
@brief Asks @a function to call @a primal_extender for each of its primal objects (see also FunctionOracle::evaluate() )
If the function is the Lagrangian dual of a primal problem and primaldata returned previous calls to the oracle has now to be updated due to changes in the primal problem – e.g., this may happen in column generation – the call causes updates of all internally stored primaldata objects by calling PrimalExtender::extend on each of these.
@param[in] function (const FunctionObject&) the function added in add_function() @param[in] primal_extender (PrimalExtender&) the object holding the extension function for primal_data @return - 0 on success - 1 if for this function it is not possible to use a primal_extender - 2 if the primal_extender would be applicable but there is no primal_data
cb_call_primal_extender!(self::CBMinorantPointer, prex::CBPrimalExtender, prex_id::Integer)
executes prex on the primal if its id is smaller then prex_id; returns != if this fails or not primal data is available
cb_call_primal_extender!(self::CBMinorantUseData, prex::CBPrimalExtender, in_prex_id::Integer)
apply the primal extender to the minorant if @a inprexid indicates a new extension
cb_call_primal_extender!(self::CBBoxData, prex::CBPrimalExtender, include_candidates::Bool = true)
see the last argument of BoxOracle::evaluate()
cb_call_primal_extender!(self::CBNNCData, prex::CBPrimalExtender, include_candidates::Bool = true)
see the last argument of FunctionOracle::evaluate()
cb_call_primal_extender!(self::CBPSCData, param0::CBPrimalExtender, include_candidates::Bool = true)
see the last argument of FunctionOracle::evaluate()
cb_call_primal_extender!(self::CBSOCData, param0::CBPrimalExtender, include_candidates::Bool = true)
see the last argument of FunctionOracle::evaluate()
cb_call_primal_extender!(self::CBAFTModel, param0::CBPrimalExtender)
an AFT has no primals, so it returns 1, see SumBlockModel::callprimalextender
cb_call_primal_extender!(self::CBBoxModel, prex::CBPrimalExtender)
see SumBlockModel::callprimalextender
cb_call_primal_extender!(self::CBNNCModel, prex::CBPrimalExtender)
see SumBlockModel::callprimalextender
cb_call_primal_extender!(self::CBPSCModel, prex::CBPrimalExtender)
see SumBlockModel::callprimalextender
cb_call_primal_extender!(self::CBSOCModel, prex::CBPrimalExtender)
see SumBlockModel::callprimalextender
cb_call_primal_extender!(self::CBSumModel, param0::CBPrimalExtender)
this has no primals, so it returns 1, see SumBlockModel::callprimalextender
cb_call_primal_extender!(self::CBSumBundle, prex::CBPrimalExtender, prex_id::Integer, ft::CBFunctionTask)
call this primal extender for the primals; if there minorants but no primals or if it fails, return 1
ConicBundle.cb_candidate!
— Functioncb_candidate!(self::CBLPGroundset, newy::CBMatrix, center_y::CBMatrix, center_value::Real, model_minorant::CBMinorantPointer, Hp::Union{<:CBBundleProxObject,Nothing}, delta_groundset_minorant::Union{<:CBMinorantPointer,Nothing} = nothing, delta_index::Union{<:CBIndexmatrix,Nothing} = nothing, relprec::Real = 1e-2)
computes the next ground set minorant and candidate, see Groundset::candidate()
cb_candidate!(self::CBUnconstrainedGroundset, newy::CBMatrix, center_y::CBMatrix, center_value::Real, model_minorant::CBMinorantPointer, Hp::Union{<:CBBundleProxObject,Nothing}, delta_groundset_minorant::Union{<:CBMinorantPointer,Nothing} = nothing, delta_index::Union{<:CBIndexmatrix,Nothing} = nothing, relprec::Real = 1e-2)
@brief for a given model aggregate compute the groundset aggregate and the resulting (feasible) candidate
Let \f$ (\sigma,s) \f$ be the aggregate minorant \f$\sigma+s^\top y\le f(y)\f$ of the cost function described by @a modelsubgoffset and @a modelsubg, let \f$\hat y\f$ be the center of stability given by @a centery, let \f$H\f$ denote the positive definite scaling matrix with weight \f$u\f$ given by @a Hp, let \f$Y\f$ denote this (convex) feasible ground set and \f$i_Y\f$ its indicator function, then this computes a saddle point \f$(y,(\gamma,g))\f$ of
\f[ \max{(\gamma,g)\in\partial iY}\min{y\in\mathbf{R}^n} [(s+g)^\top y + \gamma+\sigma +\frac{u}2\|y-\hat y\|H^2],\f]
The resulting \f$y\f$ is feasible and stored in @a newy. @a linval gets \f$\gamma+\sigma+(g+s)^\top y\f$, @a subgnorm2 gets \f$u\|y-\hat x\|_H^2\f$, @a augval gets @a linval+@a subgnorm2 /2.
If @a deltagroundsetsubg is not NULL, also @a eltagroundsetsubgoffset and @a delta index are assumed to be not NULL. Then all changes from the previous groundset aggregate minorant to the new groundset aggregate minorant \f$(\gamma,g)\f$ are stored in @a deltagroundsetsubgoffset and @a deltagroundsetsubg and @a deltaindex holds the indices of the nonzero changes (mostly the groundset aggregate is sparse, e.g. due to complementarity). This is used in BundleProxObject::updateQP_costs().
On input \f$\varepsilon=\f$ @a relprec, \f$\bar f=\f$ @a center_value, and \f$\underline{f}=\f$ @a augval serve to form appropriate stopping criteria if solving the saddle point problem requires a nonlinear convex optimization method. The method is then assumed to produce a primal solution \f$y\in Y\f$ of value \f$\bar s\f$ and a dual solution \f$(\gamma,g)\f$ of value \f$\underline{g}\f$ with the properties \f$\underline g-\underline f\ge 0\f$ and \f$\bar f-\bar s\ge 0\f$ and \f$\bar s-\underline{g}\le\varepsilon(|\bar s|+1.)\f$. In particular \f$y\in Y\f$ is assumed to hold to machine precision.
If useyfixing is true (the fixing heuristic is switched on), then \fyi=\hat yi\f$ is required to hold for all i with yfixed(i)!=0, so these coordinates are not allowed to change. In particular, this routine may also set yfixed(i)=2 for new coordinates i, where 2 is used to indicate newly fixed variables. These will be reset to 1 in BundlesScaling::computeQPcosts() and BundlesScaling::updateQP_costs() when this information has been digested.
In some derived classes a scaling heuristic is called that may influence the scaling @a Hp so as to avoid going outside the feasible region too far.
@param[out] gsid the current groundsetid
@param[out] newy the next candidate y (feasible)
@param[out] candgsval the value of the groundset minorant in the candidate y (=groundset objective)
@param[out] linval (CHMatrixClasses::Real&) value of linear minorant in y
@param[in,out] augvallb (CHMatrix_Classes::Real&) - on input: lower bound value of augmented model in previous (maybe infeasible) candidate - on output: lower bound value of augmented model in y
@param[out] augvalub (CHMatrix_Classes::Real&) - on output: upper bound value of augmented model in y
@param[out] subgnorm2 (CHMatrixClasses::Real&) squared Hp-norm (with weight) of joint groundset and model aggregate
@param[in] centery (const CHMatrix_Classes::Matrix&) center of stability (feasible)
@param[in] centervalue (CHMatrixClasses::Real) function value in centery
@param[in] model_minorant (const MinorantPoiner&) aggregate linear minorant of the cost function
@param[in,out] Hp (ConicBundle::BundleProxObject*) pointer to scaling matrix H, may be influenced by a scaling heuristic
@param[in,out] deltagroundsetminorant (MinorantPointer*) if not NULL, the change in groundset aggregate will be stored here
@param[in,out] deltaindex (CHMatrixClasses::Indexmatrix*) must be not NULL iff deltagroundsetsubg!=NULL or yfixed has changed, will store nonzero indices of deltagroundset_subg
@param[in] relprec (CHMatrixClasses::Real) relative precision for termination in QP computations
@return 0 on success, != 0 on failure
ConicBundle.cb_ceil
— Functioncb_ceil(A::CBMatrix)
returns a matrix with elements (i,j)=ceil((*this)(i,j)) for all i,j
ConicBundle.cb_ceil!
— Functioncb_ceil!(self::CBMatrix)
sets (this)(i,j)=ceil((this)(i,j)) for all i,j and returns *this
ConicBundle.cb_center_modified!
— Functioncb_center_modified!(self::CBAFTData, center_id::Integer)
check whether center computation is still valid for this point and modification id
cb_center_modified!(self::CBAFTModel, center_id::Integer)
see BundleModel::center_modified
cb_center_modified!(self::CBSumModel, center_id::Integer)
see BundleModel::center_modified
ConicBundle.cb_check_center_validity_by_candidate!
— Functioncb_check_center_validity_by_candidate!(self::CBAFTModel, cand_minorant_is_below::Bool, center_id::Integer, center_y::CBMatrix)
see BundleModel::checkcentervaliditybycandidate
cb_check_center_validity_by_candidate!(self::CBSumModel, cand_minorant_is_below::Bool, center_id::Integer, center_y::CBMatrix)
see BundleModel::checkcentervaliditybycandidate
ConicBundle.cb_check_correctness
— Functioncb_check_correctness(self::CBBoxOracle)
*@brief switch on/off some correctnes checks on the oracle
cb_check_correctness(self::CBNNCBoxSupportFunction)
see MatrixFunctionOracle::check_correctness() (true only needed for debugging)
cb_check_correctness(self::CBPSCAffineFunction)
see PSCOracle::check_correctness()
cb_check_correctness(self::CBSOCSupportFunction)
see SOCOracle::check_correctness() (true only needed for debugging)
ConicBundle.cb_check_support
— Functioncb_check_support(self::CBSparsesym, i::Integer, j::Integer)
returns 0 if (i,j) is not in the support, 1 otherwise
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBAFTData, start_modification_id::Integer = 0)
reset to initial state (also used by the default constructor)
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBAFTModel)
overloads the SumBlockModel::clear calling the other clear with parameter 0
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBAFTModel, inaft::Union{<:CBAffineFunctionTransformation,Nothing}, start_modification_id::Integer = 0)
resets all data to the inital state, except for aft which is unchanged unless @a inaft ist not NULL, which then replaces aft
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBAFTModification, var_olddim::Integer, row_olddim::Integer)
reset modifications to an unmodified object currently having varolddim columns and rowolddim rows, calls Modification::clear
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBBoxData, start_modification_id::Integer = 0)
reset to initial state (also used by the default constructor)
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBBoxModel)
resets all data to initial status of this class, also the bundle parameters
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBBundleHKWeight)
reset all adaptive variables and parameters
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBBundleRQBWeight)
reset all adaptive variables and parameters
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBBundleSolver)
resets all variables and pointers to classes to initial state and calls set_defaults()
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBBundleTerminator)
resets @a terminated
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBGroundsetModification, var_olddim::Integer)
reset modifications to an unmodified object currently having var_olddim variables, calls Modification::clear
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBLPGroundset, indim::Integer = 0, in_groundset_id::Integer = 0)
resets all values as described in Groundset::clear()
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBMatrixCBSolver)
- @brief Clears all data structures and problem information but keeps ouptut settings and algorithmic parameter settings
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBMinorantPointer)
afterwards the pointer is empty (calls delete_data())
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBNNCBoxSupportModification, var_olddim::Integer)
reset modifications to an unmodified object currently having var_olddim variables, calls Modification::clear
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBNNCData, start_modification_id::Integer = 0)
reset to initial state (also used by the default constructor)
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBNNCModel)
resets all data to initial status of this class, also the bundle parameters
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBPSCAffineModification, var_olddim::Integer, block_olddim::CBIndexmatrix)
@brief resets all variables so that the object to be modified has starting size varolddim (number of variables) and blockolddim (number of rows) and no modifications
The actual old data is not needed at this point, the changes on it will be collected and excuted in the routines apply_to_vars and apply_to_blocks Setting the parameter ensure_start_val_box_feasibility to true will cause the algorithm to check in add_append_vars() whether the input values are within the given bounds and in apply_to_vars() it will project all start_values onto the bounds for all, old and new, indices (which might have been changed by then). If it is false (default), all values will be accepted as given. Setting the parameter ensure_bounds_consistency to true (default) will raise errors in add_append_vars() and in apply_to_vars() whenever there are lower bounds greater than the respective upper bounds so as to avoid trivial infeasibilities. This check is omitted if set to false. The remaining values give the values of plus and minus infinity the no bounds should exceed. These are the default values at the same time (maybe it might be good to have a separate default value, but this is not implemented here).
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBPSCData, start_modification_id::Integer = 0)
reset to initial state (also used by the default constructor)
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBPSCModel)
resets all data to initial status of this class, also the bundle parameters
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBQPConeModelBlock)
reset to "empty/no" model
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBQPDirectKKTSolver)
reset data to empty
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBQPKKTSolverComparison)
reset data to empty
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBQPSumModelBlock)
reset to "empty/no" model
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBSOCData, start_modification_id::Integer = 0)
reset to initial state (also used by the default constructor)
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBSOCModel)
resets all data to initial status of this class, also the bundle parameters
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBSOCSupportModification, var_olddim::Integer)
reset modifications to an unmodified object currently having var_olddim variables, calls Modification::clear
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBSparseCoeffmatMatrix)
clears all (empty 0 times 0 matrix)
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBSumModel)
resets the SumModel to its initial state, in particular it removes but does not delete any Models added in add_model() (their AFTs are deleted if not explicitly denied)
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBUQPConeModelBlock)
reinitialize to "empty/no" model
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBUQPSolver)
reset to "empty/no" model
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBUQPSumModelBlock)
reset to "empty/no" model
ConicBundle.cb_clear!
— Methodcb_clear!(self::CBUnconstrainedGroundset, indim::Integer = 0, in_groundset_id::Integer = 0)
@brief reset everything to initial state for an unconstrained ground set of dimension @a indim
Note that a ground set is allowed to have dimension zero. This will lead to evaluating a function without arguments and is a realistic scenario in Lagrangean relaxation of cutting plane approaches if no cutting planes have been added yet. If the changes to the ground set are to be counted by groundset_id, then it makes sense to enter the appropriate value in in_groundset_id.
ConicBundle.cb_clear_aggregates!
— Functioncb_clear_aggregates!(self::CBMatrixCBSolver, function_::Union{<:CBFunctionObject,Nothing} = nothing)
@brief Clears the aggregate parts of the cutting model of this @a function (but only for the given one, not recursively)
There should be no need to call this if the modification routines of this interface were used correctly. If, however, the oracle is modified by other means outside this interface, this has to be called whenever the specified function was modified so that the old aggregate subgradients and/or primal generators are no longer valid. @param[in] function (const FunctionObject&) the function added in add_function() @return - 0 on success - != 0 otherwise
cb_clear_aggregates!(self::CBAFTData)
delete all kinds of aggregates but keep explicit parts of the cutting model
cb_clear_aggregates!(self::CBBoxData)
remove all aggregate minorants
cb_clear_aggregates!(self::CBNNCData)
remove all aggregate minorants
cb_clear_aggregates!(self::CBPSCData)
delete all kinds of aggregates but keep explicit parts of the cutting model
cb_clear_aggregates!(self::CBSOCData)
delete all kinds of aggregates but keep explicit parts of the cutting model
cb_clear_aggregates!(self::CBAFTModel)
see SumBlockModel::clear_aggregates
cb_clear_aggregates!(self::CBSumModel)
see SumBlockModel::clear_aggregates
cb_clear_aggregates!(self::CBSumBundleHandler)
first calls remove_contributions(), then discards all aggregate minorants in the current model
ConicBundle.cb_clear_cand_minorants!
— Functioncb_clear_cand_minorants!(self::CBSumBundleHandler)
before contributing the new evaluation results, the candidates have to be cleared
ConicBundle.cb_clear_fail_counts!
— Methodcb_clear_fail_counts!(self::CBMatrixCBSolver)
@brief clears all fail counts on numerical function oder model failures, may be useful if this caused premature termination.
@return - 0 on success - != 0 otherwise
ConicBundle.cb_clear_fails!
— Functioncb_clear_fails!(self::CBBundleSolver)
resets all fail counts to zero (call this to resume computations
ConicBundle.cb_clear_model!
— Functioncb_clear_model!(self::CBAFTData, discard_minorants_only::Bool = false)
clear the cutting modle and all function evaluatoins
cb_clear_model!(self::CBBoxData, discard_minorants_only::Bool = false)
clear the cutting model and all function evaluations
cb_clear_model!(self::CBNNCData, discard_minorants_only::Bool = false)
clear the cutting model and all function evaluations
cb_clear_model!(self::CBPSCData, discard_minorants_only::Bool = false)
clear the cutting model and all function evaluations
cb_clear_model!(self::CBSOCData, discard_minorants_only::Bool = false)
clear the cutting model and all function evaluations
cb_clear_model!(self::CBAFTModel, discard_minorants_only::Bool = false)
see SumBlockModel::clear_model
cb_clear_model!(self::CBSumModel, discard_minorants_only::Bool = false)
see SumBlockModel::clear_model
cb_clear_model!(self::CBSumBundleHandler)
first calls remove_contributions(), then discards all current models
ConicBundle.cb_clear_terminated!
— Functioncb_clear_terminated!(self::CBBundleTerminator)
reset the termination code to zero (this does not remove the reason for the termination; for this, set other bounds or clear the numbers supplied by BundleTerminationData)
ConicBundle.cb_clone
— Functioncb_clone(self::CBCMgramdense)
makes an explicit copy of itself and returns a pointer to it
cb_clone(self::CBCMgramsparse)
makes an explicit copy of itself and returns a pointer to it
cb_clone(self::CBCMgramsparse_withoutdiag)
makes an explicit copy of itself and returns a pointer to it
cb_clone(self::CBCMlowrankdd)
makes an explicit copy of itself and returns a pointer to it
cb_clone(self::CBCMlowranksd)
makes an explicit copy of itself and returns a pointer to it
cb_clone(self::CBCMlowrankss)
makes an explicit copy of itself and returns a pointer to it
cb_clone(self::CBCMsingleton)
makes an explicit copy of itself and returns a pointer to it
cb_clone(self::CBCMsymdense)
makes an explicit copy of itself and returns a pointer to it
cb_clone(self::CBCMsymsparse)
makes an explicit copy of itself and returns a pointer to it
cb_clone(self::CBCoeffmatInfo)
generates a new copy of itself on the heap
cb_clone(self::CBAFTData)
return a pointer to a clone of this
cb_clone(self::CBBoxData)
return a pointer to a clone of this
cb_clone(self::CBNNCData)
return a pointer to a clone of this
cb_clone(self::CBPSCData)
return a pointer to a clone of this
cb_clone(self::CBSOCData)
return a pointer to a clone of this
ConicBundle.cb_clone!
— Functioncb_clone!(self::CBQPConeModelBlock)
return a cloned object on the heap
cb_clone!(self::CBQPSumModelBlock)
return a cloned object on the heap
ConicBundle.cb_clone_BundleParameters
— Functioncb_clone_BundleParameters(self::CBBoxModelParameters)
clone
cb_clone_BundleParameters(self::CBNNCModelParameters)
clone
cb_clone_BundleParameters(self::CBPSCModelParameters)
clone
cb_clone_BundleParameters(self::CBSOCModelParameters)
clone
cb_clone_BundleParameters(self::CBSumBundleParameters)
clone
ConicBundle.cb_clone_VariableMetricSelection!
— Functioncb_clone_VariableMetricSelection!(self::CBPSCVariableMetricSelection)
clone: the values are only preserved for those contained in the constructor: nlatestminorants, selection_method and oldfactor
cb_clone_VariableMetricSelection!(self::CBVariableMetricSVDSelection)
clone: the values are only preserved for those contained in the constructor: nlatestminorants, selection_method and oldfactor
ConicBundle.cb_clone_minorant
— Functioncb_clone_minorant(self::CBMinorant, factor::Real = 1., with_primal::Bool = true)
generates a full copy (multiplied by factor) on the heap and returns a pointer to it (it also includes a clone of the primal data if with_primal==true, otherwise the copy will have no primal data)
ConicBundle.cb_coeff
— Functioncb_coeff(self::CBMinorantPointer, i::Integer)
returns coefficient i of the minorant (including the internal scalings) or 0. if empty
cb_coeff(self::CBMinorantUseData, i::Integer)
return coefficient @a i of the minorant
ConicBundle.cb_coeff!
— Functioncb_coeff!(self::CBMinorant, i::Integer)
returns the value of the coefficient in coordinate i
ConicBundle.cb_col
— Functioncb_col(self::CBMatrix, i::Integer)
returns column i copied to a new matrix
cb_col(self::CBIndexmatrix, i::Integer)
returns column i copied to a new matrix
cb_col(self::CBSparsemat, i::Integer)
returns column i copied to a new sparse matrix
cb_col(self::CBSymmatrix, i::Integer)
returns column i copied to a new Matrix
ConicBundle.cb_col_nonzeros
— Functioncb_col_nonzeros(self::CBSparsemat, i::Integer, startind::Union{<:AbstractVector{Cint},Nothing} = nothing)
returns the number of nonzeros in column i; if nonzeros>0 and startind!=0 then the index of the first nonzero in colindex/colval is stored there
ConicBundle.cb_coldim
— Functioncb_coldim(self::CBMatrix)
returns the column dimension
cb_coldim(self::CBIndexmatrix)
returns the column dimension
cb_coldim(self::CBSparsemat)
returns the column dimension
cb_coldim(self::CBSymmatrix)
returns the column dimension
cb_coldim(self::CBSparsesym)
returns the column dimension
cb_coldim(self::CBSparseCoeffmatMatrix)
returns the number of columns (i.e. of blockdiagonal matrices)
ConicBundle.cb_colhouse
— Functioncb_colhouse(A::CBMatrix, v::CBMatrix, i::Integer, j::Integer)
Housholder post-multiplication of A with Householder vector v; the first nonzero of v is index i, the multplication is applied to all rows of A with index >=j; always returns 0
ConicBundle.cb_colip
— Functioncb_colip(A::CBMatrix, j::Integer, scaling::Union{<:CBMatrix,Nothing})
returns the squared Frobenius norm of column j of A, i.e., the sum of A(i,j)A(i,j) over all i with possibly (if scaling!=0) each term i multiplied by (scaling)(i)
cb_colip(A::CBSparsemat, j::Integer, scaling::Union{<:CBMatrix,Nothing})
returns the squared Frobenius norm of col i of A, i.e., the sum of A(i,j)A(i,j) over all i with possibly (if scaling!=0) each term i multiplied by (scaling)(i)
ConicBundle.cb_cols
— Functioncb_cols(self::CBMatrix, vec::CBIndexmatrix)
returns a matrix of size this->rowdim() x vec.dim(), with column i a copy of column vec(i) of *this
cb_cols(self::CBIndexmatrix, vec::CBIndexmatrix)
returns a matrix of size this->rowdim() x vec.dim(), with column i a copy of column vec(i) of *this
cb_cols(self::CBSparsemat, ind::CBIndexmatrix)
returns a sparse matrix of size this->rowdim() x vec.dim(), with column i a copy of column vec(i) of *this
cb_cols(self::CBSymmatrix, vec::CBIndexmatrix)
returns a matrix of size this->rowdim() x vec.dim(), with column i a copy of column vec(i) of *this
ConicBundle.cb_colsip
— Functioncb_colsip(A::CBMatrix)
returns the column vector of the squared Frobenius norm of all columns j of A, i.e., the sum of A(i,j)*A(i,j) over all i for each j
cb_colsip(A::CBSparsemat, scaling::Union{<:CBMatrix,Nothing})
returns the column vector of the squared Frobenius norm of all columns j of A, i.e., the sum of A(i,j)A(i,j) over all i for each j with possibly (if scaling~=0) each term i multiplied by (scaling)(i)
ConicBundle.cb_compute!
— Functioncb_compute!(self::CBMinRes, system::CBIterativeSystemObject, x::CBMatrix, termprec::Real, storex::Union{<:CBMatrix,Nothing} = nothing, storestep::Integer = 0)
compute the solution for system into x with (absolute) residual precision termprec
cb_compute!(self::CBPCG, system::CBIterativeSystemObject, x::CBMatrix, termprec::Real, storex::Union{<:CBMatrix,Nothing} = nothing, storestep::Integer = 0)
compute the solution for system into x with (absolute) residual precision termprec
cb_compute!(self::CBPsqmr, system::CBIterativeSystemObject, x::CBMatrix, termprec::Real, storex::Union{<:CBMatrix,Nothing} = nothing, storestep::Integer = 0)
compute the solution for system into x with (absolute) residual precision termprec
ConicBundle.cb_compute_QP_costs!
— Functioncb_compute_QP_costs!(self::CBBundleDenseTrustRegionProx, Q::CBSymmatrix, d::CBMatrix, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, y::CBMatrix, groundset_minorant::CBMinorantPointer, yfixed::Union{<:CBIndexmatrix,Nothing})
computes the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::computeQPcosts
cb_compute_QP_costs!(self::CBBundleDiagonalTrustRegionProx, Q::CBSymmatrix, d::CBMatrix, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, y::CBMatrix, groundset_minorant::CBMinorantPointer, yfixed::Union{<:CBIndexmatrix,Nothing})
computes the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::computeQPcosts
cb_compute_QP_costs!(self::CBBundleDLRTrustRegionProx, Q::CBSymmatrix, d::CBMatrix, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, y::CBMatrix, groundset_minorant::CBMinorantPointer, yfixed::Union{<:CBIndexmatrix,Nothing})
computes the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::computeQPcosts
cb_compute_QP_costs!(self::CBBundleIdProx, Q::CBSymmatrix, d::CBMatrix, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, y::CBMatrix, groundset_minorant::CBMinorantPointer, yfixed::Union{<:CBIndexmatrix,Nothing})
computes the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::computeQPcosts
cb_compute_QP_costs!(self::CBBundleLowRankTrustRegionProx, Q::CBSymmatrix, d::CBMatrix, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, y::CBMatrix, groundset_minorant::CBMinorantPointer, yfixed::Union{<:CBIndexmatrix,Nothing})
computes the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::computeQPcosts
ConicBundle.cb_compute_local_directions!
— Functioncb_compute_local_directions!(self::CBUQPConeModelBlock, qp_dx::CBMatrix, qp_dy::CBMatrix, rhs_resid::CBMatrix, dz::CBMatrix, duz::CBMatrix)
given the steps of the global part, compute the step of the local part
ConicBundle.cb_compute_step!
— Functioncb_compute_step!(self::CBQPConeModelBlock, ystep::CBMatrix, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
compute the step in the model space given the step in the design space
cb_compute_step!(self::CBQPSumModelBlock, ystep::CBMatrix, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
compute the step in the model space given the step in the design space
ConicBundle.cb_computed_Schur_step!
— Functioncb_computed_Schur_step!(self::CBQPConeModelBlock, xstep::CBMatrix, local_step::CBMatrix, startindex_model::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
use the computed step information to also compute the steps of the complemented parts
cb_computed_Schur_step!(self::CBQPSumModelBlock, xstep::CBMatrix, local_step::CBMatrix, startindex_model::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
for passing on the solution information after solvin the system
ConicBundle.cb_computed_step!
— Functioncb_computed_step!(self::CBQPConeModelBlock, modelxstep::CBMatrix, startindex_model::Integer, modelconstrstep::CBMatrix, startindex_constr::Integer)
store this computed step locally and compute the missing local dual step information
cb_computed_step!(self::CBQPSumModelBlock, modelxstep::CBMatrix, startindex_model::Integer, modelconstrstep::CBMatrix, startindex_constr::Integer)
store this computed step locally and compute the missing local dual step information
ConicBundle.cb_concat_below
— Functioncb_concat_below(A::CBMatrix, B::CBMatrix)
returns a bew matrix [A; B], i.e., it concats matrices A and B columnwise; A or B may be a 0x0 matrix
cb_concat_below(A::CBIndexmatrix, B::CBIndexmatrix)
returns the matrix [A; B], i.e., it concats matrices A and B columnwise; A or B may be a 0x0 matrix
cb_concat_below(A::CBSparsemat, B::CBSparsemat)
returns a new sparse matrix [A; B], i.e., it concats matrices A and B columnwise; A or B may be a 0x0 matrix
ConicBundle.cb_concat_below!
— Functioncb_concat_below!(self::CBMatrix, A::CBMatrix)
concats matrix A to the bottom of *this, A or *this may be the 0x0 matrix initally, returns *this
cb_concat_below!(self::CBMatrix, d::Real)
concat value d at the right of *this, *this must be a row vector or the 0x0 matrix, returns *this
cb_concat_below!(self::CBIndexmatrix, A::CBIndexmatrix)
concats matrix A to the bottom of *this, A or *this may be the 0x0 matrix initally, returns *this
cb_concat_below!(self::CBIndexmatrix, d::Integer)
concat value d at the bottom of *this, *this must be a column vector or the 0x0 matrix, returns *this
cb_concat_below!(self::CBSparsemat, A::CBSparsemat)
concats sparse matrix A to the bottom of *this, A or *this may be the 0x0 matrix initally, returns *this
ConicBundle.cb_concat_right
— Functioncb_concat_right(A::CBMatrix, B::CBMatrix)
returns a new matrix [A, B], i.e., it concats matrices A and B rowwise; A or B may be a 0x0 matrix
cb_concat_right(A::CBIndexmatrix, B::CBIndexmatrix)
returns a new matrix [A, B], i.e., it concats matrices A and B rowwise; A or B may be a 0x0 matrix
cb_concat_right(A::CBSparsemat, B::CBSparsemat)
returns a new sparse matrix [A, B], i.e., it concats matrices A and B rowwise; A or B may be a 0x0 matrix
ConicBundle.cb_concat_right!
— Functioncb_concat_right!(self::CBMatrix, A::CBMatrix, Atrans::Integer = 0)
concats matrix A (or its tranpose) to the right of *this, A or *this may be the 0x0 matrix initally, returns *this
cb_concat_right!(self::CBMatrix, d::Real)
concat value d at the bottom of *this, *this must be a column vector or the 0x0 matrix, returns *this
cb_concat_right!(self::CBIndexmatrix, A::CBIndexmatrix)
concats matrix A to the right of *this, A or *this may be the 0x0 matrix initally, returns *this
cb_concat_right!(self::CBIndexmatrix, d::Integer)
concat value d at the right of *this, *this must be a row vector or the 0x0 matrix, returns *this
cb_concat_right!(self::CBSparsemat, A::CBSparsemat)
concats sparse matrix A to the right of *this, A or *this may be the 0x0 matrix initally, returns *this
ConicBundle.cb_cond_number_mult!
— Functioncb_cond_number_mult!(self::CBQPKKTSubspaceHPrecond, vec::CBMatrix, KKTdiagx::CBMatrix, KKTdiagy::CBMatrix)
for estimating the condition number directly for the preconditioned part only
ConicBundle.cb_constrained
— Functioncb_constrained(self::CBLPGroundset)
returns false if the feasible set is the entire space (unconstrained optimization), true otherwise.
cb_constrained(self::CBUnconstrainedGroundset)
@brief returns false if the feasible set is the entire space (unconstrained optimization), true otherwise.
The current class implements the unconstrained case and always returns false.
ConicBundle.cb_constraints_cost!
— Functioncb_constraints_cost!(self::CBQPConeModelBlock)
returns the dual upper bound to the model value (the trace weighted sum of the dual trace variables); it returns 0. if no model is contained
cb_constraints_cost!(self::CBQPSumModelBlock)
returns the dual upper bound to the model value (the trace weighted sum of the dual trace variables); it returns 0. if no model is contained
ConicBundle.cb_contains_nan!
— Functioncb_contains_nan!(self::CBMatrix)
returns true if any matrix element returns true on std::isnan
ConicBundle.cb_contains_support
— Functioncb_contains_support(self::CBSparsemat, A::CBSparsemat)
returns 1 if A is of the same dimension and the support of A is contained in the support of *this, 0 otherwise
cb_contains_support(self::CBSparsesym, A::CBSparsesym)
returns 1 if A is of the same dimension and the support of A is contained in the support of *this, 0 otherwise
ConicBundle.cb_contribute_initial_bundle!
— Functioncb_contribute_initial_bundle!(self::CBSumBundleHandler, ft::CBFunctionTask, bundle_minorants::CBMinorantBundle, coeff::CBMatrix)
@brief (re)initialize the bundle of the respective part
This is only possible, if the handler handles a bundle for this. If not this causes an error. The main purpose is really to start the bundle on the fly if a parent starts a sumbundle in the middle of the computation. The information in coeff is assumed to yield the current aggregate. If this bundle part has been contributed berfore (its mode is child), the contribution is first removed from the parent. Then any existing information except for the function factor is discarded and replaced by the new bundle information with the number of contributions set to 1. If the size of primals is not zero, it must have one nonzero entry per column of minorants and all future calls via set_cand_minorant() also have to provide exactly one primal for each update.
ConicBundle.cb_contribute_new_minorants!
— Functioncb_contribute_new_minorants!(self::CBSumBundleHandler)
once all new minorants have been collected at this level, they are passed to the next if required
ConicBundle.cb_copy_traforows
— Functioncb_copy_traforows(self::CBAffineFunctionTransformation, copy_to::CBMatrix, copy_from::CBMatrix)
only copies the elements that are effected by the image of arg_trafo
ConicBundle.cb_delete_blocks!
— Functioncb_delete_blocks!(self::CBSparseCoeffmatMatrix, delete_indices::CBIndexmatrix, map_to_old::Union{<:CBIndexmatrix,Nothing} = nothing)
generates a maptoold by deleting the specified indices and calls reassignblocks; this mapto_old will be returned if the corresponding pointer is not NULL
ConicBundle.cb_delete_cols!
— Functioncb_delete_cols!(self::CBMatrix, ind::CBIndexmatrix, sorted_increasingly::Bool = false)
all colmuns indexed by vector ind are deleted, no column should appear twice in ind, remaining columns are moved left keeping their order, returns *this
cb_delete_cols!(self::CBIndexmatrix, ind::CBIndexmatrix, sorted_increasingly::Bool = false)
all colmuns indexed by vector ind are deleted, no column should appear twice in ind, remaining columns are moved up keeping their order, returns *this
cb_delete_cols!(self::CBSparsemat, ind::CBIndexmatrix)
all colmuns indexed by vector ind are deleted, no column should appear twice in ind, remaining columns are moved up keeping their order, returns *this
ConicBundle.cb_delete_columns!
— Functioncb_delete_columns!(self::CBSparseCoeffmatMatrix, delete_indices::CBIndexmatrix, map_to_old::Union{<:CBIndexmatrix,Nothing} = nothing)
generates a maptoold by deleting the specified indices and calls reassigncolumns; this mapto_old will be returned if the corresponding pointer is not NULL
ConicBundle.cb_delete_principal_submatrix!
— Functioncb_delete_principal_submatrix!(self::CBSymmatrix, ind::CBIndexmatrix, sorted_increasingly::Bool = false)
returns this afte deleting the principal submatrix indexed by ind (no repetitions!);
ConicBundle.cb_delete_rows!
— Functioncb_delete_rows!(self::CBMatrix, ind::CBIndexmatrix, sorted_increasingly::Bool = false)
all rows indexed by vector ind are deleted, no row should appear twice in ind, remaining rows are moved up keeping their order, returns *this
cb_delete_rows!(self::CBIndexmatrix, ind::CBIndexmatrix, sorted_increasingly::Bool = false)
all rows indexed by vector ind are deleted, no row should appear twice in ind, remaining rows are moved up keeping their order, returns *this
cb_delete_rows!(self::CBSparsemat, ind::CBIndexmatrix)
all rows indexed by vector ind are deleted, no row should appear twice in ind, remaining rows are moved up keeping their order, returns *this
ConicBundle.cb_delete_variables!
— Methodcb_delete_variables!(self::CBMatrixCBSolver, delete_indices::CBIndexmatrix, map_to_old::CBIndexmatrix)
@brief Deletes variables corresponding to the specified indices.
The indices of the remaining variables are reassigned so that they are consecutive again, the routine returns in @a map_to_old a vector giving for each new index of these remaining variables the old coordinate.
@attention Be sure to include a desription of required changes to your functions via @a affectedfunctionswith_modifications
@param[in] deleteindices (const Indexmatrix&) the entries deleteindices[i] specify the indices of the variables to be deleted
@param[out] maptoold (Indexmatrix&) after the call, element maptoold[i] gives the old index (before the call) of the variable that now has index position i.
@param[in] affectedfunctionswith_modifications (const FunObjModMap*) If NULL, default actions are performed on all functions. In particular, for those admitting dynamic argument changes all those variables will be deleted whose row in a corresponding updated affine function transformation (so after deletion of the columns of the incoming variables) corresponds to the zero map (i.e., offset and matrix row are both zero), furthermore identity transformations will be preserved. For those not admitting changes in their arguments, their corresponding (possibly newly created) affine function transformation will only get the columns deleted, but there will be no row deleltions. If !=NULL, for the listed functions (and their parents up to the root function) the default deletion action is performed unless their FunctionObjectModification entry gives explicit modification instructions which are then applied instead. For all functions NOT listed in the map and not having modified offsprings their corresponding aft will be set up to keep the arguments unchanged.
@return - 0 on success - != 0 otherwise
ConicBundle.cb_deleted_block_indices
— Functioncb_deleted_block_indices(self::CBPSCAffineModification)
returns null if there were no deletions, otherwise the Indexmatrix pointed to is a vector holding the deleted old row indices in increasing order
ConicBundle.cb_deleted_row_indices
— Functioncb_deleted_row_indices(self::CBAFTModification)
returns null if there were no deletions, otherwise the Indexmatrix pointed to is a vector holding the deleted old row indices in increasing order
ConicBundle.cb_deleted_var_indices
— Functioncb_deleted_var_indices(self::CBAFTModification)
returns null if there were no deletions, otherwise the Indexmatrix pointed to is a vector holding the deleted old variable indices in increasing order
cb_deleted_var_indices(self::CBGroundsetModification)
returns null if there were no deletions, otherwise the Indexmatrix pointed to is a vector holding the deleted old variable indices in increasing order
cb_deleted_var_indices(self::CBNNCBoxSupportModification)
returns null if there were no deletions, otherwise the Indexmatrix pointed to is a vector holding the deleted old variable indices in increasing order
cb_deleted_var_indices(self::CBPSCAffineModification)
returns null if there were no deletions, otherwise the Indexmatrix pointed to is a vector holding the deleted old variable indices in increasing order
cb_deleted_var_indices(self::CBSOCSupportModification)
returns null if there were no deletions, otherwise the Indexmatrix pointed to is a vector holding the deleted old variable indices in increasing order
ConicBundle.cb_deleted_variables_are_zero
— Functioncb_deleted_variables_are_zero(self::CBAFTModification, oldpoint::CBMatrix)
returns true if all entries deleted in @a oldpoint (must be a vector of length old_vardim()) are 0, false otherwise
cb_deleted_variables_are_zero(self::CBGroundsetModification, oldpoint::CBMatrix)
returns true if all entries deleted in @a oldpoint (must be a vector of length old_vardim()) are 0, false otherwise
cb_deleted_variables_are_zero(self::CBNNCBoxSupportModification, oldpoint::CBMatrix)
returns true if all entries deleted in @a oldpoint (must be a vector of length old_vardim()) are 0, false otherwise
cb_deleted_variables_are_zero(self::CBPSCAffineModification, oldpoint::CBMatrix, oldmat::CBSparseCoeffmatMatrix)
returns true if all entries deleted in @a oldpoint (must be a vector of length old_vardim()) or the corresponding entries in the old matrix are 0 and false otherwise
cb_deleted_variables_are_zero(self::CBSOCSupportModification, oldpoint::CBMatrix)
returns true if all entries deleted in @a oldpoint (must be a vector of length old_vardim()) are 0, false otherwise
ConicBundle.cb_dense
— Functioncb_dense(self::CBCMgramdense)
returns 1 if its structure is as bad as its dense symmetric representation, otherwise 0
cb_dense(self::CBCMgramsparse)
returns 1 if its structure is as bad as its dense symmetric representation, otherwise 0
cb_dense(self::CBCMgramsparse_withoutdiag)
returns 1 if its structure is as bad as its dense symmetric representation, otherwise 0
cb_dense(self::CBCMlowrankdd)
returns 1 if its structure is as bad as its dense symmetric representation, otherwise 0
cb_dense(self::CBCMlowranksd)
returns 1 if its structure is as bad as its dense symmetric representation, otherwise 0
cb_dense(self::CBCMlowrankss)
returns 1 if its structure is as bad as its dense symmetric representation, otherwise 0
cb_dense(self::CBCMsingleton)
returns 1 if its structure is as bad as its dense symmetric representation, otherwise 0
cb_dense(self::CBCMsymdense)
returns 1 if its structure is as bad as its dense symmetric representation, otherwise 0
cb_dense(self::CBCMsymsparse)
returns 1 if its structure is as bad as its dense symmetric representation, otherwise 0
ConicBundle.cb_descent_update!
— Functioncb_descent_update!(self::CBBundleHKWeight, newval::Real, oldval::Real, modelval::Real, y::CBMatrix, newy::CBMatrix, normsubg2::Real, Hp::Union{<:CBBundleProxObject,Nothing})
determine next weight after a descent step
cb_descent_update!(self::CBBundleRQBWeight, newval::Real, oldval::Real, modelval::Real, y::CBMatrix, newy::CBMatrix, normsubg2::Real, Hp::Union{<:CBBundleProxObject,Nothing})
determine next weight after a descent step
ConicBundle.cb_destroy!
— Functioncb_destroy!(obj::CBMatrix)
cb_destroy!(obj::CBIndexmatrix)
cb_destroy!(obj::CBSparsemat)
cb_destroy!(obj::CBSymmatrix)
cb_destroy!(obj::CBSparsesym)
cb_destroy!(obj::CBCMgramdense)
cb_destroy!(obj::CBCMgramsparse)
cb_destroy!(obj::CBCMgramsparse_withoutdiag)
cb_destroy!(obj::CBCMlowrankdd)
cb_destroy!(obj::CBCMlowranksd)
cb_destroy!(obj::CBCMlowrankss)
cb_destroy!(obj::CBCMsingleton)
cb_destroy!(obj::CBCMsymdense)
cb_destroy!(obj::CBCMsymsparse)
cb_destroy!(obj::CBSparseCoeffmatMatrix)
cb_destroy!(obj::CBGB_rand)
cb_destroy!(obj::CBCoeffmatInfo)
cb_destroy!(obj::CBPrimalMatrix)
cb_destroy!(obj::CBMatrixCBSolver)
cb_destroy!(obj::CBBlockPSCPrimal)
cb_destroy!(obj::CBDensePSCPrimal)
cb_destroy!(obj::CBGramSparsePSCPrimal)
cb_destroy!(obj::CBSparsePSCPrimal)
cb_destroy!(obj::CBAFTModification)
cb_destroy!(obj::CBGroundsetModification)
cb_destroy!(obj::CBNNCBoxSupportModification)
cb_destroy!(obj::CBPSCAffineModification)
cb_destroy!(obj::CBSOCSupportModification)
cb_destroy!(obj::CBAffineFunctionTransformation)
cb_destroy!(obj::CBMinorantPointer)
cb_destroy!(obj::CBMinorantUseData)
cb_destroy!(obj::CBMinorant)
cb_destroy!(obj::CBBoxPrimalExtender)
cb_destroy!(obj::CBBoxOracle)
cb_destroy!(obj::CBPSCPrimalExtender)
cb_destroy!(obj::CBPSCBundleParameters)
cb_destroy!(obj::CBSOCPrimalExtender)
cb_destroy!(obj::CBSOCBundleParameters)
cb_destroy!(obj::CBCFunctionMinorantExtender)
cb_destroy!(obj::CBCFunction)
cb_destroy!(obj::CBNNCBoxSupportMinorantExtender)
cb_destroy!(obj::CBNNCBoxSupportFunction)
cb_destroy!(obj::CBPSCAffineMinorantExtender)
cb_destroy!(obj::CBPSCAffineFunction)
cb_destroy!(obj::CBSOCSupportMinorantExtender)
cb_destroy!(obj::CBSOCSupportFunction)
cb_destroy!(obj::CBBoxModelParameters)
cb_destroy!(obj::CBNNCModelParameters)
cb_destroy!(obj::CBPSCModelParameters)
cb_destroy!(obj::CBSOCModelParameters)
cb_destroy!(obj::CBSumBundleParameters)
cb_destroy!(obj::CBAFTData)
cb_destroy!(obj::CBBoxData)
cb_destroy!(obj::CBNNCData)
cb_destroy!(obj::CBPSCData)
cb_destroy!(obj::CBSOCData)
cb_destroy!(obj::CBBundleHKWeight)
cb_destroy!(obj::CBBundleRQBWeight)
cb_destroy!(obj::CBBundleDenseTrustRegionProx)
cb_destroy!(obj::CBBundleDiagonalTrustRegionProx)
cb_destroy!(obj::CBBundleDLRTrustRegionProx)
cb_destroy!(obj::CBBundleIdProx)
cb_destroy!(obj::CBBundleLowRankTrustRegionProx)
cb_destroy!(obj::CBQPSolverParameters)
cb_destroy!(obj::CBQPSolver)
cb_destroy!(obj::CBUQPSolver)
cb_destroy!(obj::CBLPGroundset)
cb_destroy!(obj::CBUnconstrainedGroundset)
cb_destroy!(obj::CBAFTModel)
cb_destroy!(obj::CBBoxModel)
cb_destroy!(obj::CBNNCModel)
cb_destroy!(obj::CBPSCModel)
cb_destroy!(obj::CBSOCModel)
cb_destroy!(obj::CBSumModel)
cb_destroy!(obj::CBPSCVariableMetricSelection)
cb_destroy!(obj::CBVariableMetricSVDSelection)
cb_destroy!(obj::CBQPDirectKKTSolver)
cb_destroy!(obj::CBQPIterativeKKTHAeqSolver)
cb_destroy!(obj::CBQPIterativeKKTHASolver)
cb_destroy!(obj::CBQPKKTSolverComparison)
cb_destroy!(obj::CBSumBundleHandler)
cb_destroy!(obj::CBQPConeModelBlock)
cb_destroy!(obj::CBQPSumModelBlock)
cb_destroy!(obj::CBUQPConeModelBlock)
cb_destroy!(obj::CBUQPSumModelBlock)
cb_destroy!(obj::CBMinRes)
cb_destroy!(obj::CBPCG)
cb_destroy!(obj::CBPsqmr)
cb_destroy!(obj::CBQPKKTSubspaceHPrecond)
cb_destroy!(obj::CBSumBundle)
cb_destroy!(obj::CBBundleSolver)
cb_destroy!(obj::CBBundleTerminator)
cb_destroy!(obj::CBClock)
cb_destroy!(obj::CBMicroseconds)
ConicBundle.cb_diag
— Functioncb_diag(A::CBMatrix)
returns a column vector v consisting of the elements v(i)=(*this)(i,i), 0<=i<min(row dimension,column dimension)
cb_diag(A::CBIndexmatrix)
returns a column vector v consisting of the elements v(i)=A(i,i), 0<=i<min(row dimension,column dimension)
cb_diag(A::CBSymmatrix)
returns a column vector v consisting of the elements v(i)=(*this)(i,i), 0<=i<row dimension
cb_diag(A::CBSparsesym)
returns the diagonal of A as a dense Matrix vector
ConicBundle.cb_diagonal_bounds_scaling_update!
— Functioncb_diagonal_bounds_scaling_update!(self::CBBundleDenseTrustRegionProx, param0::CBMatrix)
- @brief if supported, Dupdate has to contain nonnegative numbers that are permanently added to the diagonal here. It is important to keep track of this change only if afterwards updateQPcosts is called before computeQPcosts. In this case the only nonzero enries in Dupdate must be those of delta_index
cb_diagonal_bounds_scaling_update!(self::CBBundleDiagonalTrustRegionProx, D_update::CBMatrix)
- @brief if supported, Dupdate has to contain nonnegative numbers that are permanently added to the diagonal here. It is important to keep track of this change only if afterwards updateQPcosts is called before computeQPcosts. In this case the only nonzero enries in Dupdate must be those of delta_index
cb_diagonal_bounds_scaling_update!(self::CBBundleDLRTrustRegionProx, param0::CBMatrix)
- @brief if supported, Dupdate has to contain nonnegative numbers that are permanently added to the diagonal here. It is important to keep track of this change only if afterwards updateQPcosts is called before computeQPcosts. In this case the only nonzero enries in Dupdate must be those of delta_index
ConicBundle.cb_diagonal_scaling_heuristic_update!
— Functioncb_diagonal_scaling_heuristic_update!(self::CBBundleLowRankTrustRegionProx, param0::CBMatrix)
- @brief if supported, Dupdate has to contain nonnegative numbers that are permanently added to the diagonal here. It is important to keep track of this change only if afterwards updateQPcosts is called before computeQPcosts. In this case the only nonzero enries in Dupdate must be those of delta_index
ConicBundle.cb_dim
— Functioncb_dim(self::CBMatrix)
returns the dimension rows * columns when the matrix is regarded as a vector
cb_dim(self::CBIndexmatrix)
returns the dimension rows * columns when the matrix is regarded as a vector
cb_dim(self::CBSparsemat)
returns the dimension rows * columns when the matrix is regarded as a vector
cb_dim(self::CBSymmatrix)
returns the dimension rows * columns when the matrix is regarded as a vector
cb_dim(self::CBSparsesym)
returns the dimension rows * columns when the matrix is regarded as a vector
cb_dim(self::CBCMgramdense)
returns the order of the represented symmetric matrix
cb_dim(self::CBCMgramsparse)
returns the order of the represented symmetric matrix
cb_dim(self::CBCMgramsparse_withoutdiag)
returns the order of the represented symmetric matrix
cb_dim(self::CBCMlowrankdd)
returns the order of the represented symmetric matrix
cb_dim(self::CBCMlowranksd)
returns the order of the represented symmetric matrix
cb_dim(self::CBCMlowrankss)
returns the order of the represented symmetric matrix
cb_dim(self::CBCMsingleton)
returns the order of the represented symmetric matrix
cb_dim(self::CBCMsymdense)
returns the order of the represented symmetric matrix
cb_dim(self::CBCMsymsparse)
returns the order of the represented symmetric matrix
cb_dim(self::CBBundleDenseTrustRegionProx)
returns the order of the matrix
cb_dim(self::CBBundleDiagonalTrustRegionProx)
returns the dimension of the diagonal
ConicBundle.cb_dim2
— Functioncb_dim2(self::CBMatrix)
returns the number of rows in _nr and the number of columns in _nc
cb_dim2(self::CBIndexmatrix)
returns the number of rows in _nr and the number of columns in _nc
cb_dim2(self::CBSparsemat)
returns the number of rows in _nr and the number of columns in _nc
cb_dim2(self::CBSymmatrix)
returns the number of rows in _nr and _nc
cb_dim2(self::CBSparsesym)
returns the number of rows in _nr and the number of columns in _nc
ConicBundle.cb_dim_constraints!
— Functioncb_dim_constraints!(self::CBQPConeModelBlock)
returns the dimension of the system describing the model set (may contain further constraints)
cb_dim_constraints!(self::CBQPSumModelBlock)
returns the dimension of the system describing the model set (may contain further constraints)
ConicBundle.cb_dim_model!
— Functioncb_dim_model!(self::CBQPConeModelBlock)
returns the dimension of the model set (here the same as the bundle size)
cb_dim_model!(self::CBQPSumModelBlock)
returns the dimension of the model set (here the same as the bundle size)
ConicBundle.cb_display
— Functioncb_display(self::CBMatrix, precision::Integer = 0, width::Integer = 0, screenwidth::Integer = 0)
- @brief displays a matrix in a pretty way for bounded screen widths; for variables of value zero default values are used.
cb_display(self::CBIndexmatrix, precision::Integer = 0, width::Integer = 0, screenwidth::Integer = 0)
- @brief displays a matrix in a pretty way for bounded screen widths; for variables of value zero default values are used.
cb_display(self::CBSparsemat, precision::Integer = 0, width::Integer = 0, screenwidth::Integer = 0)
- @brief displays a matrix in a pretty way for bounded screen widths; for variables of value zero default values are used.
cb_display(self::CBSymmatrix, precision::Integer = 0, width::Integer = 0, screenwidth::Integer = 0)
- @brief displays a matrix in a pretty way for bounded screen widths; for variables of value zero default values are used.
cb_display(self::CBSparsesym, precision::Integer = 0, width::Integer = 0, screenwidth::Integer = 0)
- @brief displays a matrix in a pretty way for bounded screen widths; for variables of value zero default values are used.
cb_display(self::CBCMgramdense)
display constraint information
cb_display(self::CBCMgramsparse)
display constraint information
cb_display(self::CBCMgramsparse_withoutdiag)
display constraint information
cb_display(self::CBCMlowrankdd)
display constraint information
cb_display(self::CBCMlowranksd)
display constraint information
cb_display(self::CBCMlowrankss)
display constraint information
cb_display(self::CBCMsingleton)
display constraint information
cb_display(self::CBCMsymdense)
display constraint information
cb_display(self::CBCMsymsparse)
display constraint information
cb_display(self::CBMinorantPointer, precision::Integer = 8)
output the Minorant in a nice format
ConicBundle.cb_display_model_values!
— Functioncb_display_model_values!(self::CBQPSumModelBlock, y::CBMatrix, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
output for debbuging purposes
ConicBundle.cb_dnorm_sqr
— Functioncb_dnorm_sqr(self::CBBundleDenseTrustRegionProx, B::CBMinorantPointer)
returns $\|B\|^2_{H^{-1}}$ (with weightu included in H)
cb_dnorm_sqr(self::CBBundleDiagonalTrustRegionProx, B::CBMinorantPointer)
returns \f$\|B\|^2_{H^{-1}}\f$
cb_dnorm_sqr(self::CBBundleDLRTrustRegionProx, B::CBMinorantPointer)
returns $\|B\|^2_{H^{-1}}$ (with weight included)
cb_dnorm_sqr(self::CBBundleIdProx, B::CBMinorantPointer)
returns \f$\|B\|^2_{H^{-1}}\f$
cb_dnorm_sqr(self::CBBundleLowRankTrustRegionProx, B::CBMinorantPointer)
returns $\|B\|^2_{H^{-1}}$ (with weight included)
ConicBundle.cb_do_step!
— Functioncb_do_step!(self::CBAFTData, point_id::Integer)
if the candidate information is available and consitent for point_id, copy it from cand to center and return 0, otherwise return 1
cb_do_step!(self::CBBoxData, point_id::Integer)
if the candidate information is available and consitent for point_id, copy it from cand to center and return 0, otherwise return 1
cb_do_step!(self::CBNNCData, point_id::Integer)
if the candidate information is available and consitent for point_id, copy it from cand to center and return 0, otherwise return 1
cb_do_step!(self::CBPSCData, point_id::Integer)
if the candidate information is available and consitent for point_id, copy it from cand to center and return 0, otherwise return 1
cb_do_step!(self::CBSOCData, point_id::Integer)
if the candidate information is available and consitent for point_id, copy it from cand to center and return 0, otherwise return 1
cb_do_step!(self::CBQPConeModelBlock, alpha::Real, y::CBMatrix, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
move in the last computed step direction by a step of length alpha and compute and store the violation in this point for later use in
cb_do_step!(self::CBQPSumModelBlock, alpha::Real, y::CBMatrix, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
move in the last computed step direction by a step of length alpha and compute and store the violation in this point for later use in
ConicBundle.cb_dual_norm_squared
— Functioncb_dual_norm_squared(self::CBMinorantPointer, D::Union{<:CBMatrix,Nothing} = nothing)
Compute the dual norm squared of this for the given diagonal matrix D (identity if not given), i.e. \f$\|(*this)\|^2_{D^{-1}}\f$
ConicBundle.cb_dualviol_2normsqr!
— Functioncb_dualviol_2normsqr!(self::CBQPConeModelBlock)
return the squared Euclidean norm of the model violation
cb_dualviol_2normsqr!(self::CBQPSumModelBlock)
return the squared Euclidean norm of the dual model violation
ConicBundle.cb_eig
— Functioncb_eig(self::CBSymmatrix, P::CBMatrix, d::CBMatrix, sort_non_decreasingly::Bool = true)
computes an eigenvalue decomposition PDiag(d)tranpose(P)=(*this) by symmetric QR; returns 0 on success,
ConicBundle.cb_elapsed_time
— Functioncb_elapsed_time(self::CBClock)
call time() and print the result in format "hh:mm:ss", togehter with current date and time, to out
ConicBundle.cb_empty
— Functioncb_empty(self::CBMinorantPointer)
returns true if the pointer is empty
ConicBundle.cb_enlarge_below!
— Functioncb_enlarge_below!(self::CBMatrix, addnr::Integer)
enlarge the matrix by addnr>=0 rows without intializaton of the new rows, returns *this (marked as not initialized if addnr>0)
cb_enlarge_below!(self::CBMatrix, addnr::Integer, d::Real)
enlarge the matrix by addnr>=0 rows intializing the new rows by value d, returns *this
cb_enlarge_below!(self::CBMatrix, addnr::Integer, dp::Union{<:AbstractVector{Cdouble},Nothing}, d::Real = 1.)
enlarge the matrix by addnr>=0 rows intializing the new rows by the values pointed to by dp times d, returns *this
cb_enlarge_below!(self::CBIndexmatrix, addnr::Integer)
enlarge the matrix by addnr>=0 rows without intializaton of the new rows, returns *this (marked as not initialized if nc>0)
cb_enlarge_below!(self::CBIndexmatrix, addnr::Integer, d::Integer)
enlarge the matrix by addnr>=0 rows intializing the new rows by value d, returns *this
cb_enlarge_below!(self::CBIndexmatrix, addnr::Integer, dp::Union{<:AbstractVector{Cint},Nothing}, d::Integer = 1)
enlarge the matrix by addnr>=0 rows intializing the new rows by the values pointed to by dp times d, returns *this
cb_enlarge_below!(self::CBSymmatrix, addn::Integer)
increases the order of the matrix by appending storage for further addn rows and columns (marked as not initiliazed if addn>0, no changes if addn<=0)
cb_enlarge_below!(self::CBSymmatrix, addn::Integer, d::Real)
increases the order of the matrix by appending storage for further addn rows and columns initialized to d (no changes if addn<=0);
ConicBundle.cb_enlarge_right!
— Functioncb_enlarge_right!(self::CBMatrix, addnc::Integer)
enlarge the matrix by addnc>=0 columns without intializaton of the new columns, returns *this (marked as not initialized if nr>0)
cb_enlarge_right!(self::CBMatrix, addnc::Integer, d::Real)
enlarge the matrix by addnc>=0 columns intializing the new columns by value d, returns *this
cb_enlarge_right!(self::CBMatrix, addnc::Integer, dp::Union{<:AbstractVector{Cdouble},Nothing}, d::Real = 1.)
enlarge the matrix by addnc>=0 columns intializing the new columns by the values pointed to by dp times d, returns *this
cb_enlarge_right!(self::CBIndexmatrix, addnc::Integer)
enlarge the matrix by addnc>=0 columns without intializaton of the new columns, returns *this (marked as not initialized if nr>0)
cb_enlarge_right!(self::CBIndexmatrix, addnc::Integer, d::Integer)
enlarge the matrix by addnc>=0 columns intializing the new columns by value d, returns *this
cb_enlarge_right!(self::CBIndexmatrix, addnc::Integer, dp::Union{<:AbstractVector{Cint},Nothing}, d::Integer = 1)
enlarge the matrix by addnc>=0 columns intializing the new columns by the values pointed to by dp times d, returns *this
ConicBundle.cb_ensure_feasibility!
— Functioncb_ensure_feasibility!(self::CBLPGroundset, y::CBMatrix, ychanged::Bool, Hp::Union{<:CBBundleProxObject,Nothing}, relprec::Real = 1e-10)
makes y feasible if not so, see Groundset::ensure_feasibility()
cb_ensure_feasibility!(self::CBUnconstrainedGroundset, y::CBMatrix, ychanged::Bool, Hp::Union{<:CBBundleProxObject,Nothing} = nothing, relprec::Real = 1e-10)
@brief if the groundset_id changed, it checks feasibility of y with respect to the given precision. If infeasible it replaces y by its projection with respect to the norm of Hp and sets ychanged to true.
The routine is called by the internal bundle solver to check whether the given center is still valid (in some applications the groundset might change during the runtime of the bundle method), where, if @a ychanged is false on input, validity of @a y was already checked at a point in time when the groundset had the @a ingroundsetid. If @a ychanged==false and the groundsetid is still the same, then @a y is simply assumed to be still correct (the precision is not even looked at in this case). Otherwise the routine checks the validitiy of @a y with respect to the given precision. If feasible, it returns the new groundsetid in @a ingroundsetid and keeps @a ychanged unaltered. If @a y is infeasible, the rountine computes its projection onto the feasible set with respect to the norm of @a Hp (if ==0 then the Euclidean norm is used), stores it in @a y, sets @a ychanged to true, sets @a ingroundsetid to the current groundset_id and returns
- Should anything go wrong, it returns 1.
This concrete base class represents the unconstrained case, so feasiblity only checks the dimension and never requires projections.
ConicBundle.cb_equal
— Functioncb_equal(A::CBMatrix, B::CBMatrix)
returns true if both matrices have the same size and the same elements
cb_equal(A::CBIndexmatrix, b::CBIndexmatrix)
returns true if both matrices have the same size and the same elements
cb_equal(A::CBSparsemat, B::CBSparsemat, eqtol::Real)
returns 1 if both matrices are identical, 0 otherwise
cb_equal(A::CBSparsesym, B::CBSparsesym, eqtol::Real)
returns 1 if both matrices are identical, 0 otherwise
cb_equal(self::CBCMgramdense, p::Union{<:CBCoeffmat,Nothing}, tol::Real = 1e-6)
returns 1, if p is the same derived class and entries differ by less than tol, otherwise zero
cb_equal(self::CBCMgramsparse, p::Union{<:CBCoeffmat,Nothing}, tol::Real = 1e-6)
returns 1, if p is the same derived class and entries differ by less than tol, otherwise zero
cb_equal(self::CBCMgramsparse_withoutdiag, p::Union{<:CBCoeffmat,Nothing}, tol::Real = 1e-6)
returns 1, if p is the same derived class and entries differ by less than tol, otherwise zero
cb_equal(self::CBCMlowrankdd, p::Union{<:CBCoeffmat,Nothing}, tol::Real = 1e-6)
returns 1, if p is the same derived class and entries differ by less than tol, otherwise zero
cb_equal(self::CBCMlowranksd, p::Union{<:CBCoeffmat,Nothing}, tol::Real = 1e-6)
returns 1, if p is the same derived class and entries differ by less than tol, otherwise zero
cb_equal(self::CBCMlowrankss, p::Union{<:CBCoeffmat,Nothing}, tol::Real = 1e-6)
returns 1, if p is the same derived class and entries differ by less than tol, otherwise zero
cb_equal(self::CBCMsingleton, p::Union{<:CBCoeffmat,Nothing}, tol::Real = 1e-6)
returns 1, if p is the same derived class and entries differ by less than tol, otherwise zero
cb_equal(self::CBCMsymdense, p::Union{<:CBCoeffmat,Nothing}, tol::Real = 1e-6)
returns 1, if p is the same derived class and entries differ by less than tol, otherwise zero
cb_equal(self::CBCMsymsparse, p::Union{<:CBCoeffmat,Nothing}, tol::Real = 1e-6)
returns 1, if p is the same derived class and entries differ by less than tol, otherwise zero
ConicBundle.cb_equals
— Functioncb_equals(self::CBMinorantPointer, mp::CBMinorantPointer, tol::Real = 1e-10)
they are equal if they point to the same object or are both 0. If not, they differ if their matrix representations differ; if not, they differ if the entries differ by at least tol*(1.+fabs(this->offset())
ConicBundle.cb_eval_function!
— Functioncb_eval_function!(self::CBAFTModel, y_id::Integer, y::CBMatrix, nullstep_bound::Real, relprec::Real)
see BundleModel::eval_function
cb_eval_function!(self::CBSumModel, y_id::Integer, y::CBMatrix, nullstep_bound::Real, relprec::Real)
see BundleModel::eval_function
ConicBundle.cb_eval_model
— Functioncb_eval_model(self::CBSumBundleHandler, yid::Integer, y::CBMatrix)
evaluate the model value
ConicBundle.cb_eval_model!
— Functioncb_eval_model!(self::CBAFTModel, y_id::Integer, y::CBMatrix, relprec::Real)
see BundleModel::eval_model
cb_eval_model!(self::CBSumModel, y_id::Integer, y::CBMatrix, relprec::Real)
see BundleModel::eval_model
ConicBundle.cb_evaluate
— Functioncb_evaluate(self::CBMinorantPointer, yid::Integer, y::CBMatrix, with_constant::Bool = true)
negative ids are allowed and indicate there is no need to memorize this result, returns CBminusinfinity if empty, otherwise offset+ip(minorant,y)
cb_evaluate(self::CBMinorantUseData, yid::Integer, y::CBMatrix, with_constant::Bool = true)
evaluate the minorant for @a y unluess @a yid allows to retrieve a previous evaluation
ConicBundle.cb_evaluate_projection!
— Functioncb_evaluate_projection!(self::CBPSCAffineFunction, current_point::CBMatrix, P::CBMatrix, relprec::Real, projected_Ritz_vectors::CBMatrix, projected_Ritz_values::CBMatrix)
see PSCOracle::evaluate_projection()
cb_evaluate_projection!(self::CBSOCSupportFunction, current_point::CBMatrix, P::CBMatrix, relprec::Real)
see SOCOracle::evaluate()
ConicBundle.cb_evaluate_trace
— Functioncb_evaluate_trace(self::CBQPConeModelBlock)
evaluate the left hand side of the trace constraint for modelx
cb_evaluate_trace(self::CBUQPConeModelBlock)
evaluate the left hand side of the trace constraint for modelx
ConicBundle.cb_extend!
— Functioncb_extend!(self::CBBoxPrimalExtender, param0::CBPrimalData)
like in PrimalExtender, called by ConicBundle to update internal PrimalData objects, has to return 0 on success
cb_extend!(self::CBPSCPrimalExtender, param0::CBPrimalData)
like in PrimalExtender, called by ConicBundle to update internal PrimalData objects, has to return 0 on success
cb_extend!(self::CBSOCPrimalExtender, param0::CBPrimalData)
like in PrimalExtender, called by ConicBundle to update internal PrimalData objects, has to return 0 on success
cb_extend!(self::CBCFunctionMinorantExtender, minorant::CBMinorant, n_coords::Integer, indices::Union{<:AbstractVector{Integer},Nothing})
see MinorantExtender::extend() for explanations
cb_extend!(self::CBNNCBoxSupportMinorantExtender, minorant::CBMinorant, n_coords::Integer, indices::Union{<:AbstractVector{Integer},Nothing})
@brief called by ConicBundle to update internal Minorant objects, has to return 0 on success
for each relevant index i the minorant value is set to the projection
of 0 onto the interval [lowerbound(i),upperbound(i)]
@param[in,out] minorant (Minorant&)
it holds a (possibly aggregated) minorant that was generated
from minorants returned by oracle calls, e.g. as in
FunctionOracle::evaluate()
@param[in] n_coords (int)
the number of coordinate positions that have to be filled in
@param[out] new_subgradient_values (DVector &)
the indices of these coordinate positions (sorted in
strictly increasing order)
@return - 0 on success, - 1 if extension/update is impossible
cb_extend!(self::CBPSCAffineMinorantExtender, minorant::CBMinorant, n_coords::Integer, indices::Union{<:AbstractVector{Integer},Nothing})
@brief called by ConicBundle to update internal Minorant objects, has to return 0 on success
@param[in,out] minorant (Minorant&)
it holds a (possibly aggregated) minorant that was generated
from minorants returned by oracle calls, e.g. as in
FunctionOracle::evaluate() If PrimalData was provided in these
minorants, this will be aggregated along and will also be
available in this minorant.
@param[in] n_coords (int)
the number of coordinate positions that have to be filled in
@param[out] new_subgradient_values (DVector &)
the indices of these coordinate positions (sorted in
strictly increasing order)
@return - 0 on success, - 1 if extension/update is impossible
cb_extend!(self::CBSOCSupportMinorantExtender, minorant::CBMinorant, n_coords::Integer, indices::Union{<:AbstractVector{Integer},Nothing})
@brief called by ConicBundle to update internal Minorant objects, has to return 0 on success
for each relevant index i the minorant value is set to the projection
of 0 onto the interval [lowerbound(i),upperbound(i)]
@param[in,out] minorant (Minorant&)
it holds a (possibly aggregated) minorant that was generated
from minorants returned by oracle calls, e.g. as in
FunctionOracle::evaluate()
@param[in] n_coords (int)
the number of coordinate positions that have to be filled in
@param[out] new_subgradient_values (DVector &)
the indices of these coordinate positions (sorted in
strictly increasing order)
@return - 0 on success, - 1 if extension/update is impossible
ConicBundle.cb_extend_Box!
— Functioncb_extend_Box!(self::CBBoxPrimalExtender, param0::CBMatrix)
called by ConicBundle to update internal Ritz_vectors, has to return 0 on success
ConicBundle.cb_extend_Ritz!
— Functioncb_extend_Ritz!(self::CBPSCPrimalExtender, param0::CBMatrix)
called by ConicBundle to update internal Ritz_vectors, has to return 0 on success
ConicBundle.cb_extend_SOC!
— Functioncb_extend_SOC!(self::CBSOCPrimalExtender, param0::CBMatrix)
called by ConicBundle to update internal SOC vectors, has to return 0 on success
ConicBundle.cb_extract_SOCvector!
— Functioncb_extract_SOCvector!(self::CBSOCSupportFunction, SOCvec::CBMatrix, SOCminorant::Union{<:CBMinorant,Nothing})
see SOCOracle::extract_SOCvector()
ConicBundle.cb_find
— Functioncb_find(self::CBMatrix, tol::Real = 1e-10)
returns an Indexmatrix ind so that (*this)(ind(i)) 0<=i<ind.dim() runs through all nonzero elements
cb_find(self::CBIndexmatrix)
returns an Indexmatrix ind so that (*this)(ind(i)) 0<=i<ind.dim() runs through all nonzero elements
ConicBundle.cb_find_number
— Functioncb_find_number(self::CBMatrix, num::Real = 0., tol::Real = 1e-10)
returns an Indexmatrix ind so that (*this)(ind(i)) 0<=i<ind.dim() runs through all elements of value num
cb_find_number(self::CBIndexmatrix, num::Integer = 0)
returns an Indexmatrix ind so that (*this)(ind(i)) 0<=i<ind.dim() runs through all elements having value num
ConicBundle.cb_floor
— Functioncb_floor(A::CBMatrix)
returns a matrix with elements (i,j)=floor((*this)(i,j)) for all i,j
ConicBundle.cb_floor!
— Functioncb_floor!(self::CBMatrix)
sets (this)(i,j)=floor((this)(i,j)) for all i,j and returns *this
ConicBundle.cb_form_bundlevecs!
— Functioncb_form_bundlevecs!(self::CBSOCData, max_columns::Integer)
starting with aggregate and cand_SOCvec add further ones as needed
ConicBundle.cb_from_dim
— Functioncb_from_dim(self::CBAffineFunctionTransformation)
returns the dimension of the input argument or -1 if it is unknown
ConicBundle.cb_generate_minorant!
— Functioncb_generate_minorant!(self::CBPSCAffineFunction, P::CBMatrix)
see PSCOracle::generate_minorant()
cb_generate_minorant!(self::CBSOCSupportFunction, SOCvec::CBMatrix)
see SOCOracle::generate_minorant()
ConicBundle.cb_genmult
— Functioncb_genmult(A::CBMatrix, B::CBMatrix, C::CBMatrix, alpha::Real, beta::Real, atrans::Integer, btrans::Integer)
returns C=betaC+alphaA*B, where A and B may be transposed; C must not be equal to A and B; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBSymmatrix, B::CBMatrix, C::CBMatrix, alpha::Real, beta::Real, btrans::Integer)
returns C=betaC+alphaA*B, where A and B may be transposed; C must not be equal to A and B; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBMatrix, B::CBSymmatrix, C::CBMatrix, alpha::Real, beta::Real, atrans::Integer)
returns C=betaC+alphaA*B, where A and B may be transposed; C must not be equal to A and B; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBSparsesym, B::CBMatrix, C::CBMatrix, alpha::Real, beta::Real, btrans::Integer)
returns C=betaC+alphaA*B, where A and B may be transposed; C must not be equal to A and B; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBMatrix, B::CBSparsesym, C::CBMatrix, alpha::Real, beta::Real, atrans::Integer)
returns C=betaC+alphaA*B, where A and B may be transposed; C must not be equal to A and B; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBSparsemat, B::CBMatrix, C::CBMatrix, alpha::Real, beta::Real, atrans::Integer, btrans::Integer)
returns C=betaC+alphaA*B, where A and B may be transposed; C must not be equal to A and B; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBSparsemat, B::CBMatrix, colB::Integer, C::CBMatrix, colC::Integer, alpha::Real, beta::Real, atrans::Integer, btrans::Integer)
returns C.col(colC)=betaC.col(colC)+alphaA*B.col(colB), where A and B may be transposed first; C must not be equal to A and B; if beta==0. then C is initialized, but the size of C must be correct already
cb_genmult(A::CBMatrix, B::CBSparsemat, C::CBMatrix, alpha::Real, beta::Real, atrans::Integer, btrans::Integer)
returns C=betaC+alphaA*B, where A and B may be transposed; C must not be equal to A and B; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBIndexmatrix, B::CBIndexmatrix, C::CBIndexmatrix, alpha::Integer, beta::Integer, atrans::Integer, btrans::Integer)
returns C=betaC+alphaA*B, where A and B may be transposed; C must not be equal to A and B; if beta==0 then C is initialized to the correct size
cb_genmult(A::CBSparsemat, B::CBSparsemat, C::CBMatrix, alpha::Real, beta::Real, atrans::Integer, btrans::Integer)
returns C=betaC+alphaA*B, where A and B may be transposed; C must not be equal to A and B; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBSymmatrix, B::CBSparsemat, C::CBMatrix, alpha::Real, beta::Real, btrans::Integer)
returns C=betaC+alphaA*B, where B may be transposed; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBSparsemat, B::CBSymmatrix, C::CBMatrix, alpha::Real, beta::Real, atrans::Integer)
returns C=betaC+alphaA*B, where A may be transposed; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBSparsesym, B::CBSparsemat, C::CBMatrix, alpha::Real, beta::Real, btrans::Integer)
returns C=betaC+alphaA*B, where B may be transposed; if beta==0. then C is initialized to the correct size
cb_genmult(A::CBSparsemat, B::CBSparsesym, C::CBMatrix, alpha::Real, beta::Real, atrans::Integer)
returns C=betaC+alphaA*B, where A may be transposed; if beta==0. then C is initialized to the correct size
ConicBundle.cb_get_A
— Functioncb_get_A(self::CBCMgramdense)
returns the const reference to the internal matrix A forming the Gram matrix
cb_get_A(self::CBCMgramsparse)
returns the const reference to the internal matrix A forming the Gram matrix
cb_get_A(self::CBCMgramsparse_withoutdiag)
returns the const reference to the internal matrix A forming the Gram matrix
cb_get_A(self::CBCMsymdense)
returns the const reference to the internal symmetric matrix
cb_get_A(self::CBCMsymsparse)
return the const reference to the internal sparse matrix
cb_get_A(self::CBQPSolver)
returns the constraint matrix of the feasible set
ConicBundle.cb_get_Ab
— Functioncb_get_Ab(self::CBUQPConeModelBlock, qp_A::CBMatrix, qp_b::CBMatrix)
store the local coefficients of matrices A and b in the positions corresponding to qpyrange (rows) and qpxrange (columns); returns 0 on success, 1 on failure
cb_get_Ab(self::CBUQPSumModelBlock, qp_A::CBMatrix, qp_b::CBMatrix)
get the A matrix of all subblocks and store it consistently
ConicBundle.cb_get_Bt!
— Functioncb_get_Bt!(self::CBQPConeModelBlock, Bt::CBMatrix, startindex_model::Integer, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
get the current matrix for the coupling matrix Bt in the first row of blocks
cb_get_Bt!(self::CBQPSumModelBlock, Bt::CBMatrix, startindex_model::Integer, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
get the current matrix for the coupling matrix Bt in the first row of blocks
ConicBundle.cb_get_C!
— Functioncb_get_C!(self::CBPSCAffineFunction)
- returns the block representation of the coefficient matrices (each entry of the map represents a block by a SparseCoeffmatVector).
ConicBundle.cb_get_D
— Functioncb_get_D(self::CBBundleDiagonalTrustRegionProx)
returns the diagonal D of the diagonal scaling matrix
ConicBundle.cb_get_H
— Functioncb_get_H(self::CBBundleDenseTrustRegionProx)
returns the metric matrix without weightu
ConicBundle.cb_get_Hchol
— Functioncb_get_Hchol(self::CBBundleDenseTrustRegionProx)
returns the stored factorization of H with weightu (up to date if get_factored()==true)
ConicBundle.cb_get_Q
— Functioncb_get_Q(self::CBUQPSolver)
returns the quadratic cost matrix
ConicBundle.cb_get_QPcoeff_time
— Functioncb_get_QPcoeff_time(self::CBBundleSolver)
return time spent in computing the cost coefficients of the quadratic bundle subproblem
ConicBundle.cb_get_QPsolve_time
— Functioncb_get_QPsolve_time(self::CBBundleSolver)
return time spent in solving the quadratic bundle subproblem
ConicBundle.cb_get_Ritz_values
— Functioncb_get_Ritz_values(self::CBPSCData)
returns Ritz_values
ConicBundle.cb_get_UVlambda!
— Functioncb_get_UVlambda!(self::CBVariableMetricSVDSelection, U::CBMatrix, V::CBMatrix, lam::CBMatrix, cand::CBMatrix)
for current ongoing experiments with variable metric routines
ConicBundle.cb_get_X!
— Functioncb_get_X!(self::CBUQPConeModelBlock, i::Integer, X::CBSymmatrix)
get the current primal positive semidefinite cone point to cone i (of the solution)
ConicBundle.cb_get_Z!
— Functioncb_get_Z!(self::CBUQPConeModelBlock, i::Integer, Z::CBSymmatrix)
get the current dual positive semidefinite cone point to cone i (of the solution)
ConicBundle.cb_get_activedim
— Functioncb_get_activedim(self::CBPSCData)
returns acitvedim
ConicBundle.cb_get_add_offset
— Functioncb_get_add_offset(self::CBGroundsetModification)
returns the change in the offste value of the groundset minorant
ConicBundle.cb_get_additional_factor
— Functioncb_get_additional_factor(self::CBAFTModification)
returns null if nothing or default values have to be appended, otherwise it points to a sparse matrix whose columns need to be appended to the matrix
ConicBundle.cb_get_additional_offset
— Functioncb_get_additional_offset(self::CBAFTModification)
returns the value to be added to the offset
ConicBundle.cb_get_aft
— Functioncb_get_aft(self::CBAFTModel)
allows to inspect the current AffineFunctionTransformation
ConicBundle.cb_get_aggr_dnormsqr
— Functioncb_get_aggr_dnormsqr(self::CBBundleSolver)
returns the dual norm squared of the current aggregate (dual w.r.t. the quadratic proximal term)
cb_get_aggr_dnormsqr(self::CBBundleTerminator)
returns the current bound for the dual norm squared of the aggregate
ConicBundle.cb_get_aggregate
— Functioncb_get_aggregate(self::CBSumBundle, ft::CBFunctionTask)
gets the corresponding aggregate (call only if a hasbundlefor(ft)==true)
cb_get_aggregate(self::CBBundleSolver, aggregate::CBMatrix)
returns the linear term of the current aggregate linear minorant (this should be called before any modifications, otherwise this may no longer be correct or may even cause an error)
ConicBundle.cb_get_aggregate_offset
— Functioncb_get_aggregate_offset(self::CBBundleSolver)
returns the offset of the current aggregate linear minorant (should be called before any modifications, otherwise this may no longer be correct)
ConicBundle.cb_get_append_cols
— Functioncb_get_append_cols(self::CBAFTModification)
returns null if nothing or default values have to be appended, otherwise it points to a sparse matrix whose columns need to be appended to the matrix
ConicBundle.cb_get_append_costs
— Functioncb_get_append_costs(self::CBAFTModification)
returns null if nothing or default values have to be appended, otherwise it points to a matrix whose entries need to be appended to the cost vector
cb_get_append_costs(self::CBGroundsetModification)
returns the change in the offste value of the groundset minorant
ConicBundle.cb_get_append_rhs
— Functioncb_get_append_rhs(self::CBAFTModification)
returns null if nothing or default values have to be appended, otherwise it points to a matrix whose rows need to be appended to the argument offset
ConicBundle.cb_get_append_rows
— Functioncb_get_append_rows(self::CBAFTModification)
returns null if nothing or default values have to be appended, otherwise it points to a sparse matrix whose rows need to be appended to the matrix
ConicBundle.cb_get_appended_vardim
— Functioncb_get_appended_vardim(self::CBAFTModification)
returns the number of variables that are appended (due to later reassignmentds they may no longer be located at the end)
cb_get_appended_vardim(self::CBGroundsetModification)
returns the number of variables that are appended (due to later reassignmentds they may no longer be located at the end)
cb_get_appended_vardim(self::CBNNCBoxSupportModification)
returns the number of variables that are appended (due to later reassignmentds they may no longer be located at the end)
cb_get_appended_vardim(self::CBPSCAffineModification)
returns the number of variables that are appended (due to later reassignmentds they may no longer be located at the end)
cb_get_appended_vardim(self::CBSOCSupportModification)
returns the number of variables that are appended (due to later reassignmentds they may no longer be located at the end)
ConicBundle.cb_get_approximate_primal
— Functioncb_get_approximate_primal(self::CBMatrixCBSolver, function_::CBFunctionObject)
@brief returns the current approximate primal solution corresponding to the aggregate subgradient of the specified @a function.
PrimalData solutions must have been supplied in all previous calls to evaluate; In this case it returns the current approximate primal solution aggregated alongside with the aggregate subgradient. A primal solution may not be available after addition of constraints, if extension of the aggregate subgradient to the new coordinates failed.
If no primal data is availalbe, the function returns NULL.
@return - pointer to the primal data of the aggregate of this function object - 0 if no primal is available
cb_get_approximate_primal(self::CBBoxData)
return the PrimalData corresponding to the aggregate
cb_get_approximate_primal(self::CBNNCData)
return the PrimalData corresponding to the aggregate
cb_get_approximate_primal(self::CBPSCData)
return the PrimalData corresponding to the aggregate
cb_get_approximate_primal(self::CBSOCData)
return the PrimalData corresponding to the aggregate
cb_get_approximate_primal(self::CBAFTModel)
an AFT has no primals, so it returns 1, see SumBlockModel::getapproximateprimal
cb_get_approximate_primal(self::CBBoxModel)
see SumBlockModel::getapproximateprimal
cb_get_approximate_primal(self::CBNNCModel)
see SumBlockModel::getapproximateprimal
cb_get_approximate_primal(self::CBPSCModel)
see SumBlockModel::getapproximateprimal
cb_get_approximate_primal(self::CBSOCModel)
see SumBlockModel::getapproximateprimal
cb_get_approximate_primal(self::CBSumModel)
this has no primals, so it returns 1, see SumBlockModel::getapproximateprimal
ConicBundle.cb_get_approximate_slacks
— Methodcb_get_approximate_slacks(self::CBMatrixCBSolver, param0::CBMatrix)
- @brief Returns the multipliers for the box constraints on the design variables; in Lagrangean relaxation they may be interpreted as primal slacks
for inequality constraints. @return - 0 on success - != 0 otherwise
ConicBundle.cb_get_arg_offset
— Functioncb_get_arg_offset(self::CBAffineFunctionTransformation)
returns the pointer to the constant offset added to the argument (not neeeded in the code)
ConicBundle.cb_get_arg_trafo
— Functioncb_get_arg_trafo(self::CBAffineFunctionTransformation)
returns the pointer to the linear transformation of the argument (not neeeded in the code)
ConicBundle.cb_get_augvalfails
— Functioncb_get_augvalfails(self::CBBundleSolver)
returns the number of failures to increase the augmented model value since the last null/descent step
ConicBundle.cb_get_augvalfailslimit
— Functioncb_get_augvalfailslimit(self::CBBundleTerminator)
returns the current value of this parameter
ConicBundle.cb_get_avg_reduction
— Functioncb_get_avg_reduction(self::CBMinRes)
returns the average of the achieved reduction factor per iteration
cb_get_avg_reduction(self::CBPCG)
returns the average of the achieved reduction factor per iteration
cb_get_avg_reduction(self::CBPsqmr)
returns the average of the achieved reduction factor per iteration
ConicBundle.cb_get_block_append
— Functioncb_get_block_append(self::CBPSCAffineModification)
returns null if nothing or default values have to be appended, otherwise it points to a sparse matrix whose rows need to be appended to the matrix
ConicBundle.cb_get_boxx!
— Functioncb_get_boxx!(self::CBQPConeModelBlock, boxx::CBMatrix, linx_activity::Union{<:CBMatrix,Nothing} = nothing, cautious::Bool = false)
get the box part of modelx (and a guess, which of the bounds are active, in {0.,1.})
cb_get_boxx!(self::CBUQPConeModelBlock, param0::CBMatrix, param1::Union{<:CBMatrix,Nothing} = nothing, cautious::Bool = false)
get the box part of modelx (and a guess, which of the bounds are active, in {0.,1.})
ConicBundle.cb_get_bundle
— Functioncb_get_bundle(self::CBSumBundle, ft::CBFunctionTask)
gets the corresponding minorants (call only if a hasbundlefor(ft)==true)
ConicBundle.cb_get_bundle_data
— Functioncb_get_bundle_data(self::CBMatrixCBSolver, function_::Union{<:CBFunctionObject,Nothing} = nothing)
@brief Returns all current bundle data of the cutting model of the specified @a function.
This may differ for predefined special functions with derived classes.
@param[in] function if the aggregate subgradient of a particular function is desired, provide the pointer here, otherwise this referrs to the root function (if there is only one function to be optimized over, this is this single function, otherwise it is the sum of functions)
@return - 0 on success - != 0 otherwise
ConicBundle.cb_get_bundle_parameters
— Methodcb_get_bundle_parameters(self::CBAFTModel)
an AFT has no bundle, so it returns 1, see SumBlockModel::getbundleparameters
ConicBundle.cb_get_bundle_parameters
— Methodcb_get_bundle_parameters(self::CBBoxModel)
see SumBlockModel::getbundleparameters
ConicBundle.cb_get_bundle_parameters
— Methodcb_get_bundle_parameters(self::CBMatrixCBSolver, function_::Union{<:CBFunctionObject,Nothing} = nothing)
- @brief Retrieves current bundle parameters (not the actual size in use!) as set for the cutting model of the specified @a function.
This may differ for predefined special functions with derived BundleParameter classes.
If the code is asked to optimize over the sum of several functions, it usually does this with a separate model for each function. If there are too many function for this, it may be worth to consider using the SumBundle features. For this see also setsumbundleparameters(). If the root function is a sum of functions, passing a SumModelParametersObject here allows to specify how many local models should be kept by SumModelParametersObject::setmaxlocal_models() and how these should be selected. A possible implementation for this is given in SumModelParameters.
@param[in] function
if the aggregate subgradient of a particular function is desired,
provide the pointer here, otherwise this referrs to the root function
(if there is only one function to be optimized over, this is this single
function, otherwise it is the sum of functions)
@return
- 0 on success
- != 0 otherwise
ConicBundle.cb_get_bundle_parameters
— Methodcb_get_bundle_parameters(self::CBNNCModel)
see SumBlockModel::getbundleparameters
ConicBundle.cb_get_bundle_parameters
— Methodcb_get_bundle_parameters(self::CBPSCModel)
see SumBlockModel::getbundleparameters
ConicBundle.cb_get_bundle_parameters
— Methodcb_get_bundle_parameters(self::CBSOCModel)
see SumBlockModel::getbundleparameters
ConicBundle.cb_get_bundle_parameters
— Methodcb_get_bundle_parameters(self::CBSumModel)
see SumBlockModel::getbundleparameters()
ConicBundle.cb_get_bundleweight
— Functioncb_get_bundleweight(self::CBBundleSolver)
return a pointer to the class for updating the weightu of the proximal term
ConicBundle.cb_get_c
— Functioncb_get_c(self::CBUQPSolver)
returns the linear cost vector
ConicBundle.cb_get_cand_gs_val
— Functioncb_get_cand_gs_val(self::CBBundleSolver)
returns the groundset objective value in @a cand_y
ConicBundle.cb_get_cand_minorant
— Functioncb_get_cand_minorant(self::CBSumBundle, ft::CBFunctionTask)
gets the corresponding candidate minorant (call only if a hasbundlefor(ft)==true)
ConicBundle.cb_get_cand_objval
— Functioncb_get_cand_objval(self::CBBundleSolver)
returns the upper bound on the objective in @a cand_y
ConicBundle.cb_get_cand_ub
— Functioncb_get_cand_ub(self::CBBundleSolver)
returns the upper bound on the objective in @a cand_y returned by the oracle
ConicBundle.cb_get_cand_y
— Functioncb_get_cand_y(self::CBBundleSolver)
returns the most recent candidate @a cand_y (after a descent step this is the same as the candidate)
ConicBundle.cb_get_candidate
— Methodcb_get_candidate(self::CBMatrixCBSolver, center::CBMatrix)
@brief Returns the last point, the "candidate", at which the function was evaluated in solve().
If this evaluation lead to a descent step, it is the same point as
in get_center().
@return - 0 on success - != 0 otherwise
ConicBundle.cb_get_candidate_primal
— Functioncb_get_candidate_primal(self::CBMatrixCBSolver, function_::CBFunctionObject)
@brief Returns the primal solution corresponding to the best epsilon subgradient returned in the evaluation of the specified @a function at the point get_candidate. If no primal data is availalbe, the function returns NULL.
@return - pointer to the primal data of the minorant returned on evaluation of this function object at the current candidate - 0 if no primal is available
cb_get_candidate_primal(self::CBBoxData)
return the PrimalData delivered by the last call of BoxOracle::evaluate()
cb_get_candidate_primal(self::CBNNCData)
return the PrimalData delivered by the last call of FunctionOracle::evaluate()
cb_get_candidate_primal(self::CBPSCData)
return the PrimalData delivered by the last call of FunctionOracle::evaluate()
cb_get_candidate_primal(self::CBSOCData)
return the PrimalData delivered by the last call of FunctionOracle::evaluate()
cb_get_candidate_primal(self::CBAFTModel)
an AFT has no primals, so it returns 1, see SumBlockModel::getcandidateprimal
cb_get_candidate_primal(self::CBBoxModel)
see SumBlockModel::getcandidateprimal
cb_get_candidate_primal(self::CBNNCModel)
see SumBlockModel::getcandidateprimal
cb_get_candidate_primal(self::CBPSCModel)
see SumBlockModel::getcandidateprimal
cb_get_candidate_primal(self::CBSOCModel)
see SumBlockModel::getcandidateprimal
cb_get_candidate_primal(self::CBSumModel)
this has no primals, so it returns 1, see SumBlockModel::getcandidateprimal
ConicBundle.cb_get_candidate_value
— Methodcb_get_candidate_value(self::CBMatrixCBSolver)
@brief Returns the objective value computed in the last step of solve(), independent of whether this was a descent step or a null step (initially undefined).
If no problem modification routines were called since then, it is the objective value at the point returned by get_candidate(). If this last evaluation led to a descent step, then it is the same value as in get_objval().
ConicBundle.cb_get_center
— Methodcb_get_center(self::CBMatrixCBSolver, center::CBMatrix)
@brief Returns the next center point that was produced by the latest call to solve (in some problem modification routines the center point may be updated immediately, in others the center point will be corrected automatically directly before starting the next descent step and its values may be infeasible till then).
@return - 0 on success - != 0 otherwise
ConicBundle.cb_get_center_gs_val
— Functioncb_get_center_gs_val(self::CBBundleSolver)
returns the groundset objective in @a center_y r
ConicBundle.cb_get_center_minorant!
— Functioncb_get_center_minorant!(self::CBAFTModel, minorant::CBMinorantPointer, aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
see SumBlockModel::getcenterminorant
cb_get_center_minorant!(self::CBSumModel, minorant::CBMinorantPointer, aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
see SumBlockModel::getcenterminorant()
ConicBundle.cb_get_center_objval
— Functioncb_get_center_objval(self::CBBundleSolver)
returns the upper bound on the objective value in @a center_y
ConicBundle.cb_get_center_primal
— Functioncb_get_center_primal(self::CBMatrixCBSolver, function_::CBFunctionObject)
@brief Returns the primal solution corresponding to the best epsilon subgradient returned in the evaluation of the specified @a function at the current center point. If no primal data is availalbe, the function returns NULL.
@return - pointer to the primal data of the minorant returned on evaluation of this function object at the current center - 0 if no primal is available
cb_get_center_primal(self::CBBoxData)
return the PrimalData corresponding to the aggregate
cb_get_center_primal(self::CBNNCData)
return the PrimalData corresponding to the aggregate
cb_get_center_primal(self::CBPSCData)
return the PrimalData corresponding to the aggregate
cb_get_center_primal(self::CBSOCData)
return the PrimalData corresponding to the aggregate
cb_get_center_primal(self::CBAFTModel)
an AFT has no primals, so it returns 1, see SumBlockModel::getcenterprimal
cb_get_center_primal(self::CBBoxModel)
see SumBlockModel::getcneterprimal
cb_get_center_primal(self::CBNNCModel)
see SumBlockModel::getcenterprimal
cb_get_center_primal(self::CBPSCModel)
see SumBlockModel::getcenterprimal
cb_get_center_primal(self::CBSOCModel)
see SumBlockModel::getcenterprimal
cb_get_center_primal(self::CBSumModel)
this has no primals, so it returns 1, see SumBlockModel::getcenterprimal
ConicBundle.cb_get_center_ub
— Functioncb_get_center_ub(self::CBBundleSolver)
returns the upper bound on the objective in @a center_y returned by the oracle
ConicBundle.cb_get_center_y
— Functioncb_get_center_y(self::CBBundleSolver)
returns the current center of stability @a center_y (after a descent step this is the same as the candidate)
ConicBundle.cb_get_cntobjeval
— Functioncb_get_cntobjeval(self::CBBundleSolver)
returns the number of calls to the oracle since the last clear()
ConicBundle.cb_get_coeff
— Functioncb_get_coeff(self::CBSumBundle, ft::CBFunctionTask)
gets the corresponding aggregation coefficients (call only if a hasbundlefor(ft)==true)
ConicBundle.cb_get_colindex
— Functioncb_get_colindex(self::CBSparsemat)
returns the index vector of the column representation holding the row index for each element
cb_get_colindex(self::CBSparsesym)
returns the index vector of the column representation holding the row index for each element
ConicBundle.cb_get_colinfo
— Functioncb_get_colinfo(self::CBSparsemat)
returns information on nonzero columns, k by 3, listing: index, %#nonzeros, first index in colindex/colval
cb_get_colinfo(self::CBSparsesym)
returns information on nozero diagonal/columns, k by 4, listing: index (<0 for diagonal), # nonzeros, first index in colindex/colval, index in suppport submatrix
ConicBundle.cb_get_colval
— Functioncb_get_colval(self::CBSparsemat)
returns the value vector of the column representation holding the value for each element
cb_get_colval(self::CBSparsesym)
returns the value vector of the column representation holding the value for each element
ConicBundle.cb_get_constant_minorant
— Functioncb_get_constant_minorant(self::CBAffineFunctionTransformation)
return the constant linear minorant corresponding to funoffset+<*linearcost,.>
ConicBundle.cb_get_contributed_model_aggregate
— Functioncb_get_contributed_model_aggregate(self::CBSumBundle, aggregate::CBMinorantPointer, factor::Real = 1., aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
get the aggregate that is due to child parts of the sumbundle, which are contributed to parents
ConicBundle.cb_get_corr!
— Functioncb_get_corr!(self::CBUQPConeModelBlock, xcorr::CBMatrix, rhs::CBMatrix, mu::Real)
@brief supply the information for the corrector
on input (w.r.t. corresponding positions) xcorr = 0 rhs as on output of addlocalsys
on output the corresponding positions of xcorr should hold the corrector term of the search direction, eg, xcorr = mux^{-1} - x^{-1}dx*dz, and if the block holds additional local variables as in addlocalsys then
rhs += B*(mu * t^{-1}- t^{-1}*dt*ds)
has to be called after suggest_mu which computes the other directions
cb_get_corr!(self::CBUQPSumModelBlock, xcorr::CBMatrix, rhs::CBMatrix, mu::Real)
get this from all subblocks
ConicBundle.cb_get_costs
— Functioncb_get_costs(self::CBMatrixCBSolver, costs::CBMatrix)
- @brief If a linear cost vector was specified, costs will hold these values, otherwise the vector is initialized to zero (for the current dimension)
ConicBundle.cb_get_cutval
— Functioncb_get_cutval(self::CBMatrixCBSolver)
- @brief Returns the cutting model value resulting from last call to solve() (initially undefined).
ConicBundle.cb_get_data
— Functioncb_get_data(self::CBAFTModel)
see SumBlockModel::get_data
cb_get_data(self::CBBoxModel)
see SumBlockModel::get_data
cb_get_data(self::CBNNCModel)
see SumBlockModel::get_data
cb_get_data(self::CBPSCModel)
see SumBlockModel::get_data
cb_get_data(self::CBSOCModel)
see SumBlockModel::get_data
cb_get_data(self::CBSumModel)
see SumBlockModel::get_data()
ConicBundle.cb_get_data!
— Functioncb_get_data!(self::CBAFTModel)
see SumBlockModel::get_data
cb_get_data!(self::CBBoxModel)
see SumBlockModel::get_data
cb_get_data!(self::CBNNCModel)
see SumBlockModel::get_data
cb_get_data!(self::CBPSCModel)
see SumBlockModel::get_data
cb_get_data!(self::CBSOCModel)
see SumBlockModel::get_data
cb_get_data!(self::CBSumModel)
see SumBlockModel::get_data()
ConicBundle.cb_get_dense_cnt
— Functioncb_get_dense_cnt(self::CBSparseCoeffmatMatrix, i::Integer)
returns the number of dense matrices in block i
ConicBundle.cb_get_dense_coeff_store!
— Functioncb_get_dense_coeff_store!(self::CBMinorant, n_elements::Integer)
*@brief If the returned pointer is not NULL it gives direct access to the array of current coefficient values with indices 0 up to n_elements-1;
If the return value is NULL, the representation may not be
available or access to the store may not be granted; in this case
other routines like get_coeffs and add_coeffs have to be used.
This routine is mainly intended for increasing efficiency in
some internal computations; the validity of the pointer returned
may get lost with any call to any other routine of this Minorant,
so during manipulations of the stored values no other routines
should be called. Needless to say, this routine should only be
used by experts.
ConicBundle.cb_get_descent_step
— Functioncb_get_descent_step(self::CBMatrixCBSolver)
@brief returns true if the last evaluation of the last call to solve() resulted in a descent step
Mind: if there was no (succesdful) evaluation, neither getdescentstep() nor getnullstep() will return true;
cb_get_descent_step(self::CBBundleSolver)
returns true if the latest iteration resulted in a descent step (note, getdescentstep() and getnullstep() may both return false e.g. if termination occurs)
ConicBundle.cb_get_descent_steps
— Functioncb_get_descent_steps(self::CBBundleSolver)
returns the number of descent steps since the last clear()
ConicBundle.cb_get_dim
— Methodcb_get_dim(self::CBLPGroundset)
returns the dimension of the ground set, i.e., the length of the variables vector y
ConicBundle.cb_get_dim
— Methodcb_get_dim(self::CBMatrixCBSolver)
- @brief Returns the current dimension of the design space/argument or -1 if no dimension is set.
ConicBundle.cb_get_dim
— Methodcb_get_dim(self::CBUnconstrainedGroundset)
returns the dimension of the ground set, i.e., the length of the variables vector y
ConicBundle.cb_get_do_variable_metric
— Functioncb_get_do_variable_metric(self::CBBundleSolver)
returns true if the proximal term is not of the type BundleIdProx, i.e. if it is not simply the squared Euclidean norm
ConicBundle.cb_get_dualval
— Functioncb_get_dualval(self::CBUQPSolver)
return the dual objective value (upper bound) of the last solve
ConicBundle.cb_get_edge
— Functioncb_get_edge(self::CBSparsemat, i::Integer)
stores element i of the getedgerep() function (ordered as in row representation); returns 1 if i is out of range, 0 otherwise.
ConicBundle.cb_get_edge_rep
— Functioncb_get_edge_rep(self::CBSparsemat, I::CBIndexmatrix, J::CBIndexmatrix, val::CBMatrix)
stores the nz nonzero values of *this in I,J,val so that this(I(i),J(i))=val(i) for i=0,...,nz-1 and dim(I)=dim(J)=dim(val)=nz (ordered as in row representation)
cb_get_edge_rep(self::CBSparsesym, I::CBIndexmatrix, J::CBIndexmatrix, val::CBMatrix)
stores the nz nonzero values of the lower triangle of *this in I,J,val so that this(I(i),J(i))=val(i) for i=0,...,nz-1 and dim(I)=dim(J)=dim(val)=nz (ordered as in row representation)
ConicBundle.cb_get_err
— Functioncb_get_err(self::CBMinRes)
returns the error code of the last call
cb_get_err(self::CBPCG)
returns the error code of the last call
cb_get_err(self::CBPsqmr)
returns the error code of the last call
ConicBundle.cb_get_eval_time
— Functioncb_get_eval_time(self::CBAFTModel)
see SumBlockModel::getevaltime()
cb_get_eval_time(self::CBSumModel)
see SumBlockModel::getevaltime()
ConicBundle.cb_get_evalaugmodel_time
— Functioncb_get_evalaugmodel_time(self::CBBundleSolver)
return time spent in total for the quadratic bundle subproblem
ConicBundle.cb_get_factored
— Functioncb_get_factored(self::CBBundleDenseTrustRegionProx)
returns true iff get_Hchol() returns the factord matrix of H with weightu
ConicBundle.cb_get_fixed_active_bounds
— Methodcb_get_fixed_active_bounds(self::CBMatrixCBSolver)
@brief Returns NULL or (iff active bound fixing is turned on in setactivebounds_fixing()) the indicator vector of variables temporarily fixed to the center value due to significantly positive multipliers for the box constraints.
A variable gets fixed to the bound only if the center is
already a the bound and in some iteration the dual variables to the bound constraint indicate that the bound is strongly active also for the candidate. Of course this migh just hold for one candidate and there is no guarantee that the bound is also strongly active in an optimal solution. Thus, this mainly a heuristic to eliminate less important variables quickly from entering the subproblem.
ConicBundle.cb_get_fun_coeff
— Functioncb_get_fun_coeff(self::CBAffineFunctionTransformation)
returns the factor for the function
ConicBundle.cb_get_fun_offset
— Functioncb_get_fun_offset(self::CBAffineFunctionTransformation)
returns the constant offset for the funciton
ConicBundle.cb_get_function_factor
— Functioncb_get_function_factor(self::CBSumBundle, ft::CBFunctionTask)
gets the corresponding function factor (call only if a hasbundlefor(ft)==true)
ConicBundle.cb_get_function_minorant!
— Functioncb_get_function_minorant!(self::CBAFTModel, minorant::CBMinorantPointer, aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
see SumBlockModel::getfunctionminorant
cb_get_function_minorant!(self::CBSumModel, minorant::CBMinorantPointer, aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
see SumBlockModel::getfunctionminorant()
ConicBundle.cb_get_function_status
— Methodcb_get_function_status(self::CBMatrixCBSolver, function_::CBFunctionObject)
- @brief Returns the return value of the latest evaluation call to this @a function.
ConicBundle.cb_get_generating_primal
— Functioncb_get_generating_primal(self::CBPSCAffineModification)
returns the generating primal pointer stored here (may be NULL); if getresetprimal() is true, the PSCAffineFunction should either delete its generating primal (NULL) or replace its generating primal by a clone of this one
ConicBundle.cb_get_generating_primal!
— Functioncb_get_generating_primal!(self::CBPSCAffineFunction)
returns the current setting concerning the generation of an PSCPrimal (0 for none)
ConicBundle.cb_get_grammatrix
— Functioncb_get_grammatrix(self::CBGramSparsePSCPrimal)
returns the matrix \f$P\f$ giving rise to the Gram matrix \f$PP^T\f$
ConicBundle.cb_get_groundset
— Functioncb_get_groundset(self::CBBundleSolver)
return a pointer to the groundset
ConicBundle.cb_get_groundset_id
— Functioncb_get_groundset_id(self::CBLPGroundset)
returns the current groundset_id, increased values indicate changes in the ground set
cb_get_groundset_id(self::CBUnconstrainedGroundset)
returns the current groundset_id, increased values indicate changes in the ground set
ConicBundle.cb_get_gs_aggregate
— Functioncb_get_gs_aggregate(self::CBLPGroundset)
returns the groundset aggregate computed in candidate()
cb_get_gs_aggregate(self::CBUnconstrainedGroundset)
returns the groundset aggregate computed in candidate()
cb_get_gs_aggregate(self::CBBundleSolver)
returns the linear term of the current groundset aggregate linear minorant
ConicBundle.cb_get_gs_minorant
— Functioncb_get_gs_minorant(self::CBLPGroundset)
returns the linear minorant valid on the entire ground set (e.g. a linear cost funciton)
cb_get_gs_minorant(self::CBUnconstrainedGroundset)
returns the linear minorant valid on the entire ground set (e.g. a linear cost funciton)
ConicBundle.cb_get_ijval
— Functioncb_get_ijval(self::CBCMsingleton)
return the nonzero entry information
ConicBundle.cb_get_increase_factor
— Functioncb_get_increase_factor(self::CBSumBundleHandler)
returns the increase factor for the unbounded part of sumbundle, otherwise 1.
ConicBundle.cb_get_infinity
— Functioncb_get_infinity(self::CBMicroseconds)
if true, value should be regarded as infinity
ConicBundle.cb_get_innerit
— Functioncb_get_innerit(self::CBBundleSolver)
returns the number of bundle method iterations since the last descent step
ConicBundle.cb_get_iter
— Functioncb_get_iter(self::CBUQPSolver)
return the number of iterations of the last solve
ConicBundle.cb_get_keepsize
— Functioncb_get_keepsize(self::CBPSCData)
returns keepsize
ConicBundle.cb_get_last_alpha!
— Functioncb_get_last_alpha!(self::CBUQPConeModelBlock)
get the most recent step size
ConicBundle.cb_get_last_weight
— Methodcb_get_last_weight(self::CBMatrixCBSolver)
- @brief Returns the current weight for the quadratic term in the augmented subproblem (may be interpreted as 1./step_size or 1./trustregion-radius).
ConicBundle.cb_get_latest_minorants!
— Functioncb_get_latest_minorants!(self::CBSOCData, latest_minorants::CBMinorantBundle, max_number::Integer)
return the max_number latest minorants if available;
ConicBundle.cb_get_lbindex
— Functioncb_get_lbindex(self::CBQPSolver)
returns the indices of variable lower bounds > ConicBundle::CBminusinfinity
ConicBundle.cb_get_lbounds
— Functioncb_get_lbounds(self::CBMatrixCBSolver)
- @brief Returns a pointer to the vector of lower bounds or null if there is no such vector
ConicBundle.cb_get_lby
— Functioncb_get_lby(self::CBQPSolver)
returns the lower bounds on y
cb_get_lby(self::CBLPGroundset)
returns the lower bounds vector on y if it exists
ConicBundle.cb_get_linear_cost
— Functioncb_get_linear_cost(self::CBAffineFunctionTransformation)
returns the pointer to the linear term added to the funciton
cb_get_linear_cost(self::CBAffineFunctionTransformation, i::Integer)
returns the value of the linear cost coefficient for @a i>=0 and for i==-1 the constant offset
ConicBundle.cb_get_lmin_invM1!
— Functioncb_get_lmin_invM1!(self::CBQPKKTSubspaceHPrecond)
return (an estimate of) the minimum eigenvalue of the preconditioner M1^{-1}; this is used, e.g., to correct the precission in MINRES
ConicBundle.cb_get_local_dualcost
— Functioncb_get_local_dualcost(self::CBUQPConeModelBlock)
returns the current local dual cost contribution
cb_get_local_dualcost(self::CBUQPSumModelBlock)
get joint dualcost of all subblocks
ConicBundle.cb_get_local_model_aggregate
— Functioncb_get_local_model_aggregate(self::CBSumBundle, aggregate::CBMinorantPointer, factor::Real = 1., aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
get the aggregate that is due to root sumbundle parts handled here
ConicBundle.cb_get_local_primalcost
— Functioncb_get_local_primalcost(self::CBUQPConeModelBlock)
returns the current local primal cost contribution <d,s>
cb_get_local_primalcost(self::CBUQPSumModelBlock)
get joint primalcost of all subblocks
ConicBundle.cb_get_lower_bounds!
— Functioncb_get_lower_bounds!(self::CBBoxOracle)
- @brief returns the lower bounds vector of the box
cb_get_lower_bounds!(self::CBNNCBoxSupportFunction)
returns the column vector of lower bounds
ConicBundle.cb_get_make_aggr_time
— Functioncb_get_make_aggr_time(self::CBBundleSolver)
return time spent in forming the model aggregate
ConicBundle.cb_get_map_to_old_variables
— Functioncb_get_map_to_old_variables(self::CBAFTModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th variable (injective!), index values exceeding old_vardim() refer to newly appended variables
cb_get_map_to_old_variables(self::CBGroundsetModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th variable (injective!), index values exceeding old_vardim() refer to newly appended variables
cb_get_map_to_old_variables(self::CBNNCBoxSupportModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th variable (injective!), index values exceeding old_vardim() refer to newly appended variables
cb_get_map_to_old_variables(self::CBPSCAffineModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th variable (injective!), index values exceeding old_vardim() refer to newly appended variables
cb_get_map_to_old_variables(self::CBSOCSupportModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th variable (injective!), index values exceeding old_vardim() refer to newly appended variables
ConicBundle.cb_get_maxeigval_factor
— Functioncb_get_maxeigval_factor(self::CBPSCVariableMetricSelection)
returns the parameter
ConicBundle.cb_get_maxit
— Functioncb_get_maxit(self::CBMinRes)
get maximum number of iterations
cb_get_maxit(self::CBPCG)
get maximum number of iterations
cb_get_maxit(self::CBPsqmr)
get maximum number of iterations
ConicBundle.cb_get_maxiter
— Functioncb_get_maxiter(self::CBUQPSolver)
return the upper bound on interior point interations
Missing docstring for cb_get_maxweight
. Check Documenter's build log for details.
ConicBundle.cb_get_mineigval_factor
— Functioncb_get_mineigval_factor(self::CBPSCVariableMetricSelection)
returns the parameter
ConicBundle.cb_get_minorant
— Functioncb_get_minorant(self::CBMinorantPointer)
returns the Minorant *this points to or 0 if empty
cb_get_minorant(self::CBMinorantPointer, mat::CBMatrix, column::Integer, alpha::Real = 1., add::Bool = false, skip_fixed::Union{<:CBIndexmatrix,Nothing} = nothing, fixed_vals::Union{<:CBMatrix,Nothing} = nothing)
*@brief store/add the minorant in offset and a matrix column, possibly skipping indices skip_fixed. The coordinats of the latter ones are multiplied by the given values or 0 and added to offset
The dimensions of the matrix must already fit the requirements on input.
If add is false (as by default), the full length of the column
is initialized to the gradient and filled up with zeros where needed.
skip_fixed and fixed_vals must both be given or both not be given.
If they are both given, both must have the same length.
If skip_fixed is given, it must have strictly increasing indices.
The skip part of the routine is used in implementations of BundleScaling::get_QP_costs.
cb_get_minorant(self::CBMinorantPointer, mp::CBMinorantPointer, alpha::Real = 1.)
*@brief store/add the minorant in/to mp, possibly scaled by alpha
If mp is empty, store it there, if mp is not empty, add it.
if *this is empty, it causes an error.
cb_get_minorant(self::CBMinorantPointer, mp::CBMinorantPointer, alpha::Real, sp::Union{<:CBSparsemat,Nothing}, provided_row_indices::Union{<:CBIndexmatrix,Nothing} = nothing, needed_col_indices::Union{<:CBIndexmatrix,Nothing} = nothing, enforce_copy::Bool = false)
*@brief store/add the minorant in/to mp, possibly scaled by alpha and transformed by sp, which possibly requires only the indices of providedrowindices to compute possibly only the indices in neededcolindices
If mp is empty, store it there, if mp is not empty, add it.
if sp==0, it is treated as the identity
If provided_row_indices or needed_col_indices is given, its indices must
be in strictly increasing order. For sp==0 both must coincide and will
probably be ignored by just returning a scaled reference to *this in mp.
if *this is empty, it causes an error.
cb_get_minorant(self::CBMinorantUseData)
return the final minorant (by a recursive call) or 0 if there is none
Missing docstring for cb_get_minweight
. Check Documenter's build log for details.
ConicBundle.cb_get_mode
— Functioncb_get_mode(self::CBSumBundle, ft::CBFunctionTask)
gets the corresponding mode (call only if a hasbundlefor(ft)==true)
ConicBundle.cb_get_model
— Functioncb_get_model(self::CBBundleSolver)
return a pointer to the cutting model
ConicBundle.cb_get_model_aggregate
— Functioncb_get_model_aggregate(self::CBBundleSolver)
returns the linear term of the latest model aggregate linear minorant
ConicBundle.cb_get_model_aggregate!
— Functioncb_get_model_aggregate!(self::CBAFTModel, model_aggregate::CBMinorantPointer, all_parts::Bool = true, aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
see SumBlockModle::getmodleaggregate(CHMatrixClasses::Integer&,CHMatrixClasses::Real&,CHMatrixClasses::Matrix&,bool,bool,const AffineFunctionTransformation*)
ConicBundle.cb_get_model_calls_delete!
— Functioncb_get_model_calls_delete!(self::CBAffineFunctionTransformation)
retruns true if the model has to delete this
ConicBundle.cb_get_model_data
— Functioncb_get_model_data(self::CBNNCData, model_minorants::CBMinorantBundle, model_coeff::CBMatrix)
the minorants currently used in the model; the list may be empty or max contain other minorants than returned in getlatestminorants(); the minorants still need to be mutliplied by function_factor
ConicBundle.cb_get_modeldcstr!
— Functioncb_get_modeldcstr!(self::CBQPConeModelBlock, modeldcstr::CBMatrix, startindex_constraints::Integer)
set the local modeldcstr value in modeldcstr beginning with startindex (initialize it, do not add)
cb_get_modeldcstr!(self::CBQPSumModelBlock, modeldcstr::CBMatrix, startindex_constraints::Integer)
set the local modeldcstr value in modeldcstr beginning with startindex (initialize it, do not add)
ConicBundle.cb_get_modeldx!
— Functioncb_get_modeldx!(self::CBQPConeModelBlock, modeldx::CBMatrix, startindex_model::Integer)
set the local modeldx value in modeldx beginning with startindex (initialize it, do not add)
cb_get_modeldx!(self::CBQPSumModelBlock, modeldx::CBMatrix, startindex_model::Integer)
set the local modeldx value in modeldx beginning with startindex (initialize it, do not add)
ConicBundle.cb_get_modeleps
— Functioncb_get_modeleps(self::CBBundleSolver)
returns the model precision @a modeleps
ConicBundle.cb_get_modelfails
— Functioncb_get_modelfails(self::CBBundleSolver)
returns the number of fails in model evaluatoins since the last null/descent step
ConicBundle.cb_get_modelfailslimit
— Functioncb_get_modelfailslimit(self::CBBundleTerminator)
returns the current value of this parameter
ConicBundle.cb_get_modelval
— Functioncb_get_modelval(self::CBBundleSolver)
returns the model value in the candidate that was used for deciding on null/descent step
ConicBundle.cb_get_modelx!
— Functioncb_get_modelx!(self::CBQPConeModelBlock, modelx::CBMatrix, startindex_model::Integer)
set the local modelx value in modelx beginning with startindex (initialize it, do not add)
cb_get_modelx!(self::CBQPSumModelBlock, modelx::CBMatrix, startindex_model::Integer)
set the local modelx value in modelx beginning with startindex (initialize it, do not add)
ConicBundle.cb_get_modification_id
— Functioncb_get_modification_id(self::CBMinorantUseData)
returns the modification id
ConicBundle.cb_get_mu!
— Functioncb_get_mu!(self::CBUQPConeModelBlock)
get the current barrier parameter
ConicBundle.cb_get_mu_info
— Functioncb_get_mu_info(self::CBQPConeModelBlock)
add dimensions of the primal-dual pairs to mudim and add the "trace" (the inner product with center) of the respective primal-dual pair products for the current step; update the min and max values of xi*zi
cb_get_mu_info(self::CBQPSumModelBlock)
add dimensions of the primal-dual pairs to mudim and add the "trace" (the inner product with center) of the respective primal-dual pair products for the current step; update the min and max values of xi*zi
ConicBundle.cb_get_mu_stats!
— Functioncb_get_mu_stats!(self::CBQPKKTSolverComparison, lbmu::Real, ubmu::Real, dims::CBIndexmatrix, mu::CBMatrix, prepsecs::CBMatrix, predsecs::CBMatrix, corrsecs::CBMatrix, predcalls::CBIndexmatrix, corrcalls::CBIndexmatrix, cond::CBMatrix, pccols::CBIndexmatrix, sysviol::CBMatrix)
return those data columns (each a KKT system; columns are more efficient to append than lines) that fall into the given lower and upper bounds on mu
ConicBundle.cb_get_n_contributors
— Functioncb_get_n_contributors(self::CBSumBundle, ft::CBFunctionTask)
gets the corresponding ncontributors (call only if a hasbundle_for(ft)==true)
ConicBundle.cb_get_n_descent_steps
— Functioncb_get_n_descent_steps(self::CBMatrixCBSolver)
- @brief Returns the number of function descent setps
ConicBundle.cb_get_n_functions
— Methodcb_get_n_functions(self::CBMatrixCBSolver)
- @brief Returns the current number of functions in the problem.
ConicBundle.cb_get_n_inner_iterations
— Functioncb_get_n_inner_iterations(self::CBMatrixCBSolver)
- @brief Returns the number of inner iterations of the bundle method
ConicBundle.cb_get_n_inner_updates
— Functioncb_get_n_inner_updates(self::CBMatrixCBSolver)
- @brief Returns the number of inner multiplier updates for the box constraints
ConicBundle.cb_get_n_latest_minorants
— Functioncb_get_n_latest_minorants(self::CBVariableMetricSVDSelection)
returns nlatestminorants
ConicBundle.cb_get_n_oracle_calls
— Functioncb_get_n_oracle_calls(self::CBMatrixCBSolver)
- @brief Returns the number of function evaluations
ConicBundle.cb_get_nbh_info
— Functioncb_get_nbh_info(self::CBQPConeModelBlock, mudim::Integer, tr_xz::Real, tr_xdzpdxz::Real, tr_dxdz::Real, nbh_ubnd::Real)
for limiting the stepsize with respect to the neighborhood this information about norms and inner products of x(.)z-trxz-trxz/mudim(.)1, x.()dz+dx(.)z-trxdzpdxz/mudim(.)1, and dx(.)dz-trdxdz/mudim(.)1 is required, each block *adds its contribution to the numbers
cb_get_nbh_info(self::CBQPSumModelBlock, mudim::Integer, tr_xz::Real, tr_xdzpdxz::Real, tr_dxdz::Real, nbh_ubnd::Real)
for limiting the stepsize with respect to the neighborhood this information about norms and inner products of x(.)z-trxz-trxz/mudim(.)1, x.()dz+dx(.)z-trxdzpdxz/mudim(.)1, and dx(.)dz-trdxdz/mudim(.)1 is required, each block *adds its contribution to the numbers
ConicBundle.cb_get_nblocks
— Functioncb_get_nblocks(self::CBBlockPSCPrimal)
returns the number of blocks
ConicBundle.cb_get_new_index
— Functioncb_get_new_index(self::CBSumBundleHandler, ft::CBFunctionTask)
returns the index of the newest subgradient in the bundle
ConicBundle.cb_get_new_vardim
— Functioncb_get_new_vardim(self::CBAFTModification)
returns the number of variables once all stored modifications have been performed
cb_get_new_vardim(self::CBGroundsetModification)
returns the number of variables once all stored modifications have been performed
cb_get_new_vardim(self::CBNNCBoxSupportModification)
returns the number of variables once all stored modifications have been performed
cb_get_new_vardim(self::CBPSCAffineModification)
returns the number of variables once all stored modifications have been performed
cb_get_new_vardim(self::CBSOCSupportModification)
returns the number of variables once all stored modifications have been performed
ConicBundle.cb_get_next_weight
— Functioncb_get_next_weight(self::CBMatrixCBSolver)
- @brief Returns the next weight for the quadratic term in the augmented subproblem suggested by the internal weight updating heuristic
ConicBundle.cb_get_next_weight_set
— Functioncb_get_next_weight_set(self::CBBundleHKWeight)
true if the next weight was prespecified externally
cb_get_next_weight_set(self::CBBundleRQBWeight)
true if the next weight was prespecified externally
ConicBundle.cb_get_nmult
— Functioncb_get_nmult(self::CBMinRes)
returns the number of matrix-vector multiplications of the last call
cb_get_nmult(self::CBPCG)
returns the number of matrix-vector multiplications of the last call
cb_get_nmult(self::CBPsqmr)
returns the number of matrix-vector multiplications of the last call
ConicBundle.cb_get_nncx!
— Functioncb_get_nncx!(self::CBQPConeModelBlock, nncx::CBMatrix, nncx_activity::Union{<:CBMatrix,Nothing} = nothing, cautious::Bool = false)
get the linear part of modelx (and a guess, which of them are active, in {0.,1.})
cb_get_nncx!(self::CBUQPConeModelBlock, nncx::CBMatrix, nncx_activity::Union{<:CBMatrix,Nothing} = nothing, cautious::Bool = false)
get the linear part of modelx (and a guess, which of them are active, in {0.,1.})
ConicBundle.cb_get_nncz!
— Functioncb_get_nncz!(self::CBUQPConeModelBlock, vecz::CBMatrix)
get the current dual non negative cone point (of the solution)
ConicBundle.cb_get_null_step
— Functioncb_get_null_step(self::CBMatrixCBSolver)
@brief returns true if the last evaluation of the last call to solve() resulted in a null step
Mind: if there was no (successful) evaluation, neither getdescentstep() nor getnullstep() will return true;
cb_get_null_step(self::CBBundleSolver)
returns true if the latest iteration resulted in a null step (note, getdescentstep() and getnullstep() may both return false e.g. if termination occurs)
ConicBundle.cb_get_objevallimit
— Functioncb_get_objevallimit(self::CBBundleTerminator)
returns the current value of this parameter
ConicBundle.cb_get_objval
— Methodcb_get_objval(self::CBMatrixCBSolver)
- @brief Returns the objective value resulting from last descent step (initially undefined). If no problem modification routines were called since then, it is the objective value at the point returned by get_center().
ConicBundle.cb_get_offset
— Functioncb_get_offset(self::CBUQPSolver)
returns the constant cost offset value
ConicBundle.cb_get_offset_append
— Functioncb_get_offset_append(self::CBPSCAffineModification)
returns null if nothing or default values have to be appended, otherwise it points to a matrix whose entries need to be appended to the right hand side lower bounds vector
ConicBundle.cb_get_old_X!
— Functioncb_get_old_X!(self::CBUQPConeModelBlock, i::Integer, X::CBSymmatrix)
get the previous primal positive semidefinite cone point to cone i (of the solution)
ConicBundle.cb_get_old_Z!
— Functioncb_get_old_Z!(self::CBUQPConeModelBlock, i::Integer, Z::CBSymmatrix)
get the previous dual positive semidefinite cone point to cone i (of the solution)
ConicBundle.cb_get_old_mu!
— Functioncb_get_old_mu!(self::CBUQPConeModelBlock)
get the previous barrier parameter
ConicBundle.cb_get_old_nncx!
— Functioncb_get_old_nncx!(self::CBUQPConeModelBlock, vecx::CBMatrix)
get the previous primal non negative cone point (of the solution)
ConicBundle.cb_get_old_nncz!
— Functioncb_get_old_nncz!(self::CBUQPConeModelBlock, vecz::CBMatrix)
get the previous dual non negative cone point (of the solution)
ConicBundle.cb_get_old_s!
— Functioncb_get_old_s!(self::CBUQPConeModelBlock)
get the previous slack value of the trace constraint
ConicBundle.cb_get_old_socx!
— Functioncb_get_old_socx!(self::CBUQPConeModelBlock, i::Integer, vecx::CBMatrix)
get the previous primal second order cone point to cone i (of the solution)
ConicBundle.cb_get_old_socz!
— Functioncb_get_old_socz!(self::CBUQPConeModelBlock, i::Integer, vecz::CBMatrix)
get the previous dual second order cone point to cone i (of the solution)
ConicBundle.cb_get_old_vardim
— Functioncb_get_old_vardim(self::CBAFTModification)
returns the number of variables before modification
cb_get_old_vardim(self::CBGroundsetModification)
returns the number of variables before modification
cb_get_old_vardim(self::CBNNCBoxSupportModification)
returns the number of variables before modification
cb_get_old_vardim(self::CBPSCAffineModification)
returns the number of variables before modification
cb_get_old_vardim(self::CBSOCSupportModification)
returns the number of variables before modification
ConicBundle.cb_get_old_y!
— Functioncb_get_old_y!(self::CBUQPConeModelBlock)
get the previous dual value of the trace constraint
ConicBundle.cb_get_oldfactor
— Functioncb_get_oldfactor(self::CBPSCVariableMetricSelection)
returns the parameter
ConicBundle.cb_get_opAt!
— Functioncb_get_opAt!(self::CBPSCAffineFunction)
- returns the row representation of the coefficient matrices (each entry of the map represents a row by a SparseCoeffmatVector).
ConicBundle.cb_get_oracle_object!
— Functioncb_get_oracle_object!(self::CBAFTModel)
as AFTModel has no oracle of its own, this returns the dummy oracle
cb_get_oracle_object!(self::CBBoxModel)
returns the oracle
cb_get_oracle_object!(self::CBNNCModel)
returns the oracle
cb_get_oracle_object!(self::CBPSCModel)
returns the oracle
cb_get_oracle_object!(self::CBSOCModel)
returns the oracle
cb_get_oracle_object!(self::CBSumModel)
as AFTModel has no oracle of its own, this returns the dummy oracle
ConicBundle.cb_get_oraclefails
— Functioncb_get_oraclefails(self::CBBundleSolver)
returns the number of fails in oracle evaluations since the last descent step
ConicBundle.cb_get_oraclefailslimit
— Functioncb_get_oraclefailslimit(self::CBBundleTerminator)
returns the current value of this parameter
ConicBundle.cb_get_positive
— Functioncb_get_positive(self::CBCMgramdense)
returns the flag on whether the Gram matrix is used in positive or negative form
cb_get_positive(self::CBCMgramsparse)
returns the flag on whether the Gram matrix is used in positive or negative form
cb_get_positive(self::CBCMgramsparse_withoutdiag)
returns the flag on whether the Gram matrix is used in positive or negative form
ConicBundle.cb_get_posteval_time
— Functioncb_get_posteval_time(self::CBAFTModel)
see SumBlockModel::getpostevaltime()
cb_get_posteval_time(self::CBSumModel)
see SumBlockModel::getpostevaltime()
ConicBundle.cb_get_precond_rank!
— Functioncb_get_precond_rank!(self::CBQPKKTSubspaceHPrecond)
for evaluation purposes with iterative solvers, return the rank of the precondiontioner used (or the number of n-vector multiplications per call)
ConicBundle.cb_get_preeval_time
— Functioncb_get_preeval_time(self::CBAFTModel)
see SumBlockModel::getpreevaltime()
cb_get_preeval_time(self::CBSumModel)
see SumBlockModel::getpreevaltime()
ConicBundle.cb_get_primal
— Functioncb_get_primal(self::CBMinorant)
returns NULL if there is no primal data and otherwise a pointer to it (const version)
ConicBundle.cb_get_primal!
— Functioncb_get_primal!(self::CBMinorantPointer)
returns the primal of the Minorant *this points to or 0 if empty (first carrying out any pending scalings on the minorant)
cb_get_primal!(self::CBMinorant)
returns NULL if there is no primal data and otherwise a pointer to it
ConicBundle.cb_get_primaleigs
— Functioncb_get_primaleigs(self::CBPSCData)
returns primaleigs
ConicBundle.cb_get_primalval
— Functioncb_get_primalval(self::CBUQPSolver)
return the primal objective value (lower bound) of the last solve
ConicBundle.cb_get_primalvecs
— Functioncb_get_primalvecs(self::CBPSCData)
returns primalvecs
ConicBundle.cb_get_prob_stats!
— Functioncb_get_prob_stats!(self::CBQPKKTSolverComparison, dims::CBIndexmatrix, iterations::CBIndexmatrix, lastmu::CBMatrix, prepsecs::CBMatrix, predsecs::CBMatrix, corrsecs::CBMatrix, predcalls::CBIndexmatrix, corrcalls::CBIndexmatrix)
return one data column per subproblem (more efficient to append than lines) with the sum of the time/calls/etc.
ConicBundle.cb_get_prox
— Functioncb_get_prox(self::CBMatrixCBSolver)
- @brief Returns the pointer to the current prox term of the bundle solver
cb_get_prox(self::CBBundleSolver)
return a pointer to the quadratic term of the proximal term
ConicBundle.cb_get_pscx!
— Functioncb_get_pscx!(self::CBQPConeModelBlock, i::Integer, pscx_eigs::CBMatrix, pscx_vecs::CBMatrix, pscx_primalgrowth::CBMatrix, pscx_dualgrowth::CBMatrix)
get the PSC part of modelx (and a guess on the rank of the active part)
cb_get_pscx!(self::CBUQPConeModelBlock, i::Integer, pscx_eigs::CBMatrix, pscx_vecs::CBMatrix, pscx_primalgrowth::CBMatrix, pscx_dualgrowth::CBMatrix)
get the PSC part of modelx (and a guess on the rank of the active part)
ConicBundle.cb_get_qp_solver!
— Functioncb_get_qp_solver!(self::CBLPGroundset, solves_model_without_gs::Bool, Hp::Union{<:CBBundleProxObject,Nothing})
returns a pointer to an internal QPSolverObject that is able to solve bundle suproblems efficiently for this kind of groundset and scaling; if solvesmodelwithout_gs == true the qp solver does not include the groundset and the groundset has to be dealt with by the Gauss Seidel approach
cb_get_qp_solver!(self::CBUnconstrainedGroundset, solves_model_without_gs::Bool, Hp::Union{<:CBBundleProxObject,Nothing})
returns a pointer to an internal QPSolverObject that is able to solve bundle suproblems efficiently for this kind of groundset and scaling; if solvesmodelwithout_gs == true the qp solver does not include the groundset and the groundset has to be dealt with by the Gauss Seidel approach
ConicBundle.cb_get_qpfails
— Functioncb_get_qpfails(self::CBBundleSolver)
returns the number of fails in qp subproblems since the last null/descent step
ConicBundle.cb_get_qpfailslimit
— Functioncb_get_qpfailslimit(self::CBBundleTerminator)
returns the current value of this parameter
ConicBundle.cb_get_recomp
— Functioncb_get_recomp(self::CBBundleSolver)
returns the number of oracle reevaluations for the center due to numerical problems since the last descent step
ConicBundle.cb_get_recomplimit
— Functioncb_get_recomplimit(self::CBBundleTerminator)
returns the current value of this parameter
ConicBundle.cb_get_reset_primal
— Functioncb_get_reset_primal(self::CBPSCAffineModification)
returns true if the generating primal is to be replaced by the one stored here
ConicBundle.cb_get_residual_norm
— Functioncb_get_residual_norm(self::CBMinRes)
returns the residual norm of last call
cb_get_residual_norm(self::CBPCG)
returns the residual norm of last call
cb_get_residual_norm(self::CBPsqmr)
returns the residual norm of last call
ConicBundle.cb_get_ret_code
— Functioncb_get_ret_code(self::CBBoxModel)
see SumBlockModel::getretcode()
cb_get_ret_code(self::CBNNCModel)
see SumBlockModel::getretcode()
cb_get_ret_code(self::CBPSCModel)
see SumBlockModel::getretcode()
cb_get_ret_code(self::CBSOCModel)
see SumBlockModel::getretcode()
ConicBundle.cb_get_rhslb
— Functioncb_get_rhslb(self::CBQPSolver)
returns the constraint lower bounds
ConicBundle.cb_get_rhslbind
— Functioncb_get_rhslbind(self::CBQPSolver)
returns the indices with constraint lower bound slacks
ConicBundle.cb_get_rhsub
— Functioncb_get_rhsub(self::CBQPSolver)
returns the constraint upper bounds
ConicBundle.cb_get_rhsubind
— Functioncb_get_rhsubind(self::CBQPSolver)
returns the indices with constraint upper bound slacks
ConicBundle.cb_get_rowindex
— Functioncb_get_rowindex(self::CBSparsemat)
returns the index vector of the row representation holding the column index for each element
ConicBundle.cb_get_rowinfo
— Functioncb_get_rowinfo(self::CBSparsemat)
returns information on nonzero rows, k by 3, listing: index, %#nonzeros, first index in rowindex/rowval
ConicBundle.cb_get_rowval
— Functioncb_get_rowval(self::CBSparsemat)
returns the value vector of the row representation holding the value for each element
ConicBundle.cb_get_s!
— Functioncb_get_s!(self::CBUQPConeModelBlock)
get the current slack value of the trace constraint
ConicBundle.cb_get_scalefactor
— Functioncb_get_scalefactor(self::CBCoeffmatInfo)
returns the scale factor
ConicBundle.cb_get_selection_method
— Functioncb_get_selection_method(self::CBPSCVariableMetricSelection)
returns selection_method
cb_get_selection_method(self::CBVariableMetricSVDSelection)
returns selection_method
ConicBundle.cb_get_sgnorm
— Methodcb_get_sgnorm(self::CBMatrixCBSolver)
- @brief Returns Euclidean norm of the latest aggregate subgradient.
ConicBundle.cb_get_shallowcut
— Functioncb_get_shallowcut(self::CBBundleSolver)
returns the number of oracle evaluations that returned an epsilon subgradient that improved the model by a dangerously small amount (mostly this is due to solving the QP subproblems only approximately)
ConicBundle.cb_get_skip_extension
— Functioncb_get_skip_extension(self::CBPSCAffineModification)
returns true if the generating primal is to be replaced by the one stored here
ConicBundle.cb_get_skippedsize
— Functioncb_get_skippedsize(self::CBPSCData)
returns skippedsize
ConicBundle.cb_get_socdim!
— Functioncb_get_socdim!(self::CBSOCSupportFunction)
returns the dimension of the second order cone
ConicBundle.cb_get_socx!
— Functioncb_get_socx!(self::CBQPConeModelBlock, i::Integer, socx::CBMatrix, socx_activity::Union{<:AbstractVector{Cdouble},Nothing}, cautious::Bool = false)
get the SOC part of modelx (and a guess whether the entire cone is active
cb_get_socx!(self::CBUQPConeModelBlock, i::Integer, socx::CBMatrix, socx_activity::Union{<:AbstractVector{Cdouble},Nothing}, cautious::Bool = false)
get the SOC part of modelx (and a guess whether the entire cone is active
ConicBundle.cb_get_socz!
— Functioncb_get_socz!(self::CBUQPConeModelBlock, i::Integer, vecz::CBMatrix)
get the current dual second order cone point to cone i (of the solution)
Missing docstring for cb_get_solver
. Check Documenter's build log for details.
ConicBundle.cb_get_starting_point
— Functioncb_get_starting_point(self::CBLPGroundset)
returns a stored starting point, note: this need not be feasible; if generated automatically, its dimension is correct.
cb_get_starting_point(self::CBUnconstrainedGroundset)
returns a stored starting point, note: this need not be feasible; if generated automatically, its dimension is correct.
ConicBundle.cb_get_status
— Functioncb_get_status(self::CBUQPSolver)
return the status of the last solve
ConicBundle.cb_get_store
— Functioncb_get_store(self::CBMatrix)
returns the current address of the internal value array; use cautiously!
cb_get_store(self::CBIndexmatrix)
returns the current address of the internal value array; use cautiously!
cb_get_store(self::CBSymmatrix)
returns the current address of the internal value array; use cautiously!
ConicBundle.cb_get_subgradient
— Methodcb_get_subgradient(self::CBMatrixCBSolver, subgradient::CBMatrix)
@brief Returns the latest aggregate subgradient (of the entire problem with groundset as provided by the solver)
@return - 0 on success - != 0 otherwise
ConicBundle.cb_get_sumaugvalfails
— Functioncb_get_sumaugvalfails(self::CBBundleSolver)
returns the number of failures to increase the augmented model value since the last clear() or clear_fails()
ConicBundle.cb_get_sumbundle
— Functioncb_get_sumbundle(self::CBSumBundleHandler)
returns the sumbundle
ConicBundle.cb_get_suminnerit
— Functioncb_get_suminnerit(self::CBBundleSolver)
returns the number of bundle method itrations since the last clear()
ConicBundle.cb_get_summodelfails
— Functioncb_get_summodelfails(self::CBBundleSolver)
returns the number of fails in model evaluations since the last clear() or clear_fails()
ConicBundle.cb_get_sumoraclefails
— Functioncb_get_sumoraclefails(self::CBBundleSolver)
returns the number of fails in oracle evaluations since the last clear() or clear_fails()
ConicBundle.cb_get_sumqpfails
— Functioncb_get_sumqpfails(self::CBBundleSolver)
returns the number of fails in qp subproblems since the last clear() or clear_fails()
ConicBundle.cb_get_sumrecomp
— Functioncb_get_sumrecomp(self::CBBundleSolver)
returns the number of oracle reevaluations for the center due to numerical problems since the last clear() or clear_fails()
ConicBundle.cb_get_sumupdatecnt
— Functioncb_get_sumupdatecnt(self::CBBundleSolver)
returns the number of model qp subproblems since the last clear()
ConicBundle.cb_get_suppcol
— Functioncb_get_suppcol(self::CBSparsesym)
returns the vector listing in ascending order the original column indices of the principal support submatrix
ConicBundle.cb_get_suppind
— Functioncb_get_suppind(self::CBSparsesym)
returns the index vector of the column representation holding the row index w.r.t. the principal support submatrix for each element
ConicBundle.cb_get_sysviol_constraints!
— Functioncb_get_sysviol_constraints!(self::CBQPConeModelBlock, constrvec::CBMatrix, startindex_constr::Integer)
set the constraint violation for the current system solution starting at this index
cb_get_sysviol_constraints!(self::CBQPSumModelBlock, constrvec::CBMatrix, startindex_constr::Integer)
set the constraint violation for the current system solution starting at this index
ConicBundle.cb_get_sysviol_model!
— Functioncb_get_sysviol_model!(self::CBQPConeModelBlock, modelvec::CBMatrix, startindex_model::Integer, y_plus_dy::CBMatrix, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
set the model violation for the current system solution
cb_get_sysviol_model!(self::CBQPSumModelBlock, modelvec::CBMatrix, startindex_model::Integer, dy::CBMatrix, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
set the model violation for the current system solution
ConicBundle.cb_get_t_precond_mult!
— Functioncb_get_t_precond_mult!(self::CBQPKKTSubspaceHPrecond)
for evaluation purposes with iterative solvers, return the time spent in the multiplication with
ConicBundle.cb_get_term_corr
— Functioncb_get_term_corr(self::CBBundleDenseTrustRegionProx)
returns a correction factor for termination precision if the quadratic term is strong
cb_get_term_corr(self::CBBundleDiagonalTrustRegionProx)
returns a correction factor for termination precision if the quadratic term is strong
cb_get_term_corr(self::CBBundleDLRTrustRegionProx)
returns a correction factor for termination precision if the quadratic term is strong
cb_get_term_corr(self::CBBundleIdProx)
returns the correction factor for the termination criterion, here min(1,1/weight)
cb_get_term_corr(self::CBBundleLowRankTrustRegionProx)
returns a correction factor for termination precision if the quadratic term is strong
cb_get_term_corr(self::CBBundleSolver)
returns the correction factor used in the termination criterion to compensate the strength of the proximal term
ConicBundle.cb_get_termeps
— Functioncb_get_termeps(self::CBUQPSolver)
return the termination precision
cb_get_termeps(self::CBBundleTerminator)
returns the current termination precision
ConicBundle.cb_get_terminate
— Functioncb_get_terminate(self::CBBundleSolver)
returns the value of the last call to BundleTerminator::check_termination()
ConicBundle.cb_get_terminated
— Functioncb_get_terminated(self::CBBundleTerminator)
return the termination code returned in the last call to check_termination()
ConicBundle.cb_get_terminator
— Functioncb_get_terminator(self::CBBundleSolver)
return a pointer to the termination criterion
ConicBundle.cb_get_termprec
— Functioncb_get_termprec(self::CBMinRes)
return the (absolute) precision requirement for termination used in the last call
cb_get_termprec(self::CBPCG)
return the (absolute) precision requirement for termination used in the last call
cb_get_termprec(self::CBPsqmr)
return the (absolute) precision requirement for termination used in the last call
ConicBundle.cb_get_timelimit
— Functioncb_get_timelimit(self::CBBundleTerminator)
returns the timelimit value
ConicBundle.cb_get_topvecs
— Functioncb_get_topvecs(self::CBPSCData)
returns topvecs
ConicBundle.cb_get_trace!
— Functioncb_get_trace!(self::CBQPConeModelBlock)
get the right hand side of the trace constraint
cb_get_trace!(self::CBUQPConeModelBlock)
get the right hand side of the trace constraint
ConicBundle.cb_get_ubindex
— Functioncb_get_ubindex(self::CBQPSolver)
returns the indices of variable lower bounds < ConicBundle::CBplusinfinity
ConicBundle.cb_get_ubounds
— Functioncb_get_ubounds(self::CBMatrixCBSolver)
- @brief Returns a pointer to the vector of upper bounds or null if there is no such vector
ConicBundle.cb_get_uby
— Functioncb_get_uby(self::CBQPSolver)
returns the upper bounds on y
cb_get_uby(self::CBLPGroundset)
returns the upper bounds vector on y if it exists
ConicBundle.cb_get_upper_bounds!
— Functioncb_get_upper_bounds!(self::CBBoxOracle)
- @brief returns the upper bounds vector of the box
cb_get_upper_bounds!(self::CBNNCBoxSupportFunction)
retunrs the column vector of upper bounds
ConicBundle.cb_get_use_linval
— Functioncb_get_use_linval(self::CBBundleSolver)
returns true if the aggregate linear minorant is used for the model value
ConicBundle.cb_get_use_variable_metric
— Functioncb_get_use_variable_metric(self::CBBundleSolver)
returns the value of the variable @a dodynamicscaling, see there
ConicBundle.cb_get_use_yfixing
— Functioncb_get_use_yfixing(self::CBLPGroundset)
true if the cooridinate fixing heuristic is switched on (only constrained cases)
cb_get_use_yfixing(self::CBUnconstrainedGroundset)
true if the cooridinate fixing heuristic is switched on (only constrained cases)
ConicBundle.cb_get_var_append
— Functioncb_get_var_append(self::CBPSCAffineModification)
returns null if nothing or default values have to be appended, otherwise it points to a sparse matrix whose columns need to be appended to the matrix
ConicBundle.cb_get_variable_metric_selection
— Functioncb_get_variable_metric_selection(self::CBLPGroundset)
delete old selector and set a new one (0 is allowed resulting in no local selector)
ConicBundle.cb_get_weight
— Functioncb_get_weight(self::CBBundleHKWeight)
returns current value of the weight
cb_get_weight(self::CBBundleRQBWeight)
returns current value of the weight
cb_get_weight(self::CBBundleSolver)
returns the weight for the proximal term used in the last quadratic subproblem
ConicBundle.cb_get_weightu
— Functioncb_get_weightu(self::CBBundleDenseTrustRegionProx)
returns the current weight of the proximal term
cb_get_weightu(self::CBBundleDiagonalTrustRegionProx)
returns the current weight of the proximal term
cb_get_weightu(self::CBBundleDLRTrustRegionProx)
returns the current weight in use
cb_get_weightu(self::CBBundleIdProx)
returns the current weight of the proximal term
cb_get_weightu(self::CBBundleLowRankTrustRegionProx)
returns the current weight in use
ConicBundle.cb_get_x!
— Functioncb_get_x!(self::CBUQPSolver)
return the joint model vector (primal solution) produced by the last solve
ConicBundle.cb_get_y!
— Functioncb_get_y!(self::CBUQPSolver)
return the joint dual vector (dual solution) produced by the last solve
cb_get_y!(self::CBUQPConeModelBlock)
get the current dual value of the trace constraint
ConicBundle.cb_get_yfixed
— Functioncb_get_yfixed(self::CBLPGroundset)
if not NULL (iff getuseyfixing()==false) it returns the vector yfixed with yfixed(i)=0 if not fixed, =1 is fixed already, =2 if newly fixed
cb_get_yfixed(self::CBUnconstrainedGroundset)
if not NULL (iff getuseyfixing()==false) it returns the vector yfixed with yfixed(i)=0 if not fixed, =1 is fixed already, =2 if newly fixed
cb_get_yfixed(self::CBBundleSolver)
if the groundset has constraints and setdoyfixing was set with true enty i of the returned matrix is !=0 if the coordinate was fixed at one of its bounds and 0 if the coordinate is still free
ConicBundle.cb_gramip
— Functioncb_gramip(self::CBCMgramdense, P::CBMatrix)
returns ip(this,PP^T)=trace P^T(this)P
cb_gramip(self::CBCMgramdense, P::CBMatrix, start_row::Integer, Lam::Union{<:CBMatrix,Nothing} = nothing)
returns ip(this,QQ^T)=trace Q^T(this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_gramip(self::CBCMgramsparse, P::CBMatrix)
returns ip(this,PP^T)=trace P^T(this)P
cb_gramip(self::CBCMgramsparse, P::CBMatrix, start_row::Integer, Lam::Union{<:CBMatrix,Nothing} = nothing)
returns ip(this,QQ^T)=trace Q^T(this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_gramip(self::CBCMgramsparse_withoutdiag, P::CBMatrix)
returns ip(this,PP^T)=trace P^T(this)P
cb_gramip(self::CBCMgramsparse_withoutdiag, P::CBMatrix, start_row::Integer, Lam::Union{<:CBMatrix,Nothing} = nothing)
returns ip(this,QQ^T)=trace Q^T(this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_gramip(self::CBCMlowrankdd, P::CBMatrix)
returns ip(this,PP^T)=trace P^T(this)P
cb_gramip(self::CBCMlowrankdd, P::CBMatrix, start_row::Integer, Lam::Union{<:CBMatrix,Nothing} = nothing)
returns ip(this,QQ^T)=trace Q^T(this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_gramip(self::CBCMlowranksd, P::CBMatrix)
returns ip(this,PP^T)=trace P^T(this)P
cb_gramip(self::CBCMlowranksd, P::CBMatrix, start_row::Integer, Lam::Union{<:CBMatrix,Nothing} = nothing)
returns ip(this,QQ^T)=trace Q^T(this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_gramip(self::CBCMlowrankss, P::CBMatrix)
returns ip(this,PP^T)=trace P^T(this)P
cb_gramip(self::CBCMlowrankss, P::CBMatrix, start_row::Integer, Lam::Union{<:CBMatrix,Nothing} = nothing)
returns ip(this,QQ^T)=trace Q^T(this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_gramip(self::CBCMsingleton, P::CBMatrix)
returns ip(this,PP^T)=trace P^T(this)P
cb_gramip(self::CBCMsingleton, P::CBMatrix, start_row::Integer, Lam::Union{<:CBMatrix,Nothing} = nothing)
returns ip(this,QQ^T)=trace Q^T(this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_gramip(self::CBCMsymdense, P::CBMatrix)
returns ip(this,PP^T)=trace P^T(this)P
cb_gramip(self::CBCMsymdense, P::CBMatrix, start_row::Integer, Lam::Union{<:CBMatrix,Nothing} = nothing)
returns ip(this,QQ^T)=trace Q^T(this)Q for Q=P.rows(startrow,startrow+dim-1)
cb_gramip(self::CBCMsymsparse, P::CBMatrix)
returns ip(this,PP^T)=trace P^T(this)P
cb_gramip(self::CBCMsymsparse, P::CBMatrix, start_row::Integer, Lam::Union{<:CBMatrix,Nothing} = nothing)
returns ip(this,QQ^T)=trace Q^T(this)Q for Q=P.rows(startrow,startrow+dim-1)
ConicBundle.cb_groundset_changes_suffice_for_identity!
— Functioncb_groundset_changes_suffice_for_identity!(self::CBAFTModification)
returns true if for an AFT with argtrafo==0 the changes in the ground set reflect all modifications
ConicBundle.cb_guess_curvature
— Functioncb_guess_curvature(self::CBSumBundleHandler, mnrts::CBMinorantBundle, selected_indices::CBIndexmatrix, cand_id::Integer, cand_y::CBMatrix, model_maxviol::Real)
computes an estimate of the current curvature to support SumModel in the selection of submodles
ConicBundle.cb_handles!
— Functioncb_handles!(self::CBSumBundleHandler, ft::CBFunctionTask)
returns true if this FunctionTask is handled
ConicBundle.cb_has_bundle_data
— Functioncb_has_bundle_data(self::CBSumBundle)
returns true if BData exists
ConicBundle.cb_has_bundle_for
— Functioncb_has_bundle_for(self::CBSumBundle, ft::CBFunctionTask)
returns true if BData exists for this mode
ConicBundle.cb_has_contributions
— Functioncb_has_contributions(self::CBSumBundle)
returns true if one of its parts is a child
ConicBundle.cb_has_roots
— Functioncb_has_roots(self::CBSumBundle)
returns true if one of its parts is a root
ConicBundle.cb_has_working_roots
— Functioncb_has_working_roots(self::CBSumBundle)
returns true if one of its parts is a root with n_contributors>0
ConicBundle.cb_hhmmss
— Functioncb_hhmmss(self::CBMicroseconds)
convert and store the value of (*this) to hours, minutes, seconds
ConicBundle.cb_hhmmssdd
— Functioncb_hhmmssdd(self::CBMicroseconds)
convert and store the value of (*this) to hours, minutes, seconds, hundredths
ConicBundle.cb_house
— Functioncb_house(A::CBMatrix, i::Integer, j::Integer, tol::Real)
returns the Householder vector of size A.rowdim() for the subcolumn A(i:A.rowdim(),j)
ConicBundle.cb_ignore_groundset_modification
— Functioncb_ignore_groundset_modification(self::CBAFTModification)
returns true if groundset_modifications should be ignored
ConicBundle.cb_incorporate!
— Functioncb_incorporate!(self::CBAFTModification, m::CBAFTModification)
incorporate the AFTModification @a m into this one; after factor and offset are dealt with it calls Modification::incorporate
cb_incorporate!(self::CBAFTModification, m::CBOracleModification)
incorporate the OracleModification @a m (it should only contain variable changes, but this is not checked!) into this one; calls Modification::incorporate
cb_incorporate!(self::CBGroundsetModification, m::CBOracleModification)
incorporate the OracleModification @a m (it should only contain variable changes, but this is not checked!) into this one; calls Modification::incorporate
cb_incorporate!(self::CBNNCBoxSupportModification, m::CBOracleModification)
incorporate the OracleModification @a m (it should only contain variable changes, but this is not checked!) into this one; calls Modification::incorporate
cb_incorporate!(self::CBPSCAffineModification, m::CBOracleModification)
@brief add the modification specified in @a m on top of the modifications collected so far
If m is in fact an PSCAffineModification, the old_vardim() of modification @a m must be identical to new_vardim() of this and old_rowdim() of modification @a m must be identical to new_rodim() of this. The return value is the number of errors in this respect. If such occured, this incorporation is not performed. A general OracleModification @a m should only contain variable changes (this is not checked) and appending variables appends zero blocks.
cb_incorporate!(self::CBSOCSupportModification, m::CBOracleModification)
incorporate the OracleModification @a m (it should only contain variable changes, but this is not checked!) into this one; calls Modification::incorporate
ConicBundle.cb_init!
— Functioncb_init!(self::CBMatrix, A::CBMatrix, d::Real = 1., atrans::Integer = 0)
initialize to this=Ad where A may be transposed
cb_init!(self::CBMatrix, A::CBIndexmatrix, d::Real = 1.)
initialize to this=Ad
cb_init!(self::CBMatrix, A::CBSparsemat, d::Real = 1.)
initialize to this=Ad
cb_init!(self::CBMatrix, S::CBSymmatrix, d::Real = 1.)
initialize to this=Ad
cb_init!(self::CBMatrix, param0::CBSparsesym, d::Real = 1.)
initialize to this=Ad
cb_init!(self::CBMatrix, param0::AbstractRange{<:Real}, param0_tol::Real = 1e-8)
initialize *this to a column vector holding the elements of Realrange
cb_init!(self::CBMatrix, nr::Integer, nc::Integer, d::Real)
intialize *this to a matrix of size nr x nc initializing all elements to the value d
cb_init!(self::CBMatrix, nr::Integer, nc::Integer, dp::Union{<:AbstractVector{Cdouble},Nothing}, d::Real = 1.)
generate a matrix of size nr x nc initializing the elements from the (one dimensional) array dp with increment incr and scaled by d
cb_init!(self::CBIndexmatrix, A::CBIndexmatrix, d::Integer = 1)
initialize to this=Ad
cb_init!(self::CBIndexmatrix, param0::AbstractRange{<:Integer})
initialize *this to a column vector holding the indices of #CHMatrixClasses::Range
cb_init!(self::CBIndexmatrix, nr::Integer, nc::Integer, d::Integer)
intialize *this to a matrix of size nr x nc initializing all elements to the value d
cb_init!(self::CBIndexmatrix, nr::Integer, nc::Integer, dp::Union{<:AbstractVector{Cint},Nothing})
generate a matrix of size nr x nc initializing the elements from the (one dimensional) array dp with increment incr
cb_init!(self::CBSparsemat, A::CBSparsemat, d::Real = 1.)
initialize to this=Ad
cb_init!(self::CBSparsemat, A::CBMatrix, d::Real = 1.)
initialize to this=Ad, abs(values)<tol are removed from the support
cb_init!(self::CBSparsemat, A::CBIndexmatrix, d::Real = 1.)
initialize to this=Ad, zeros are removed from the support
cb_init!(self::CBSparsemat, param0::CBSymmatrix, d::Real = 1.)
initialize to this=Ad, abs(values)<tol are removed from the support
cb_init!(self::CBSparsemat, param0::CBSparsesym, d::Real = 1.)
initialize to this=Ad
cb_init!(self::CBSparsemat, nr::Integer, nc::Integer)
initialize to zero-matrix of size nr*nc
cb_init!(self::CBSparsemat, nr::Integer, nc::Integer, nz::Integer, ini::Union{<:AbstractVector{Cint},Nothing}, inj::Union{<:AbstractVector{Cint},Nothing}, va::Union{<:AbstractVector{Cdouble},Nothing})
initialize to size nr*nc and nz nonzeros so that this(ini[i],inj[i])=val[i] for i=0,..,nz-1; multiple elements are summed up.
cb_init!(self::CBSparsemat, nr::Integer, nc::Integer, nz::Integer, ini::CBIndexmatrix, inj::CBIndexmatrix, va::CBMatrix)
initialize to size nr*nc and nz nonzeros so that this(ini(i),inj(i))=val(i) for i=0,..,nz-1; multiple elements are summed up.
cb_init!(self::CBSymmatrix, A::CBSymmatrix, d::Real = 1.)
initialize to this=Ad
cb_init!(self::CBSymmatrix, A::CBMatrix, d::Real = 1.)
initialize to this=d(A+transpose(A))/2.
cb_init!(self::CBSymmatrix, A::CBIndexmatrix, d::Real = 1.)
initialize to this=d(A+transpose(A))/2.
cb_init!(self::CBSymmatrix, A::CBSparsesym, d::Real = 1.)
initialize to this=Ad
cb_init!(self::CBSymmatrix, nr::Integer, d::Real)
intialize *this to a matrix of size nr x nr initializing all elements to the value d
cb_init!(self::CBSymmatrix, nr::Integer, dp::Union{<:AbstractVector{Cdouble},Nothing})
generate a matrix of size nr x nc initializing the elements from the (one dimensional) array dp which must have the elements arranged consecutively in internal order
cb_init!(self::CBSparsesym, param0::CBSparsesym, d::Real = 1.)
initialize to this=Ad
cb_init!(self::CBSparsesym, param0::CBMatrix, d::Real = 1.)
initialize to this=d(A+transpose(A))/2., abs(values)<tol are removed from the support
cb_init!(self::CBSparsesym, param0::CBIndexmatrix, d::Real = 1.)
initialize to this=d(A+transpose(A))/2., zeros are removed from the support
cb_init!(self::CBSparsesym, param0::CBSymmatrix, d::Real = 1.)
initialize to this=Ad, abs(values)<tol are removed from the support
cb_init!(self::CBSparsesym, param0::CBSparsemat, d::Real = 1.)
initialize to this=d(A+transpose(A))/2.
cb_init!(self::CBSparsesym, nr::Integer)
initialize to zero-matrix of size nr*nr
cb_init!(self::CBSparsesym, nr::Integer, nz::Integer, ini::Union{<:AbstractVector{Cint},Nothing}, inj::Union{<:AbstractVector{Cint},Nothing}, va::Union{<:AbstractVector{Cdouble},Nothing})
initialize to size nr*nr and nz nonzeros so that this(ini[i],inj[i])=val[i] for i=0,..,nz-1; specify only one of (i,j) and (j,i), multiple elements are summed up.
cb_init!(self::CBSparsesym, nr::Integer, nz::Integer, ini::CBIndexmatrix, inj::CBIndexmatrix, va::CBMatrix)
initialize to size nr*nr and nz nonzeros so that this(ini(i),inj(i))=val[i] for i=0,..,nz-1; specify only one of (i,j) and (j,i), multiple elements are summed up.
cb_init!(self::CBSparseCoeffmatMatrix, block_dim::CBIndexmatrix, col_dim::Integer, block_ind::Union{<:CBIndexmatrix,Nothing} = nothing, col_ind::Union{<:CBIndexmatrix,Nothing} = nothing, coeff_vec::Union{<:CBCoeffmatVector,Nothing} = nothing)
first calls clear() and then it sets the new values (if one of blockind, colind, or coeff_vec is !=NULL, all must be !=NULL and of the same size)
cb_init!(self::CBGB_rand, seed::Integer = 1)
restart generator with seed
cb_init!(self::CBAffineFunctionTransformation, fun_coeff::Real = 1., fun_offset::Real = 0., linear_cost::Union{<:CBMatrix,Nothing} = nothing, arg_offset::Union{<:CBMatrix,Nothing} = nothing, arg_trafo::Union{<:CBSparsemat,Nothing} = nothing, model_calls_delete::Bool = true)
sets the parameters of the transformation. The ownership of objects pointed to is passed to *this (they will be deleted here). If *this is entered into an AFTModel, modelcallsdelete==true tells the AFTModel to delete this AffineFunctionTransformation at the end.
cb_init!(self::CBMinorantPointer, mp::CBMinorantPointer, factor::Real = 1., enforce_copy::Bool = false)
if factor!=1 it generates another MinorantUseData referring to the one of mp, otherwise it simply uses the same one (empty stays empty)
cb_init!(self::CBMinorantPointer, mp::Union{<:CBMinorant,Nothing}, modification_id::Integer = -1, factor::Real = 1.)
if mp==0 it becomes empty, otherwise it creates and then points to a MinorantUseData for holding mp with this modification_id and factor
cb_init!(self::CBPSCBundleParameters, bp::CBBundleParameters)
*@brief initialize to given values
cb_init!(self::CBAFTData, bd::Union{<:CBBundleData,Nothing})
initialize from other BundleData
cb_init!(self::CBBoxData, bd::Union{<:CBBundleData,Nothing})
if @a bd is of type BoxData, initialize to this data
cb_init!(self::CBNNCData, bd::Union{<:CBBundleData,Nothing})
if @a bd is of type NNCData, initialize to this data
cb_init!(self::CBPSCData, bd::Union{<:CBBundleData,Nothing})
if @a bd is of type PSCData, initialize to this data
cb_init!(self::CBSOCData, bd::Union{<:CBBundleData,Nothing})
if @a bd is of type SOCData, initialize to this data
cb_init!(self::CBBundleHKWeight, aggr_dnmormsqr::Real, groundset::Union{<:CBGroundset,Nothing}, model::Union{<:CBBundleModel,Nothing})
compute first weight and set some parameters
cb_init!(self::CBBundleRQBWeight, aggr_dnmormsqr::Real, groundset::Union{<:CBGroundset,Nothing}, model::Union{<:CBBundleModel,Nothing})
compute first weight and set some parameters
cb_init!(self::CBBundleDenseTrustRegionProx, in_H::CBSymmatrix)
set H with the information, whether it is factored
cb_init!(self::CBBundleDLRTrustRegionProx, in_D::CBMatrix, in_vecH::CBMatrix)
reset the prox information; the diagaonal part inD must be a nonnegative column vector, the low rank part invecH must have the same number of rows as in_D
cb_init!(self::CBBundleLowRankTrustRegionProx, in_vecH::CBMatrix, in_lamH::CBMatrix)
reset the prox information; invecH must be an orthogonal matrix with invecH.rowdim() matching the dimension but maybe with zero columns; inlamH must be a column vector with row dimension matching the column dimension of invecH and all entries positive
cb_init!(self::CBQPConeModelBlock, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, nnc_dim::Integer, soc_dim::CBIndexmatrix, psc_dim::CBIndexmatrix, box_lb::CBMatrix, box_ub::CBMatrix, b::Real, ft::CBFunctionTask, oracle_data::Union{<:CBQPModelOracleDataObject,Nothing} = nothing, scale_box::Bool = true)
sets up the model with bundle information and how to combine it, see QPConeModelDataObject::init() for a detailed description
cb_init!(self::CBUQPConeModelBlock, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, nnc_dim::Integer, soc_dim::CBIndexmatrix, sdp_dim::CBIndexmatrix, box_lb::CBMatrix, box_ub::CBMatrix, b::Real, ft::CBFunctionTask, oracle_data::Union{<:CBQPModelOracleDataObject,Nothing} = nothing, scale_box::Bool = true)
sets up the model with bundle information and how to combine it, see QPConeModelDataObject::init() for a detailed description
cb_init!(self::CBSumBundle, sb::CBSumBundle)
initialize
ConicBundle.cb_init_data!
— Functioncb_init_data!(self::CBQPKKTSubspaceHPrecond, Hp::Union{<:CBQPSolverProxObject,Nothing}, model::Union{<:CBQPModelBlockObject,Nothing}, A::Union{<:CBSparsemat,Nothing}, eq_indices::Union{<:CBIndexmatrix,Nothing}, SchurComplAineq::Bool)
returns 1 if this class is not applicable in the current data situation, otherwise it stores the data pointers and these need to stay valid throught the use of the other routines but are not deleted here
ConicBundle.cb_init_diag!
— Functioncb_init_diag!(self::CBMatrix, nr::Integer, d::Real = 1.)
initialize to a diagonal nr x nr matrix with constant diagonal value d
cb_init_diag!(self::CBMatrix, vec::CBMatrix, d::Real = 1.)
initialize to a diagonal matrix with diagonal given by vec
cb_init_diag!(self::CBMatrix, vec::CBIndexmatrix, d::Real = 1.)
initialize to a diagonal matrix with diagonal given by vec
ConicBundle.cb_init_problem!
— Methodcb_init_problem!(self::CBMatrixCBSolver, dim::Integer, lbounds::Union{<:CBMatrix,Nothing} = nothing, ubounds::Union{<:CBMatrix,Nothing} = nothing, startval::Union{<:CBMatrix,Nothing} = nothing, costs::Union{<:CBMatrix,Nothing} = nothing, offset::Real = 0.)
@brief Initializes the problem by setting up the design space (the dimension and possibly box constraints on the variables)
Clears all data structures and sets the dimension @ m for a new problem. for solving min{y in R^m} f0(y) + f1(y) + ... Box constraints may be specified for y. (The functions fi must be added by add_function()).
Lower and/or upper bounds must be speicified for all variables or for none of them. To specify no bounds at all, give Null pointers. Otherwise use ConicBundle::CBminusinfinity for unbounded below and ConicBundle::CBplusinfinity for unbounded above. For NULL pointers, unbounded will be used as default for all variables. Specifying bounds selectively is also possible by setlowerbound() or setupperbound(). For further constraints see append_constraints().
@param[in] dim (int) the dimension of the argument/design space/the number of Lagrange multipliers
@param[in] lbounds (const Matrix*) If NULL, all variables are considered unbounded below, otherwise lbounds[i] gives the minimum feasible value for variable y[i], use ConicBundle::CBminusinfinity for unbounded below.
@param[in] ubounds (const Matrix*) If NULL, all variables are considered unbounded above, otherwise ubounds[i] gives the maximum feasible value for variable y[i], use ConicBundle::CBplusinfinity for unbounded above.
@param[in] startval (const Matrix*) If NULL, the starting values are obtained by projecting zero onto the feasible set given by the lower and upper bounds resulting from the arguments before
@param[in] costs (const Matrix*) Use this in order to specify linear costs on the variables in addition to the functions (may be convenient in Lagrangean relaxation for the right hand side of coupling contsraints); NULL is equivalent to costs zero.
@param[in] offset (Real) Use this in order to specify linear costs on the variables in addition to the functions (may be convenient in Lagrangean relaxation for the right hand side of coupling contsraints); NULL is equivalent to costs zero.
@return - 0 on success - != 0 otherwise
ConicBundle.cb_init_size!
— Functioncb_init_size!(self::CBUQPSolver, maxdim::Integer)
reserve memory for this size
ConicBundle.cb_init_support!
— Functioncb_init_support!(self::CBSparsesym, A::CBSparsesym, d::Real = 0.)
initialize to the same support as A but with constant value d; the same support will be generated even for d=0.
ConicBundle.cb_init_svec!
— Functioncb_init_svec!(self::CBSymmatrix, nr::Integer, dp::Union{<:AbstractVector{Cdouble},Nothing}, d::Real = 1.)
initialize from an svec stored in a real array (or matrix)
ConicBundle.cb_init_system!
— Functioncb_init_system!(self::CBQPKKTSubspaceHPrecond, KKTdiagx::CBMatrix, KKTdiagy::CBMatrix, Hfactor::Real, prec::Real, params::Union{<:CBQPSolverParameters,Nothing})
set up the primal dual KKT system for being solved for predictor and corrector rhs; the input objects KKTdiagx and KKTdiagy will not change during use of the preconditioner, so it suffices to store the address if they are need during application of the preconditioner
ConicBundle.cb_initialization_needed
— Functioncb_initialization_needed(self::CBSumBundleHandler, ft::CBFunctionTask)
returns true if the corresponding part is root with contributions but has bundle_size 0
cb_initialization_needed(self::CBSumBundleHandler)
returns true if one of the parts is root with contributions but has bundle_size 0
ConicBundle.cb_initialize!
— Functioncb_initialize!(self::CBBundleSolver, dim::Integer, bp::Union{<:CBBundleModel,Nothing} = nothing)
calls clear(), initializes an unconstrained groundset to this dimension and sets the bundle model to bp
cb_initialize!(self::CBBundleSolver, gs::Union{<:CBGroundset,Nothing}, bp::Union{<:CBBundleModel,Nothing} = nothing)
calls clear(), initializes the groundset to gs and the bundle model to bp
ConicBundle.cb_inner_line_search!
— Functioncb_inner_line_search!(self::CBUQPConeModelBlock, qp_dx::CBMatrix, qp_dy::CBMatrix, dz::CBMatrix, duz::CBMatrix, box_ds::Real, ds::Real)
perform a line search for the given direction and return a feasible step length
ConicBundle.cb_insert_col!
— Functioncb_insert_col!(self::CBMatrix, i::Integer, v::CBMatrix)
insert a column before column i, 0<=i<= column dimension, for i==column dimension the column is appended at the right; appending to a 0x0 matrix is allowed, returns *this
cb_insert_col!(self::CBIndexmatrix, i::Integer, v::CBIndexmatrix)
insert a column before column i, 0<=i<= column dimension, for i==column dimension the column is appended at the right; appending to a 0x0 matrix is allowed, returns *this
cb_insert_col!(self::CBSparsemat, i::Integer, v::CBSparsemat)
insert a column before column i, 0<=i<= column dimension, for i==column dimension the column is appended at the right; appending to a 0x0 matrix is allowed, returns *this
ConicBundle.cb_insert_row!
— Functioncb_insert_row!(self::CBMatrix, i::Integer, v::CBMatrix)
insert the row vector v before row i, 0<=i<= row dimension, for i==row dimension the row is appended below; appending to a 0x0 matrix is allowed, returns *this
cb_insert_row!(self::CBIndexmatrix, i::Integer, v::CBIndexmatrix)
insert the row vector v before row i, 0<=i<= row dimension, for i==row dimension the row is appended below; appending to a 0x0 matrix is allowed, returns *this
cb_insert_row!(self::CBSparsemat, i::Integer, v::CBSparsemat)
insert the row vector v before row i, 0<=i<= row dimension, for i==row dimension the row is appended below; appending to a 0x0 matrix is allowed, returns *this
ConicBundle.cb_install_external_aggregate!
— Functioncb_install_external_aggregate!(self::CBSumBundleHandler, ft::CBFunctionTask, aggr::CBMinorantPointer, aggr_coeff::Real)
@brief replace the aggregate by one from outside
This is only possible, if the handler handles a bundle for this and the bundle is not active. The main purpose is to switch from an external model to a newly contributing sumbundle that has been updated all along but not been in use. Installing the external aggregate then ensures convergence. If primal is not zero, it must already have one nonzero entry per column of existing minorants and all future calls via set_cand_minorant() also have to provide exactly one primal for each update.
ConicBundle.cb_inv
— Functioncb_inv(A::CBMatrix)
returns a matrix with elements (i,j)=1./((*this)(i,j)) for all i,j; ATTENTION: no check for division by zero
ConicBundle.cb_inv!
— Functioncb_inv!(self::CBMatrix)
sets (this)(i,j)=1./(this)(i,j) for all i,j and returns *this
ConicBundle.cb_ip
— Functioncb_ip(A::CBMatrix, B::CBMatrix)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBIndexmatrix, B::CBIndexmatrix)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBSparsemat, B::CBSparsemat)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBSparsemat, B::CBMatrix)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBMatrix, B::CBSparsemat)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBSymmatrix, B::CBSymmatrix)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBMatrix, B::CBSymmatrix)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBSymmatrix, B::CBMatrix)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBSymmatrix, B::CBSparsesym)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBSparsesym, B::CBSymmatrix)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBSparsesym, B::CBSparsesym)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBMatrix, B::CBSparsesym)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(A::CBSparsesym, B::CBMatrix)
returns the usual inner product of A and B, i.e., the sum of A(i,j)*B(i,j) over all i,j
cb_ip(self::CBCMgramdense, S::CBSymmatrix)
returns ip(this,S)=trace(this*S), the trace inner product
cb_ip(self::CBCMgramdense, S::CBSparsesym)
returns the inner product of the constraint matrix with S
cb_ip(self::CBCMgramsparse, S::CBSymmatrix)
returns ip(this,S)=trace(this*S), the trace inner product
cb_ip(self::CBCMgramsparse, S::CBSparsesym)
returns the inner product of the constraint matrix with S
cb_ip(self::CBCMgramsparse_withoutdiag, S::CBSymmatrix)
returns ip(this,S)=trace(this*S), the trace inner product
cb_ip(self::CBCMgramsparse_withoutdiag, S::CBSparsesym)
returns the inner product of the constraint matrix with S
cb_ip(self::CBCMlowrankdd, S::CBSymmatrix)
returns ip(this,S)=trace(this*S), the trace inner product
cb_ip(self::CBCMlowrankdd, S::CBSparsesym)
returns the inner product of the constraint matrix with S
cb_ip(self::CBCMlowranksd, S::CBSymmatrix)
returns ip(this,S)=trace(this*S), the trace inner product
cb_ip(self::CBCMlowranksd, S::CBSparsesym)
returns the inner product of the constraint matrix with S
cb_ip(self::CBCMlowrankss, S::CBSymmatrix)
returns ip(this,S)=trace(this*S), the trace inner product
cb_ip(self::CBCMlowrankss, S::CBSparsesym)
returns the inner product of the constraint matrix with S
cb_ip(self::CBCMsingleton, S::CBSymmatrix)
returns ip(this,S)=trace(this*S), the trace inner product
cb_ip(self::CBCMsingleton, S::CBSparsesym)
returns the inner product of the constraint matrix with S
cb_ip(self::CBCMsymdense, S::CBSymmatrix)
returns ip(this,S)=trace(this*S), the trace inner product
cb_ip(self::CBCMsymdense, S::CBSparsesym)
returns the inner product of the constraint matrix with S
cb_ip(self::CBCMsymsparse, S::CBSymmatrix)
returns ip(this,S)=trace(this*S), the trace inner product
cb_ip(self::CBCMsymsparse, S::CBSparsesym)
returns the inner product of the constraint matrix with S
cb_ip(self::CBMinorantPointer, mp::CBMinorantPointer, skip_fixed::Union{<:CBIndexmatrix,Nothing} = nothing, ipdiag::Union{<:CBMatrix,Nothing} = nothing)
@brief computes the inner product of the two minorants; if skipfixed!=NULL the corrsponding indices are not considered, if ipdiag!=0 the inner product is taken with respect to this diagonal matrix, i.e. sumi mp(i)(this)(i)(*ipdiag)(i)
cb_ip(self::CBMinorantPointer, m::CBMatrix, ipdiag::Union{<:CBMatrix,Nothing} = nothing, startindex_m::Integer = 0)
@brief computes the inner product with m; if ipdiag!=0 the inner product is taken with respect to this diagonal matrix, i.e. sumi mp(startindexm+i)(this)(i)(*ipdiag)(i)
ConicBundle.cb_ip_min_max
— Functioncb_ip_min_max(A::CBMatrix, B::CBMatrix)
returns in addition to the usual inner product of A and B the minimum and maximum value of A(i,j)*B(i,j) over all (i,j)
ConicBundle.cb_is_DLR
— Functioncb_is_DLR(self::CBBundleDenseTrustRegionProx)
return true if H is of the form diagonal matrix plus Gram matrix of a low rank matrix
cb_is_DLR(self::CBBundleDiagonalTrustRegionProx)
return true if H is of the form diagonal matrix plus Gram matrix of a low rank matrix
cb_is_DLR(self::CBBundleDLRTrustRegionProx)
return true if H is of the form diagonal matrix plus Gram matrix of a low rank matrix
cb_is_DLR(self::CBBundleIdProx)
return true if H is of the form diagonal matrix plus Gram matrix of a low rank matrix
cb_is_DLR(self::CBBundleLowRankTrustRegionProx)
return true if H is of the form diagonal matrix plus Gram matrix of a low rank matrix
ConicBundle.cb_is_feasible!
— Functioncb_is_feasible!(self::CBLPGroundset, y::CBMatrix, relprec::Real = 1e-10)
returns true if still feasible, see Groundset::is_feasible()
cb_is_feasible!(self::CBUnconstrainedGroundset, y::CBMatrix, relprec::Real = 1e-10)
@brief on input value ingroundsetid the input y was feasible. Return true if the id did not change, otherwise check if y is still feasible for the given precision.
The routine is called by the internal bundle solver to check whether the given center is still valid (in some applications the groundset might change during the runtime of the bundle method), where validity of y was already checked at a point in time when the groundset had the ingroundsetid. If the groundset_id is still the same, then y is simply assumed to be still correct (the precision is not even looked at in this case). Otherwise the routine checks the validitiy of y with respect to the given precision but does not enforce validity. It returns true if y is valid and false otherwise.
ConicBundle.cb_lb_function!
— Functioncb_lb_function!(self::CBAFTModel, y_id::Integer, y::CBMatrix)
see SumBlockModel::lb_function
cb_lb_function!(self::CBBoxModel, y_id::Integer, y::CBMatrix)
see SumBlockModel::lb_function
cb_lb_function!(self::CBNNCModel, y_id::Integer, y::CBMatrix)
see SumBlockModel::lb_function
cb_lb_function!(self::CBPSCModel, y_id::Integer, y::CBMatrix)
see SumBlockModel::lb_function
cb_lb_function!(self::CBSOCModel, y_id::Integer, y::CBMatrix)
see SumBlockModel::lb_function
cb_lb_function!(self::CBSumModel, y_id::Integer, y::CBMatrix)
see SumBlockModel::lb_function()
ConicBundle.cb_lb_model
— Functioncb_lb_model(self::CBSumBundleHandler, yid::Integer, y::CBMatrix)
returns a quick lower bound for the model value
ConicBundle.cb_left_genmult
— Functioncb_left_genmult(self::CBMinorantPointer, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., thistrans::Integer = 0, btrans::Integer = 0, thisindex::Integer = 0)
computes and returns C=alpha(this)B+betaC where B and *this may be transposed and *this is considered to be a column with thisindex in a bigger matrix
ConicBundle.cb_left_right_prod
— Functioncb_left_right_prod(self::CBCMgramdense, P::CBMatrix, Q::CBMatrix, R::CBMatrix)
computes R=P^T(this)*Q
cb_left_right_prod(self::CBCMgramsparse, P::CBMatrix, Q::CBMatrix, R::CBMatrix)
computes R=P^T(this)*Q
cb_left_right_prod(self::CBCMgramsparse_withoutdiag, P::CBMatrix, Q::CBMatrix, R::CBMatrix)
computes R=P^T(this)*Q
cb_left_right_prod(self::CBCMlowrankdd, P::CBMatrix, Q::CBMatrix, R::CBMatrix)
computes R=P^T(this)*Q
cb_left_right_prod(self::CBCMlowranksd, P::CBMatrix, Q::CBMatrix, R::CBMatrix)
computes R=P^T(this)*Q
cb_left_right_prod(self::CBCMlowrankss, P::CBMatrix, Q::CBMatrix, R::CBMatrix)
computes R=P^T(this)*Q
cb_left_right_prod(self::CBCMsingleton, P::CBMatrix, Q::CBMatrix, R::CBMatrix)
computes R=P^T(this)*Q
cb_left_right_prod(self::CBCMsymdense, P::CBMatrix, Q::CBMatrix, R::CBMatrix)
computes R=P^T(this)*Q
cb_left_right_prod(self::CBCMsymsparse, P::CBMatrix, Q::CBMatrix, R::CBMatrix)
computes R=P^T(this)*Q
ConicBundle.cb_left_right_product!
— Functioncb_left_right_product!(self::CBPSCAffineFunction, i::Integer, E::CBMatrix, F::CBMatrix, G::CBMatrix)
see PSCOracle::leftrightproduct()
ConicBundle.cb_line_search!
— Functioncb_line_search!(self::CBUQPConeModelBlock, qp_dx::CBMatrix, qp_dy::CBMatrix, rhs_residual::CBMatrix)
@brief perform a line search for the block variables
dx,dy give the final step direction, alpha is on input an upper bound on the step size. On output alpha has to be no larger than on input and has to guarantee strict feasibility of the primal/dual step on the local variables. The block has to compute the step direction dz as well as for additional internal variables now and to choose alpha so that strict feasibility is guaranteed for the internal variables as well
cb_line_search!(self::CBUQPSumModelBlock, qp_dx::CBMatrix, qp_dy::CBMatrix, rhs_residual::CBMatrix)
get/do this from/for all subblocks
ConicBundle.cb_linesearch
— Functioncb_linesearch(self::CBQPConeModelBlock)
if necessary, reduce alpha to the biggest value so that feasibility is maintained with this step size
cb_linesearch(self::CBQPSumModelBlock)
if necessary, reduce alpha to the biggest value so that feasibility is maintained with this step size
ConicBundle.cb_localsys_mult!
— Functioncb_localsys_mult!(self::CBQPConeModelBlock, in_vec::CBMatrix, out_vec::CBMatrix, startindex_model::Integer, startindex_constraints::Integer)
- @brief multiply the local system diagonal block consisting of the model and local contraints rows and columns by invec[startindexmodel+0,...,+dimmodel(),startindexconstraints+0,...,+dimconstraints] into the same coordinates of outvec.
cb_localsys_mult!(self::CBQPSumModelBlock, in_vec::CBMatrix, out_vec::CBMatrix, startindex_model::Integer, startindex_constraints::Integer)
- @brief multiply the local system diagonal block consisting of the model and local contraints rows and columns by invec[startindexmodel+0,...,+dimmodel(),startindexconstraints+0,...,+dimconstraints] into the same coordinates of outvec.
ConicBundle.cb_ls!
— Functioncb_ls!(self::CBMatrix, rhs::CBMatrix, tol::Real)
computes a least squares solution by #QRsolve, overwriting (*this). rhs is overwritten with the solution. In fact, the full code is return this->QRsolve(rhs,tol);
ConicBundle.cb_make_model_aggregate!
— Functioncb_make_model_aggregate!(self::CBAFTModel, penalty_parameter_increased::Bool, keep_penalty_fixed::Bool)
see SumBlockModel::makemodelaggregate
cb_make_model_aggregate!(self::CBSumModel, penalty_parameter_increased::Bool, keep_penalty_fixed::Bool)
see SumBlockModel::makemodelaggregate
cb_make_model_aggregate!(self::CBSumBundleHandler, increased::Bool, fixed::Bool)
see SumBlockModel::makemodelaggregate
ConicBundle.cb_make_symmatrix
— Functioncb_make_symmatrix(self::CBCMgramdense, S::CBSymmatrix)
returns a dense symmetric constraint matrix
cb_make_symmatrix(self::CBCMgramsparse, S::CBSymmatrix)
returns a dense symmetric constraint matrix
cb_make_symmatrix(self::CBCMgramsparse_withoutdiag, S::CBSymmatrix)
returns a dense symmetric constraint matrix
cb_make_symmatrix(self::CBCMlowrankdd, S::CBSymmatrix)
returns a dense symmetric constraint matrix
cb_make_symmatrix(self::CBCMlowranksd, S::CBSymmatrix)
returns a dense symmetric constraint matrix
cb_make_symmatrix(self::CBCMlowrankss, S::CBSymmatrix)
returns a dense symmetric constraint matrix
cb_make_symmatrix(self::CBCMsingleton, S::CBSymmatrix)
returns a dense symmetric constraint matrix (useful for testing)
cb_make_symmatrix(self::CBCMsymdense, S::CBSymmatrix)
returns a dense symmetric constraint matrix
cb_make_symmatrix(self::CBCMsymsparse, S::CBSymmatrix)
returns a dense symmetric constraint matrix
ConicBundle.cb_map_to_old_blocks
— Functioncb_map_to_old_blocks(self::CBPSCAffineModification)
returns null if there are index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th row (injective!), index values exceeding old_rowdim() refer to newly appended rows
ConicBundle.cb_map_to_old_rows
— Functioncb_map_to_old_rows(self::CBAFTModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th row (injective!), index values exceeding old_rowdim() refer to newly appended rows
ConicBundle.cb_map_to_old_variables
— Functioncb_map_to_old_variables(self::CBAFTModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th variable (injective!), index values exceeding old_vardim() refer to newly appended variables
cb_map_to_old_variables(self::CBGroundsetModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th variable (injective!), index values exceeding old_vardim() refer to newly appended variables
cb_map_to_old_variables(self::CBNNCBoxSupportModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th variable (injective!), index values exceeding old_vardim() refer to newly appended variables
cb_map_to_old_variables(self::CBPSCAffineModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th variable (injective!), index values exceeding old_vardim() refer to newly appended variables
cb_map_to_old_variables(self::CBSOCSupportModification)
returns null if there are no index changes, otherwise the Indexmatrix pointed to is a vector whose i-th entry holds the old index of the new i-th variable (injective!), index values exceeding old_vardim() refer to newly appended variables
ConicBundle.cb_mapped_variables_are_equal
— Functioncb_mapped_variables_are_equal(self::CBAFTModification, newpoint::CBMatrix, oldpoint::CBMatrix)
returns true if the values in newpoint (must be a vector of length newvardim()) that correspond to old variables match the old values stored in oldpoint (must be a vector of length oldvardim()) and false otherwise
cb_mapped_variables_are_equal(self::CBGroundsetModification, newpoint::CBMatrix, oldpoint::CBMatrix)
returns true if the values in newpoint (must be a vector of length newvardim()) that correspond to old variables match the old values stored in oldpoint (must be a vector of length oldvardim()) and false otherwise
cb_mapped_variables_are_equal(self::CBNNCBoxSupportModification, newpoint::CBMatrix, oldpoint::CBMatrix)
returns true if the values in newpoint (must be a vector of length newvardim()) that correspond to old variables match the old values stored in oldpoint (must be a vector of length oldvardim()) and false otherwise
cb_mapped_variables_are_equal(self::CBPSCAffineModification, newpoint::CBMatrix, oldpoint::CBMatrix)
returns true if the values in newpoint (must be a vector of length newvardim()) that correspond to old variables match the old values stored in oldpoint (must be a vector of length oldvardim()) and false otherwise
cb_mapped_variables_are_equal(self::CBSOCSupportModification, newpoint::CBMatrix, oldpoint::CBMatrix)
returns true if the values in newpoint (must be a vector of length newvardim()) that correspond to old variables match the old values stored in oldpoint (must be a vector of length oldvardim()) and false otherwise
ConicBundle.cb_max
— Functioncb_max(A::CBMatrix, iindex::Union{<:AbstractVector{Cint},Nothing}, jindex::Union{<:AbstractVector{Cint},Nothing})
returns the maximum value over all elements of the matrix
cb_max(A::CBIndexmatrix, iindex::Union{<:AbstractVector{Cint},Nothing}, jindex::Union{<:AbstractVector{Cint},Nothing})
returns the maximum value over all elements of the matrix
cb_max(A::CBSymmatrix)
returns the maximum value over all elements of the matrix
ConicBundle.cb_maxcols
— Functioncb_maxcols(A::CBMatrix)
returns a column vector holding in each row the maximum over all columns in this row
cb_maxcols(A::CBIndexmatrix)
returns a column vector holding in each row the maximum over all columns in this row
cb_maxcols(A::CBSymmatrix)
returns a column vector holding in each row the maximum over all columns in this row
ConicBundle.cb_maxrows
— Functioncb_maxrows(A::CBMatrix)
returns a row vector holding in each column the maximum over all rows in this column
cb_maxrows(A::CBIndexmatrix)
returns a row vector holding in each column the maximum over all rows in this column
cb_maxrows(A::CBSymmatrix)
returns a row vector holding in each column the maximum over all rows in this column
ConicBundle.cb_mfile_data
— Functioncb_mfile_data(self::CBBundleDenseTrustRegionProx)
output the description of the scaling in mfile-suitable format
cb_mfile_data(self::CBBundleDiagonalTrustRegionProx)
output the description of the scaling in mfile-suitable format
cb_mfile_data(self::CBBundleDLRTrustRegionProx)
output the description of the scaling in mfile-suitable format
cb_mfile_data(self::CBBundleIdProx)
output the description of the prox term in mfile-suitable format
cb_mfile_data(self::CBBundleLowRankTrustRegionProx)
output the description of the prox term in mfile-suitable format
cb_mfile_data(self::CBQPSolver)
output the data describing the QP in m-file style
cb_mfile_data(self::CBLPGroundset)
m-file output routine for debugging or testing in Matlab (not yet working)
cb_mfile_data(self::CBUnconstrainedGroundset)
m-file output routine for debugging or testing in Matlab (not yet working)
ConicBundle.cb_mfile_output
— Functioncb_mfile_output(self::CBMatrix, precision::Integer = 16, width::Integer = 0)
- @brief outputs a matrix A in the format "[ A(0,1) ... A(0,nc-1)\n ... A(nr-1,nc-1)];\n" so that it can be read e.g. by octave as an m-file
cb_mfile_output(self::CBIndexmatrix, precision::Integer = 16, width::Integer = 0)
- @brief outputs a matrix A in the format "[ A(0,1) ... A(0,nc-1)\n ... A(nr-1,nc-1)];\n" so that it can be read e.g. by octave as an m-file
cb_mfile_output(self::CBSymmatrix, precision::Integer = 16, width::Integer = 0)
- @brief outputs a matrix A in the format "[ A(0,1) ... A(0,nc-1)\n ... A(nr-1,nc-1)];\n" so that it can be read e.g. by octave as an m-file
ConicBundle.cb_min
— Functioncb_min(A::CBMatrix, iindex::Union{<:AbstractVector{Cint},Nothing}, jindex::Union{<:AbstractVector{Cint},Nothing})
returns the minimum value over all elements of the matrix
cb_min(A::CBIndexmatrix, iindex::Union{<:AbstractVector{Cint},Nothing}, jindex::Union{<:AbstractVector{Cint},Nothing})
returns the minimum value over all elements of the matrix
cb_min(A::CBSymmatrix)
returns the minimum value over all elements of the matrix
ConicBundle.cb_mincols
— Functioncb_mincols(A::CBMatrix)
returns a column vector holding in each row the minimum over all columns in this row
cb_mincols(A::CBIndexmatrix)
returns a column vector holding in each row the minimum over all columns in this row
cb_mincols(A::CBSymmatrix)
returns a column vector holding in each row the minimum over all columns in this row
ConicBundle.cb_minrows
— Functioncb_minrows(A::CBMatrix)
returns a row vector holding in each column the minimum over all rows in this column
cb_minrows(A::CBIndexmatrix)
returns a row vector holding in each column the minimum over all rows in this column
cb_minrows(A::CBSymmatrix)
returns a row vector holding in each column the minimum over all rows in this column
ConicBundle.cb_model
— Functioncb_model(self::CBSumModel, fo::Union{<:CBFunctionObject,Nothing})
returns the submodel for FunctionObject fo if it in this model, otherwise 0
ConicBundle.cb_model_aggregate_modified!
— Functioncb_model_aggregate_modified!(self::CBAFTData, last_aggr_id::Integer)
check whether aggregate is available and has the same id
cb_model_aggregate_modified!(self::CBAFTModel, old_model_aggregate_id::Integer)
see BundleModel::modelaggregatemodified
cb_model_aggregate_modified!(self::CBSumModel, old_model_aggregate_id::Integer)
see BundleModel::modelaggregatemodified
ConicBundle.cb_modified_transform_argument
— Functioncb_modified_transform_argument(self::CBAffineFunctionTransformation, transformed_y::CBMatrix, input_y::CBMatrix, aftmdf::Union{<:CBAFTModification,Nothing}, gsmdf::CBGroundsetModification)
@brief given the modification aftmdf or if 0, gsmdf, compute the transformed argument that would arise after this modification as in transform_argument()
On input @a transformedy is supposed to be of dimension zero. The matrix returned is transformedy unless the modification preserves the identity transformation. In this case, the returned matrix is input_y.
ConicBundle.cb_multiply!
— Functioncb_multiply!(self::CBCMgramdense, d::Real)
multiply constraint permanentely by d; this is to allow scaling or sign changes in the constraints
cb_multiply!(self::CBCMgramsparse, d::Real)
multiply constraint permanentely by d; this is to allow scaling or sign changes in the constraints
cb_multiply!(self::CBCMgramsparse_withoutdiag, d::Real)
multiply constraint permanentely by d; this is to allow scaling or sign changes in the constraints
cb_multiply!(self::CBCMlowrankdd, d::Real)
multiply constraint permanentely by d; this is to allow scaling or sign changes in the constraints
cb_multiply!(self::CBCMlowranksd, d::Real)
multiply constraint permanentely by d; this is to allow scaling or sign changes in the constraints
cb_multiply!(self::CBCMlowrankss, d::Real)
multiply constraint permanentely by d; this is to allow scaling or sign changes in the constraints
cb_multiply!(self::CBCMsingleton, d::Real)
multiply constraint permanentely by d; this is to allow scaling or sign changes in the constraints
cb_multiply!(self::CBCMsymdense, d::Real)
multiply constraint permanentely by d; this is to allow scaling or sign changes in the constraints
cb_multiply!(self::CBCMsymsparse, d::Real)
multiply constraint permanentely by d; this is to allow scaling or sign changes in the constraints
cb_multiply!(self::CBCoeffmatInfo, sf::Real)
scales the scale factor
ConicBundle.cb_new_block_indices
— Functioncb_new_block_indices(self::CBPSCAffineModification)
returns null if no rows were added, otherwise the Indexmatrix pointed ato is a vector holding the new indices of the new rows in increasing order
ConicBundle.cb_new_blockdim
— Functioncb_new_blockdim(self::CBPSCAffineModification)
returns the number of rows once all stored modifications have been performed
ConicBundle.cb_new_initial_oraclemodification
— Functioncb_new_initial_oraclemodification(self::CBAFTModification, old_var_dim::Integer)
returns a new object on the heap, that allows to incorporate this but starts off from a function whose input argument dimension is oldvardim
cb_new_initial_oraclemodification(self::CBGroundsetModification, old_var_dim::Integer)
returns a new object on the heap, that allows to incorporate this but starts off from a function whose input argument dimension is oldvardim
cb_new_initial_oraclemodification(self::CBNNCBoxSupportModification, old_var_dim::Integer)
returns a new object on the heap, that allows to incorporate this but starts off from a function whose input argument dimension is oldvardim
cb_new_initial_oraclemodification(self::CBPSCAffineModification, old_var_dim::Integer)
returns a new object on the heap, that allows to incorporate this but starts off from a function whose input argument dimension is oldvardim
cb_new_initial_oraclemodification(self::CBSOCSupportModification, old_var_dim::Integer)
returns a new object on the heap, that allows to incorporate this but starts off from a function whose input argument dimension is oldvardim
ConicBundle.cb_new_row_indices
— Functioncb_new_row_indices(self::CBAFTModification)
returns null if no variables were added, otherwise the Indexmatrix pointed to is a vector holding the new indices of the new rows in increasing order
ConicBundle.cb_new_rowdim
— Functioncb_new_rowdim(self::CBAFTModification)
returns the number of rows once all stored modifications have been performed
ConicBundle.cb_new_var_indices
— Functioncb_new_var_indices(self::CBAFTModification)
returns null if no variables were added, otherwise the Indexmatrix pointed to is a vector holding the new indices of the new variables in increasing order
cb_new_var_indices(self::CBGroundsetModification)
returns null if no variables were added, otherwise the Indexmatrix pointed ato is a vector holding the new indices of the new variables in increasing order
cb_new_var_indices(self::CBNNCBoxSupportModification)
returns null if no variables were added, otherwise the Indexmatrix pointed ato is a vector holding the new indices of the new variables in increasing order
cb_new_var_indices(self::CBPSCAffineModification)
returns null if no variables were added, otherwise the Indexmatrix pointed to is a vector holding the new indices of the new variables in increasing order
cb_new_var_indices(self::CBSOCSupportModification)
returns null if no variables were added, otherwise the Indexmatrix pointed ato is a vector holding the new indices of the new variables in increasing order
ConicBundle.cb_new_vardim
— Functioncb_new_vardim(self::CBAFTModification)
returns the number of variables once all stored modifications have been performed
cb_new_vardim(self::CBGroundsetModification)
returns the number of variables once all stored modifications have been performed
cb_new_vardim(self::CBNNCBoxSupportModification)
returns the number of variables once all stored modifications have been performed
cb_new_vardim(self::CBPSCAffineModification)
returns the number of variables once all stored modifications have been performed
cb_new_vardim(self::CBSOCSupportModification)
returns the number of variables once all stored modifications have been performed
ConicBundle.cb_new_variables_are_zero
— Functioncb_new_variables_are_zero(self::CBAFTModification, newpoint::CBMatrix)
returns true if all entries in newpoint (must be a vector of length new_vardim()) that correspond to new variables have value 0 and false otherwise
cb_new_variables_are_zero(self::CBGroundsetModification, newpoint::CBMatrix)
returns true if all entries in newpoint (must be a vector of length new_vardim()) that correspond to new variables have value 0 and false otherwise
cb_new_variables_are_zero(self::CBNNCBoxSupportModification, newpoint::CBMatrix)
returns true if all entries in newpoint (must be a vector of length new_vardim()) that correspond to new variables have value 0 and false otherwise
cb_new_variables_are_zero(self::CBPSCAffineModification, newpoint::CBMatrix, newmat::CBSparseCoeffmatMatrix)
returns true if for all indices of new variables the entries in newpoint (must be a vector of length new_vardim()) or the matrices in newmat are 0 and false otherwise
cb_new_variables_are_zero(self::CBSOCSupportModification, newpoint::CBMatrix)
returns true if all entries in newpoint (must be a vector of length new_vardim()) that correspond to new variables have value 0 and false otherwise
ConicBundle.cb_newsize!
— Functioncb_newsize!(self::CBMatrix, nr::Integer, nc::Integer)
@brief resize the matrix to nr x nc elements but WITHOUT initializing the memory
If initializing the memory externally and CONICBUNDLE_DEBUG is defined, please use set_init() via matrix.set_init(true) in order to avoid warnings concerning improper initialization
cb_newsize!(self::CBIndexmatrix, nr::Integer, nc::Integer)
@brief resize the matrix to nr x nc elements but WITHOUT initializing the memory
If initializing the memory externally and CONICBUNDLE_DEBUG is defined, please use set_init() via matrix.set_init(true) in order to avoid warnings concerning improper initialization
cb_newsize!(self::CBSymmatrix, n::Integer)
@brief resize the matrix to nr x nr elements but WITHOUT initializing the memory
If initializing the memory externally and CONICBUNDLE_DEBUG is defined, please use set_init() via matrix.set_init(true) in order to avoid warnings concerning improper initialization
ConicBundle.cb_next!
— Functioncb_next!(self::CBGB_rand)
returns a random double number "uniformly distributed" in (0,1)
ConicBundle.cb_nnls
— Functioncb_nnls(self::CBMatrix, rhs::CBMatrix, dual::Union{<:CBMatrix,Nothing} = nothing, tol::Real = 1e-10)
@brief computes a nonnegative least squares solution; rhs is overwritten by the solution; if dual!=0, the dual variables are stored there; returns 0 on success, 1 on failure
Computes the least squares solution of min ||Ax-b|| s.t. x >=0;\n The KKT system A'*A*x - A'*b - l = 0; x >=0, l>=0, x'*l=0 is solved solved by interior point method with QR-solution of the extended system. The current implementation is based on [P. Matsoms, "Sparse Linear Least Squares Problems in Optimization", Comput. Opt. and Appl., 7, 89-110 (1997)] but is only a quick and rather sloppy implementation of it ...
ConicBundle.cb_no_additions_or_deletions_in_rows
— Functioncb_no_additions_or_deletions_in_rows(self::CBAFTModification)
returns true if no rows were added or deleted (allows permutations), false otherwise
ConicBundle.cb_no_additions_or_deletions_in_vars
— Functioncb_no_additions_or_deletions_in_vars(self::CBAFTModification)
returns true if no columns/variables were added or deleted (allows permutations), false otherwise
cb_no_additions_or_deletions_in_vars(self::CBGroundsetModification)
returns true if no variables were added or deleted (allows permutations), false otherwise
cb_no_additions_or_deletions_in_vars(self::CBNNCBoxSupportModification)
returns true if no variables were added or deleted (allows permutations), false otherwise
cb_no_additions_or_deletions_in_vars(self::CBSOCSupportModification)
returns true if no variables were added or deleted (allows permutations), false otherwise
ConicBundle.cb_no_modification
— Functioncb_no_modification(self::CBAFTModification)
returns true if no modifications need to be executed
cb_no_modification(self::CBGroundsetModification)
returns true if no modifications need to be executed except possibly an offset change for the ground set minorant
cb_no_modification(self::CBNNCBoxSupportModification)
returns true if no modifications need to be executed except possibly an offset change for the ground set minorant
cb_no_modification(self::CBPSCAffineModification)
returns true if no modifications need to be executed
cb_no_modification(self::CBSOCSupportModification)
returns true if no modifications need to be executed except possibly an offset change for the ground set minorant
ConicBundle.cb_nonzeros
— Functioncb_nonzeros(self::CBSparsemat)
returns the number of nonzeros
cb_nonzeros(self::CBSparsesym)
returns the number of nonzeros in the lower triangle (including diagonal)
cb_nonzeros(self::CBMinorantPointer)
returns the number of nonzero coefficients
ConicBundle.cb_nonzeros!
— Functioncb_nonzeros!(self::CBMinorant)
returns the number of nonzero coefficients
ConicBundle.cb_norm
— Functioncb_norm(self::CBCMgramdense)
returns the Frobenius norm of the matrix
cb_norm(self::CBCMgramsparse)
returns the Frobenius norm of the matrix
cb_norm(self::CBCMgramsparse_withoutdiag)
returns the Frobenius norm of the matrix
cb_norm(self::CBCMlowrankdd)
returns the Frobenius norm of the matrix
cb_norm(self::CBCMlowranksd)
returns the Frobenius norm of the matrix
cb_norm(self::CBCMlowrankss)
returns the Frobenius norm of the matrix
cb_norm(self::CBCMsingleton)
returns the Frobenius norm of the matrix
cb_norm(self::CBCMsymdense)
returns the Frobenius norm of the matrix
cb_norm(self::CBCMsymsparse)
returns the Frobenius norm of the matrix
ConicBundle.cb_norm2
— Functioncb_norm2(A::CBMatrix)
returns the Frobenius norm of A, i.e., the square root of the sum of A(i,j)*A(i,j) over all i,j
cb_norm2(A::CBIndexmatrix)
returns the Frobenius norm of A, i.e., the square root of the sum of A(i,j)*A(i,j) over all i,j
cb_norm2(A::CBSparsemat)
returns the Frobenius norm of A, i.e., the square root of the sum of A(i,j)*A(i,j) over all i,j
cb_norm2(A::CBSymmatrix)
returns the Frobenius norm of A, i.e., the square root of the sum of A(i,j)*A(i,j) over all i,j
cb_norm2(A::CBSparsesym)
returns the Frobenius norm of A, i.e., the square root of the sum of A(i,j)*A(i,j) over all i,j
ConicBundle.cb_normDsquared
— Functioncb_normDsquared(A::CBMatrix, d::CBMatrix, atrans::Integer, dinv::Integer)
returns trace(A^TDA)=\|A\|^2_D with D=Diag(d). A may be transposed, D may be inverted but there is no check for division by zero
ConicBundle.cb_norm_sqr
— Functioncb_norm_sqr(self::CBBundleDenseTrustRegionProx, B::CBMatrix)
returns $\|B\|^2_H$ (with weightu included in H)
cb_norm_sqr(self::CBBundleDiagonalTrustRegionProx, B::CBMatrix)
returns \f$\|B\|^2_H\f$
cb_norm_sqr(self::CBBundleDLRTrustRegionProx, B::CBMatrix)
returns $\|B\|^2_H$ (with weight included)
cb_norm_sqr(self::CBBundleIdProx, B::CBMatrix)
returns \f$\|B\|^2_H\f$
cb_norm_sqr(self::CBBundleLowRankTrustRegionProx, B::CBMatrix)
returns $\|B\|^2_H$ (with weight included)
ConicBundle.cb_norm_squared
— Functioncb_norm_squared(self::CBMinorantPointer, D::Union{<:CBMatrix,Nothing} = nothing)
Compute the norm squared of this for the given diagonal matrix D (identity if not given), i.e. \f$\|(*this)\|^2_{D}\f$
cb_norm_squared(self::CBMinorant)
return the squared Euclidean norm
ConicBundle.cb_normalize_sumbundle!
— Functioncb_normalize_sumbundle!(self::CBSumBundleHandler)
brief bring the bundle into a normal form so that contributions may be added and subtracted consistently
The normal form has the aggregate w.r.t. to the last bundle cofficients stored in column aggr->index in scaled form so that in coeff all weight is set to it. No other columns are modified.
When addcontributions is called, it is assumed that parent bundle and contributing bundle are in this form. Some care has to be taken that this normalization is happening for parent and children in coordinated form so that removecontribution() does not cause havoc. For this, the sumbundle should always be normalized in (or right before) calling SumBlockModel::sumbundle_contribution() before starting any interaction with the parent or the children.
ConicBundle.cb_nsubmodels
— Functioncb_nsubmodels(self::CBSumModel)
returns the number of submodels in this model
ConicBundle.cb_nullstep_update!
— Functioncb_nullstep_update!(self::CBBundleHKWeight, newval::Real, oldval::Real, modelval::Real, y::CBMatrix, newy::CBMatrix, new_minorant::CBMinorantPointer, aggregate::CBMinorantPointer, nullstep_bound::Real, normsubg2::Real, Hp::Union{<:CBBundleProxObject,Nothing})
determine next weight after a null step
cb_nullstep_update!(self::CBBundleRQBWeight, newval::Real, oldval::Real, modelval::Real, y::CBMatrix, newy::CBMatrix, new_minorant::CBMinorantPointer, aggregate::CBMinorantPointer, nullstep_bound::Real, normsubg2::Real, Hp::Union{<:CBBundleProxObject,Nothing})
determine next weight after a null step
ConicBundle.cb_number_aggregated
— Functioncb_number_aggregated(self::CBMinorant)
returns the number of minorants aggregated in this one, value 1 thus means not aggregated
ConicBundle.cb_nzcoldim
— Functioncb_nzcoldim(self::CBSparseCoeffmatMatrix)
returns the number of columns with nonzero coefficient matrices
ConicBundle.cb_objective_value
— Functioncb_objective_value(self::CBAffineFunctionTransformation, offset::Real, function_value::Real)
- @brief if @a offset is the value computed in transformargument and @a functionvalue results form an evaluation in the respective point, the routine returns the objective value obtained by the affine transformation
ConicBundle.cb_offset
— Functioncb_offset(self::CBMinorantPointer)
returns the offset of the minorant (including the internal scalings) or CBminusinfinity if empty
cb_offset(self::CBMinorantUseData)
return the offset of the minorant
cb_offset(self::CBMinorant)
returns the current offset value
ConicBundle.cb_offset_gives_value_at_origin
— Functioncb_offset_gives_value_at_origin(self::CBMinorant)
true if the offset refers to origin and false, if the offset refers to the value of the minorant in the point of the oracle evaluation at which this minorant was supplied
ConicBundle.cb_offset_gives_value_at_origin!
— Functioncb_offset_gives_value_at_origin!(self::CBMinorant)
allows to specify/modify whether the offset refers to origin or to the point of evaluation at which this minorant was supplied
ConicBundle.cb_old_blockdim
— Functioncb_old_blockdim(self::CBPSCAffineModification)
returns the number of rows before modification (given on initialization)
ConicBundle.cb_old_rowdim
— Functioncb_old_rowdim(self::CBAFTModification)
returns the number of rows before modification (given on initialization)
ConicBundle.cb_old_vardim
— Functioncb_old_vardim(self::CBAFTModification)
returns the number of variables before modification (given on initialization)
cb_old_vardim(self::CBGroundsetModification)
returns the number of variables before modification (given on initialization)
cb_old_vardim(self::CBNNCBoxSupportModification)
returns the number of variables before modification (given on initialization)
cb_old_vardim(self::CBPSCAffineModification)
returns the number of variables before modification (given on initialization)
cb_old_vardim(self::CBSOCSupportModification)
returns the number of variables before modification (given on initialization)
ConicBundle.cb_one_user
— Functioncb_one_user(self::CBMinorantPointer)
returns true if not valid or this is the only active pointer to the minorant
cb_one_user(self::CBMinorantUseData)
returns true if not valid or use_cnt==1 recursively
ConicBundle.cb_only_scalars_change
— Functioncb_only_scalars_change(self::CBAFTModification)
returns true if linear_cost, matrix and affine rhs offset are not changed
ConicBundle.cb_out
— Functioncb_out(self::CBCMgramdense)
put entire contents onto ostream with the class type in the beginning so that the derived class can be recognized by in().
cb_out(self::CBCMgramsparse)
put entire contents onto ostream with the class type in the beginning so that the derived class can be recognized by in().
cb_out(self::CBCMgramsparse_withoutdiag)
put entire contents onto ostream with the class type in the beginning so that the derived class can be recognized by in().
cb_out(self::CBCMlowrankdd)
put entire contents onto ostream with the class type in the beginning so that the derived class can be recognized by in().
cb_out(self::CBCMlowranksd)
put entire contents onto ostream with the class type in the beginning so that the derived class can be recognized by in().
cb_out(self::CBCMlowrankss)
put entire contents onto ostream with the class type in the beginning so that the derived class can be recognized by in().
cb_out(self::CBCMsingleton)
put entire contents onto outstream with the class type in the beginning so that the derived class can be recognized by in().
cb_out(self::CBCMsymdense)
put entire contents onto outstream with the class type in the beginning so that the derived class can be recognized by in().
cb_out(self::CBCMsymsparse)
put entire contents onto outstream with the class type in the beginning so that the derived class can be recognized by in().
ConicBundle.cb_output_aft_data
— Functioncb_output_aft_data(self::CBAffineFunctionTransformation)
for testing purposes this outputs the data in mfile readable form
ConicBundle.cb_output_bundle_data
— Functioncb_output_bundle_data(self::CBPSCModel)
this outputs the qp model data recursively for testing purposes
cb_output_bundle_data(self::CBSOCModel)
this outputs the qp model data recursively for testing purposes
ConicBundle.cb_pivot_permute!
— Functioncb_pivot_permute!(self::CBSymmatrix, piv::CBIndexmatrix, inverse::Bool = false)
for i=0 to rowdim row (and column) i of this matrix is swapped with row piv(j); for inverse=true the inverse permutation is generated
ConicBundle.cb_pivot_permute_cols!
— Functioncb_pivot_permute_cols!(self::CBMatrix, piv::CBIndexmatrix, inverse::Bool = false)
for j=0 to coldim column j of this matrix is swapped with column piv(j); for inverse =true the inverse permutation is generated
ConicBundle.cb_pivot_permute_rows!
— Functioncb_pivot_permute_rows!(self::CBMatrix, piv::CBIndexmatrix, inverse::Bool = false)
for i=0 to rowdim row i of this matrix is swapped with row piv(i); for inverse =true the inverse permutation is generated
ConicBundle.cb_pop_aft!
— Functioncb_pop_aft!(self::CBBundleDenseTrustRegionProx)
see BundleProxObject::pop_aft();
cb_pop_aft!(self::CBBundleDiagonalTrustRegionProx)
see BundleProxObject::pop_aft();
cb_pop_aft!(self::CBBundleDLRTrustRegionProx)
see BundleProxObject::pop_aft();
cb_pop_aft!(self::CBBundleLowRankTrustRegionProx)
see BundleProxObject::pop_aft();
ConicBundle.cb_postgenmult
— Functioncb_postgenmult(self::CBCMgramdense, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alpha(this)B^(T if btrans) + betaC, C is also returned
cb_postgenmult(self::CBCMgramsparse, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alpha(this)B^(T if btrans) + betaC, C is also returned
cb_postgenmult(self::CBCMgramsparse_withoutdiag, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alpha(this)B^(T if btrans) + betaC, C is also returned
cb_postgenmult(self::CBCMlowrankdd, D::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., dtrans::Integer = 0)
computes C= alpha(this)D^(T if dtrans) + betaC, C is also returned
cb_postgenmult(self::CBCMlowranksd, D::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., dtrans::Integer = 0)
computes C= alpha(this)D^(T if dtrans) + betaC, C is also returned
cb_postgenmult(self::CBCMlowrankss, D::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., dtrans::Integer = 0)
computes C= alpha(this)D^(T if dtrans) + betaC, C is also returned
cb_postgenmult(self::CBCMsingleton, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alpha(this)B^(T if btrans) + betaC, C is also returned
cb_postgenmult(self::CBCMsymdense, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alpha(this)B^(T if btrans) + betaC, C is also returned
cb_postgenmult(self::CBCMsymsparse, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alpha(this)B^(T if btrans) + betaC, C is also returned
ConicBundle.cb_precondM1!
— Functioncb_precondM1!(self::CBQPKKTSubspaceHPrecond, vec::CBMatrix)
returns M1^{-1}*vec; default: M1=I
ConicBundle.cb_precond_invG1!
— Functioncb_precond_invG1!(self::CBQPKKTSubspaceHPrecond, vec::CBMatrix)
for estimating the condition number with M1=GG^T this returns G^{-1}vec; default: G=I
ConicBundle.cb_precond_invG1tran!
— Functioncb_precond_invG1tran!(self::CBQPKKTSubspaceHPrecond, vec::CBMatrix)
for estimating the condition number with M1=GG^T this returns G^{-T}vec; default: G=I
ConicBundle.cb_precond_size!
— Functioncb_precond_size!(self::CBQPKKTSubspaceHPrecond)
for estimating the condition number directly for the preconditioned part only; negative numbers indicate that the routine is not implemented
ConicBundle.cb_pregenmult
— Functioncb_pregenmult(self::CBCMgramdense, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alphaB^(T if btrans)(this) + betaC, C is also returned
cb_pregenmult(self::CBCMgramsparse, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alphaB^(T if btrans)(this) + betaC, C is also returned
cb_pregenmult(self::CBCMgramsparse_withoutdiag, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alphaB^(T if btrans)(this) + betaC, C is also returned
cb_pregenmult(self::CBCMlowrankdd, D::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., dtrans::Integer = 0)
computes C= alphaD^(T if dtrans)(this) + betaC, C is also returned
cb_pregenmult(self::CBCMlowranksd, D::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., dtrans::Integer = 0)
computes C= alphaD^(T if dtrans)(this) + betaC, C is also returned
cb_pregenmult(self::CBCMlowrankss, D::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., dtrans::Integer = 0)
computes C= alphaD^(T if dtrans)(this) + betaC, C is also returned
cb_pregenmult(self::CBCMsingleton, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alphaB^(T if btrans)(this) + betaC, C is also returned
cb_pregenmult(self::CBCMsymdense, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alphaB^(T if btrans)(this) + betaC, C is also returned
cb_pregenmult(self::CBCMsymsparse, B::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., btrans::Integer = 0)
computes C= alphaB^(T if btrans)(this) + betaC, C is also returned
ConicBundle.cb_prepare_BCSchur_JLprecond!
— Functioncb_prepare_BCSchur_JLprecond!(self::CBQPConeModelBlock, glob_lowrank::CBMatrix, subspace::CBMatrix, append_globtransp_times_mat_to_subspace::Bool, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
@brief compute the preconditioning low-rank representation of the Schur complementd blocks belonging to bundle and local constraints by adding a Johnson-Lindenstrauss projection onto the given subspace to glob_lowrank
cb_prepare_BCSchur_JLprecond!(self::CBQPSumModelBlock, glob_lowrank::CBMatrix, subspace::CBMatrix, append_globtransp_times_mat_to_subspace::Bool, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
@brief compute the preconditioning low-rank representation of the Schur complementd blocks belonging to bundle and local constraints by adding a Johnson-Lindenstrauss projection onto the given subspace to glob_lowrank
ConicBundle.cb_preserves_identity
— Functioncb_preserves_identity(self::CBAFTModification)
returns true if the modifications are consistent with the AffineFunctionTransformation matrix staying the identity
ConicBundle.cb_primal_ip
— Functioncb_primal_ip(self::CBSparseCoeffmatMatrix, ipvec::CBMatrix, primal::Union{<:CBPSCPrimal,Nothing}, ind::Union{<:CBIndexmatrix,Nothing} = nothing)
computes the inner products of (selected) columns (which represent block diagonal symmetric matrices) with the primal into the column vector ipvec(j)=ip(primal,A.column((ind)(j)}) (j=0,...,ind->dim()-1); if ind==NULL, use all columns
cb_primal_ip(self::CBSparseCoeffmatMatrix, primal::Union{<:CBPSCPrimal,Nothing}, j::Integer)
computes the inner product of the block diagonal symmetric matrix stored in colummn j with the primal into ipval=ip(*primal,A.column(j))
cb_primal_ip(self::CBBlockPSCPrimal, A::CBSparseCoeffmatMatrix, column::Integer)
if compatible evaluate value=ip(*this,A.column[i])
cb_primal_ip(self::CBDensePSCPrimal, A::CBSparseCoeffmatMatrix, column::Integer)
if compatible evaluate value=ip(*this,A.column[i])
cb_primal_ip(self::CBGramSparsePSCPrimal, A::CBSparseCoeffmatMatrix, column::Integer)
if compatible evaluate value=ip(*this,A.column[i])
cb_primal_ip(self::CBSparsePSCPrimal, A::CBSparseCoeffmatMatrix, column::Integer)
if compatible evaluate value=ip(*this,A.column[i])
ConicBundle.cb_primalviol_2normsqr!
— Functioncb_primalviol_2normsqr!(self::CBQPConeModelBlock)
return squared Euclidean norm of constraint violation of modelx
cb_primalviol_2normsqr!(self::CBQPSumModelBlock)
return the squared Euclidean norm of constraint violation of modelx
ConicBundle.cb_principal_submatrix
— Functioncb_principal_submatrix(self::CBSymmatrix, ind::CBIndexmatrix, S::CBSymmatrix)
returns S and in S the principal submatrix indexed by ind (multiple indices are allowed)
cb_principal_submatrix(self::CBSymmatrix, ind::CBIndexmatrix)
returns the principal submatrix indexed by ind (multiple indices are allowed)
ConicBundle.cb_print_id
— Functioncb_print_id(self::CBCoeffmatInfo)
output a name if there is one for recognizing the type
ConicBundle.cb_print_line_summary
— Functioncb_print_line_summary(self::CBMatrixCBSolver)
print a one line summary of important evaluation data
cb_print_line_summary(self::CBBundleSolver)
@brief print a one line summary about the current state of progress of the algorithm to @a out
Assuming that an external clock has been set, the line looks as follows hh:mm:ss.hh endit dd ii uu weightu aggr_dnorm modelval center_ub (N) These are - hh:mm:ss.hh hours, mintues, seconds, hundreth of secondes - "endit" this string is short for "end of iteration" and is convenient for the unix command grep; in the case the code has terminated it shows "_endit" instead - dd gives the number of descent steps as in @a descent_steps - ii gives the total number of iterations of the bundle method, counting descent steps and null steps - uu gives the total number of quadratic bundle subproblem evaluations as counted by @a sumupdatecnt - weight gives the value of the weight factor for the proximal term used in the last quadratic bundle subproblem - aggr_dnorm gives the dual norm of the aggregate (dual with respect to the quadratic proximal term) - modelval gives the model value used for deciding on null or descent step; this is @a linval if @a use_linval ==true and
@a cutval otherwise - centerub gives the upper bound computed by the oracle on the function value in the center - "N" is only shown if the code has not terminated and a null step just occured before returning (nullstep is true)
ConicBundle.cb_print_problem_data
— Functioncb_print_problem_data(self::CBNNCBoxSupportFunction)
write the problem description to out so that it can be read again by readproblemdata()
cb_print_problem_data(self::CBPSCAffineFunction)
write the problem description to out so that it can be read again by readproblemdata()
cb_print_problem_data(self::CBSOCSupportFunction)
write the problem description to out so that it can be read again by readproblemdata()
ConicBundle.cb_print_problem_data_to_mfile
— Functioncb_print_problem_data_to_mfile(self::CBNNCBoxSupportFunction, blocknr::Integer)
undocumented highly volatile variant for external testing
cb_print_problem_data_to_mfile(self::CBPSCAffineFunction, blocknr::Integer)
undocumented highly volatile variant for external testing
cb_print_problem_data_to_mfile(self::CBSOCSupportFunction, blocknr::Integer)
undocumented highly volatile variant for external testing
ConicBundle.cb_print_statistics
— Functioncb_print_statistics(self::CBMatrixCBSolver)
print a cryptic summary of computation times of important components
cb_print_statistics(self::CBUQPSolver)
output some statistical information on performance
cb_print_statistics(self::CBBundleSolver)
output some time statistic paramters
ConicBundle.cb_print_status
— Functioncb_print_status(self::CBBundleTerminator)
output an explanation string for the current termination code
ConicBundle.cb_print_termination_code
— Methodcb_print_termination_code(self::CBMatrixCBSolver)
@brief Outputs a text version of termination code, see termination_code().
@return - 0 on success - != 0 otherwise
ConicBundle.cb_print_time
— Functioncb_print_time(m::CBMicroseconds, secondsonly::Integer = 0)
print Microseconds in the format "hh:mm:ss.dd" or "hh:mm:ss"
ConicBundle.cb_prodvec_flops
— Functioncb_prodvec_flops(self::CBCMgramdense)
returns an estimate of number of flops to compute addprodto for a vector
cb_prodvec_flops(self::CBCMgramsparse)
returns an estimate of number of flops to compute addprodto for a vector
cb_prodvec_flops(self::CBCMgramsparse_withoutdiag)
returns an estimate of number of flops to compute addprodto for a vector
cb_prodvec_flops(self::CBCMlowrankdd)
returns an estimate of number of flops to compute addprodto for a vector
cb_prodvec_flops(self::CBCMlowranksd)
returns an estimate of number of flops to compute addprodto for a vector
cb_prodvec_flops(self::CBCMlowrankss)
returns an estimate of number of flops to compute addprodto for a vector
cb_prodvec_flops(self::CBCMsingleton)
returns an estimate of number of flops to compute addprodto for a vector
cb_prodvec_flops(self::CBCMsymdense)
returns an estimate of number of flops to compute addprodto for a vector
cb_prodvec_flops(self::CBCMsymsparse)
returns an estimate of number of flops to compute addprodto for a vector
ConicBundle.cb_project
— Functioncb_project(self::CBCMgramdense, S::CBSymmatrix, P::CBMatrix)
computes S=P^T(this)*P
cb_project(self::CBCMgramsparse, S::CBSymmatrix, P::CBMatrix)
computes S=P^T(this)*P
cb_project(self::CBCMgramsparse_withoutdiag, S::CBSymmatrix, P::CBMatrix)
computes S=P^T(this)*P
cb_project(self::CBCMlowrankdd, S::CBSymmatrix, P::CBMatrix)
computes S=P^T(this)*P
cb_project(self::CBCMlowranksd, S::CBSymmatrix, P::CBMatrix)
computes S=P^T(this)*P
cb_project(self::CBCMlowrankss, S::CBSymmatrix, P::CBMatrix)
computes S=P^T(this)*P
cb_project(self::CBCMsingleton, S::CBSymmatrix, P::CBMatrix)
computes S=P^T(this)*P
cb_project(self::CBCMsymdense, S::CBSymmatrix, P::CBMatrix)
computes S=P^T(this)*P
cb_project(self::CBCMsymsparse, S::CBSymmatrix, P::CBMatrix)
computes S=P^T(this)*P
cb_project(self::CBSparseCoeffmatMatrix, S::CBSymmatrix, P::CBMatrix, j::Integer)
computes S=P^TA.column(j)P
ConicBundle.cb_projected_clone!
— Functioncb_projected_clone!(self::CBBundleDenseTrustRegionProx, indices::CBIndexmatrix)
- @brief in order to allow for fixed variables, this generates a clone restricted to the given indices
cb_projected_clone!(self::CBBundleDiagonalTrustRegionProx, indices::CBIndexmatrix)
- @brief in order to allow for fixed variables, this generates a clone restricted to the given indices
cb_projected_clone!(self::CBBundleDLRTrustRegionProx, indices::CBIndexmatrix)
- @brief in order to allow for fixed variables, this generates a clone restricted to the given indices
cb_projected_clone!(self::CBBundleIdProx, indices::CBIndexmatrix)
- @brief in order to allow for fixed variables, this generates a clone restricted to the given indices
cb_projected_clone!(self::CBBundleLowRankTrustRegionProx, indices::CBIndexmatrix)
- @brief in order to allow for fixed variables, this generates a clone restricted to the given indices
ConicBundle.cb_projection!
— Functioncb_projection!(self::CBSOCSupportFunction, offset::CBMatrix, coeffs::CBMatrix, bar_P::CBMatrix, index_subset::Union{<:CBIndexmatrix,Nothing} = nothing)
see SOCOracle::projection()
ConicBundle.cb_propose_BCSchur_pcsubspace!
— Functioncb_propose_BCSchur_pcsubspace!(self::CBQPConeModelBlock, lowrank::CBMatrix, sigma_guess::CBMatrix, Diag_inv::CBMatrix, minval::Real, diaginvval::Real, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
@brief append to lowrank "large" columns that should serve well for generating a low rank projection of the Schur complemented model part. For each column i the coordinate sigmaguess(i) gives the Diaginv-norm for this column. The parameter minval asks to ignore columns whose norms are smaller than minval. If diaginvval is positive, the vector Diag_inv is this value times the all ones vector.
On input lowrank must have the correct number of rows already but may have 0 columns.
cb_propose_BCSchur_pcsubspace!(self::CBQPSumModelBlock, lowrank::CBMatrix, sigma_guess::CBMatrix, Diag_inv::CBMatrix, minval::Real, diaginvval::Real, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
@brief append to lowrank "large" columns that should serve well for generating a low rank projection of the Schur complemented model part. For each column i the coordinate sigmaguess(i) gives the Diaginv-norm for this column. The parameter minval asks to ignore columns whose norms are smaller than minval. If diaginvval is positive, the vector Diag_inv is this value times the all ones vector.
On input lowrank must have the correct number of rows already but may have 0 columns.
ConicBundle.cb_provide_model_aggregate!
— Functioncb_provide_model_aggregate!(self::CBAFTModel, y_id::Integer, y::CBMatrix)
see BundleModel::providemodelaggregate
cb_provide_model_aggregate!(self::CBSumModel, y_id::Integer, y::CBMatrix)
see BundleModel::providemodelaggregate
cb_provide_model_aggregate!(self::CBSumBundleHandler)
see SumBlockModel::providemodelaggregate
ConicBundle.cb_push_aft!
— Functioncb_push_aft!(self::CBBundleDenseTrustRegionProx, aft::Union{<:CBAffineFunctionTransformation,Nothing})
see BundleProxObject::push_aft();
cb_push_aft!(self::CBBundleDiagonalTrustRegionProx, aft::Union{<:CBAffineFunctionTransformation,Nothing})
see BundleProxObject::push_aft();
cb_push_aft!(self::CBBundleDLRTrustRegionProx, aft::Union{<:CBAffineFunctionTransformation,Nothing})
see BundleProxObject::push_aft();
cb_push_aft!(self::CBBundleLowRankTrustRegionProx, aft::Union{<:CBAffineFunctionTransformation,Nothing})
see BundleProxObject::push_aft();
ConicBundle.cb_qp_cost_indices
— Functioncb_qp_cost_indices(self::CBAffineFunctionTransformation, provide_row_indices::CBIndexmatrix, needed_col_indices::Union{<:CBIndexmatrix,Nothing})
- @brief if the algorithm only requires the indices given in @a neededcolindices (NULL means all indices) then it suffices to supply the @a providerowindices as @a indices in transform_minorant (a 0x0 return matrix again means all indices, while a 0x1 matrix means no indices). Any input or output indices must be in strictly increasing order.
ConicBundle.cb_qp_mfile_data
— Functioncb_qp_mfile_data(self::CBBundleSolver, center_y::CBMatrix, Hp::Union{<:CBBundleProxObject,Nothing}, gs_subg::CBMinorantPointer, Q::CBSymmatrix, c::CBMatrix, offset::Real, yfixed::CBIndexmatrix)
output the data of the Gauss-Seidel qp to in an m file format
ConicBundle.cb_rand
— Functioncb_rand(nr::Integer, nc::Integer, random_generator::Union{<:CBGB_rand,Nothing})
return a nr x nc matrix with (i,j) assigned a random number uniformly from [0,1] for all i,j
cb_rand(nr::Integer, nc::Integer, lb::Integer, ub::Integer, random_generator::Union{<:CBGB_rand,Nothing})
return a nr x nc matrix with (i,j) assigned a random number uniformly from [lowerb,upperb] for all i,j
ConicBundle.cb_rand!
— Functioncb_rand!(self::CBMatrix, nr::Integer, nc::Integer, random_generator::Union{<:CBGB_rand,Nothing} = nothing)
resize *this to an nr x nc matrix and assign to (i,j) a random number uniformly from [0,1] for all i,j
cb_rand!(self::CBIndexmatrix, nr::Integer, nc::Integer, lowerb::Integer, upperb::Integer, random_generator::Union{<:CBGB_rand,Nothing} = nothing)
resize *this to an nr x nc matrix and assign to (i,j) a random number uniformly from [lowerb,upperb] for all i,j
ConicBundle.cb_rand_normal!
— Functioncb_rand_normal!(self::CBMatrix, nr::Integer, nc::Integer, mean::Real = 0., variance::Real = 1., generator_type::Integer = 0)
resize *this to an nr x nc matrix and assign to (i,j) a random number from the normal distribution with given mean and variance (generators: 0 std, 1 mt, 2 mt64)
ConicBundle.cb_rank2add
— Functioncb_rank2add(A::CBSparsemat, B::CBMatrix, C::CBSymmatrix, alpha::Real, beta::Real, trans::Integer)
returns C=betaC+alpha(AB^T+BA^T)/2 [or for transposed (A^TB+B^TA)/2]. If beta==0. then C is initiliazed to the correct size.
cb_rank2add(A::CBMatrix, B::CBMatrix, C::CBSymmatrix, alpha::Real, beta::Real, trans::Integer)
returns C=betaC+alpha(AB^T+BA^T)/2 [or for transposed (A^TB+B^TA)/2]. If beta==0. then C is initiliazed to the correct size.
ConicBundle.cb_rankadd
— Functioncb_rankadd(A::CBSparsemat, C::CBSymmatrix, alpha::Real, beta::Real, trans::Integer)
returns C=betaC+alpha A*A^T, where A may be transposed; if beta==0. then C is initialized to the correct size
cb_rankadd(A::CBMatrix, C::CBSymmatrix, alpha::Real, beta::Real, trans::Integer)
returns C=betaC+alpha A*A^T, where A may be transposed. If beta==0. then C is initiliazed to the correct size.
ConicBundle.cb_reassign_blocks!
— Functioncb_reassign_blocks!(self::CBSparseCoeffmatMatrix, map_to_old::CBIndexmatrix)
afterwards the new block i is the previous block maptoold(i); no multiple appearances are allowed, but not all have to appear (these are deleted)
ConicBundle.cb_reassign_coeffs!
— Functioncb_reassign_coeffs!(self::CBMinorant, n_elements::Integer, map_to_old_coeffs::Union{<:AbstractVector{Integer},Nothing})
resorts (and deletes) coefficients so that afterwards it has nelements and the new coeff(i) has the previous value of coeff(maptooldcoeff(i))
ConicBundle.cb_reassign_columns!
— Functioncb_reassign_columns!(self::CBSparseCoeffmatMatrix, map_to_old::CBIndexmatrix)
afterwards the new column i is the previous column maptoold(i); no multiple appearances are allowed, but not all have to appear (these are deleted)
ConicBundle.cb_reassign_variables!
— Methodcb_reassign_variables!(self::CBMatrixCBSolver, assign_new_from_old::CBIndexmatrix)
@brief Reassigns variables to new index positions by mapping to position @a i the variable that previously had index @a assignnewfrom_old[i].
Old variables, that are not mapped to any position will be deleted. It is not allowed to generate several copies of old variables.
@attention Be sure to include a desription of required changes to your functions via @a affectedfunctionswith_modifications
@param[in] assignnewfromold (const IVector&) entry assignnewfromold[i] specifies the old index of the variable, that has to be copied to index position i.
@param[in] affectedfunctionswith_modifications (const FunObjModMap*) If NULL, default actions are performed on all functions. In particular, for those admitting dynamic argument changes all those variables will be deleted whose row in a corresponding updated affine function transformation (so after mapping the columns of the incoming variables) correspond to the zero map (i.e., offset and matrix row are both zero); furthermore, if the transformation was the identity to start with, this will be preserved by mapping the arguments in the same way. For those not admitting changes in their arguments, their corresponding (possibly newly created) affine function transformation will only get the columns mapped, but there will be no row deleltions. If !=NULL, for the listed functions (and their parents up to the root function) the default deletion action is performed unless their FunctionObjectModification entry gives explicit modification instructions which are then applied instead. For all functions NOT listed in the map and not having modified offsprings their corresponding aft will be set up to keep the arguments unchanged.
@return - 0 on success - != 0 otherwise
ConicBundle.cb_recompute_center!
— Functioncb_recompute_center!(self::CBAFTModel, center_id::Integer, y::CBMatrix, accept_only_higher_values::Bool = false, relprec::Real = -1.)
see BundleModel::recompute_center
cb_recompute_center!(self::CBSumModel, center_id::Integer, y::CBMatrix, accept_only_higher_values::Bool = false, relprec::Real = -1.)
see BundleModel::recompute_center
ConicBundle.cb_recursive_copy_data_of!
— Functioncb_recursive_copy_data_of!(self::CBQPConeModelBlock, param0::Union{<:CBQPModelBlockObject,Nothing})
sofar this is only needed for some comparative evaluations; to work *this must be a clone of the the argument and the content of the objects is copied recursively
cb_recursive_copy_data_of!(self::CBQPSumModelBlock, param0::Union{<:CBQPModelBlockObject,Nothing})
sofar this is only needed for some comparative evaluations
ConicBundle.cb_recursive_delete_and_clear!
— Functioncb_recursive_delete_and_clear!(self::CBQPConeModelBlock)
usually the objects of the recursive block structure and not deleted in a clear. If needed, this can be invoked explicitly here, e.g., in order to clean up clones
cb_recursive_delete_and_clear!(self::CBQPSumModelBlock)
usually the objects of the recursive block structure and not deleted in a clear. If needed, this can be invoked explicitly here, e.g., in order to clean up clones
ConicBundle.cb_reduce_length!
— Functioncb_reduce_length!(self::CBMatrix, n::Integer)
(*this) is set to a column vector of length min{max{0,n},dim()}; usually used to truncate a vector, returns *this
cb_reduce_length!(self::CBIndexmatrix, n::Integer)
(*this) is set to a column vector of length min{max{0,n},dim()}; usually used to truncate a vector, returns *this
ConicBundle.cb_reinit_function_model!
— Methodcb_reinit_function_model!(self::CBMatrixCBSolver, function_::Union{<:CBFunctionObject,Nothing} = nothing)
@brief Clears cutting model, subgradients and stored function values for the specified @a function (but only for the given one, not recursively)
There should be no need to call this if the modification routines of this interface were used correctly. If, however, the oracle is modified by other means outside this interface, this has to be called whenever the specified function was modified so that the old subgradients and/or primal generators are no longer valid.
@param[in] function if the aggregate subgradient of a particular function is desired, provide the pointer here, otherwise this referrs to the root function (if there is only one function to be optimized over, this is this single function, otherwise it is the sum of functions)
@return - 0 on success - != 0 otherwise
ConicBundle.cb_remove_contributions!
— Functioncb_remove_contributions!(self::CBSumBundleHandler)
remove own contributions to the parent and set the states correspondingly
ConicBundle.cb_remove_model!
— Functioncb_remove_model!(self::CBSumModel, fo::Union{<:CBFunctionObject,Nothing})
remove the submodel identified by @a fo from this model, this does NOT destruct the model. It returns the pointer to the model if there is one, otherwise 0
ConicBundle.cb_reset_function_factor!
— Functioncb_reset_function_factor!(self::CBSumBundleHandler, ft::CBFunctionTask, factor::Real)
resets the value of the function factor for this part of sumbundle
ConicBundle.cb_reset_starting_point!
— Functioncb_reset_starting_point!(self::CBQPConeModelBlock, y::CBMatrix, mu::Real, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
bundlevalues holds the negative evaluation of the bundle for the current y
cb_reset_starting_point!(self::CBQPSumModelBlock, y::CBMatrix, mu::Real, global_bundle::CBMinorantBundle, startindex_bundle::Integer)
reset the starting point for this value of the design variables y
ConicBundle.cb_reset_t_precond_mult!
— Functioncb_reset_t_precond_mult!(self::CBQPKKTSubspaceHPrecond)
for evaluation purposes with iterative solvers, reset the time spent in the multiplication with the preconditioner to zero
ConicBundle.cb_resolve!
— Functioncb_resolve!(self::CBUQPSolver)
resolve the QP for the same cost function as last time with slightly modified feasible set
ConicBundle.cb_restart_x!
— Functioncb_restart_x!(self::CBUQPConeModelBlock, qp_x::CBMatrix, qp_c::CBMatrix, qp_dc::CBMatrix)
@brief it is assumed that the problem was solved already once and is now resolved for a new linear cost term qpc that resulted from the old one by adding qpdc.
on input qpx holds the old optimal solution and on output the coorespoind qpxrange should be replaced by a reasonable strictly feasible solution for x suitable for restarting (see also restart_yz)
returns 0 on success, 1 on failure
cb_restart_x!(self::CBUQPSumModelBlock, qp_x::CBMatrix, qp_c::CBMatrix, qp_dc::CBMatrix)
get a good restarting x of all subblocks for this change in costs
ConicBundle.cb_restart_y!
— Functioncb_restart_y!(self::CBUQPConeModelBlock, qp_y::CBMatrix, qp_Qx::CBMatrix, qp_c::CBMatrix, qp_dc::CBMatrix)
@brief this is called after restart_x (see there)
on input qp_y and qp_z hold the old optimal solution and on output the coorespoind qpy/qpx_range should be replaced by a reasonable strictly feasible solution for y/z suitable for restarting returns 0 on success, 1 on failure
cb_restart_y!(self::CBUQPSumModelBlock, qp_y::CBMatrix, qp_Qx::CBMatrix, qp_c::CBMatrix, qp_dc::CBMatrix)
get a good restarting y of all subblocks for this change in costs
ConicBundle.cb_right_genmult
— Functioncb_right_genmult(self::CBMinorantPointer, A::CBMatrix, C::CBMatrix, alpha::Real = 1., beta::Real = 0., atrans::Integer = 0, thistrans::Integer = 0, thisindex::Integer = 0)
computes and returns C=alphaA(this)+betaC where A and *this may be transposed and *this is considered to be a column with thisindex in a bigger matrix
ConicBundle.cb_rint
— Functioncb_rint(A::CBMatrix)
returns a matrix with elements (i,j)=rint((*this)(i,j)) for all i,j
ConicBundle.cb_rint!
— Functioncb_rint!(self::CBMatrix)
sets (this)(i,j)=rint((this)(i,j)) for all i,j and returns *this
ConicBundle.cb_round
— Functioncb_round(A::CBMatrix)
returns a matrix with elements (i,j)=round((*this)(i,j)) for all i,j
ConicBundle.cb_round!
— Functioncb_round!(self::CBMatrix)
sets (this)(i,j)=round((this)(i,j)) for all i,j and returns *this
ConicBundle.cb_roundhundredths
— Functioncb_roundhundredths(self::CBMicroseconds)
round the value to hundredths
ConicBundle.cb_roundsecs
— Functioncb_roundsecs(self::CBMicroseconds)
round the value to seconds
ConicBundle.cb_row
— Functioncb_row(self::CBMatrix, i::Integer)
returns row i copied to a new matrix
cb_row(self::CBIndexmatrix, i::Integer)
returns row i copied to a new matrix
cb_row(self::CBSparsemat, i::Integer)
returns row i copied to a new sparse matrix
cb_row(self::CBSymmatrix, i::Integer)
returns row i copied to a new Matrix
ConicBundle.cb_row_nonzeros
— Functioncb_row_nonzeros(self::CBSparsemat, i::Integer, startind::Union{<:AbstractVector{Cint},Nothing} = nothing)
returns the number of nonzeros in row i; if nonzeros>0 and startind!=0 then the index of the first nonzero in rowindex/rowval is stored there
ConicBundle.cb_rowdim
— Functioncb_rowdim(self::CBMatrix)
returns the row dimension
cb_rowdim(self::CBIndexmatrix)
returns the row dimension
cb_rowdim(self::CBSparsemat)
returns the row dimension
cb_rowdim(self::CBSymmatrix)
returns the row dimension
cb_rowdim(self::CBSparsesym)
returns the row dimension
cb_rowdim(self::CBSparseCoeffmatMatrix)
returns the number of blocks
cb_rowdim(self::CBQPSolver)
number of linear constraints
ConicBundle.cb_rowhouse
— Functioncb_rowhouse(A::CBMatrix, v::CBMatrix, i::Integer, j::Integer)
Housholder pre-multiplication of A with Householder vector v; the first nonzero of v is index i, the multplication is applied to all columns of A with index >=j; always returns 0
ConicBundle.cb_rowip
— Functioncb_rowip(A::CBMatrix, i::Integer, scaling::Union{<:CBMatrix,Nothing})
returns the squared Frobenius norm of row i of A, i.e., the sum of A(i,j)A(i,j) over all j with possibly (if scaling!=0) each term j multiplied by (scaling)(j)
cb_rowip(A::CBSparsemat, i::Integer, scaling::Union{<:CBMatrix,Nothing})
returns the squared Frobenius norm of row i of A, i.e., the sum of A(i,j)A(i,j) over all j with possibly (if scaling!=0) each term j multiplied by (scaling)(j)
ConicBundle.cb_rows
— Functioncb_rows(self::CBMatrix, vec::CBIndexmatrix)
returns a matrix of size vec.dim() x this->coldim(), with row i a copy of row vec(i) of *this
cb_rows(self::CBIndexmatrix, vec::CBIndexmatrix)
returns a matrix of size vec.dim() x this->rowdim(), with row i a copy of row vec(i) of *this
cb_rows(self::CBSparsemat, ind::CBIndexmatrix)
returns a sparse matrix of size vec.dim() x this->rowdim(), with row i a copy of row vec(i) of *this
cb_rows(self::CBSymmatrix, vec::CBIndexmatrix)
returns a matrix of size vec.dim() x this->coldim(), with row i a copy of row vec(i) of *this
ConicBundle.cb_rowsip
— Functioncb_rowsip(A::CBMatrix)
returns the row vector of the squared Frobenius norm of all rowd i of A, i.e., the sum of A(i,j)*A(i,j) over all j for each i
cb_rowsip(A::CBSparsemat, scaling::Union{<:CBMatrix,Nothing})
returns the row vector of the squared Frobenius norm of all rows i of A, i.e., the sum of A(i,j)A(i,j) over all j for each i with possibly (if scaling~=0) each term j multiplied by (scaling)(j)
ConicBundle.cb_save
— Functioncb_save(self::CBGB_rand)
save current configuration to out so as to continue identically after restore
cb_save(self::CBUQPSolver)
save the current settings and values
cb_save(self::CBBundleTerminator)
output current parameter settings
ConicBundle.cb_scale!
— Functioncb_scale!(self::CBMinorantPointer, val::Real)
multiply the MinorantPointer by val (this is an external factor for the minorant and possibly its primal information, but it will be used in aggreagation and when retrieving the approximate primal)
cb_scale!(self::CBMinorantUseData, factor::Real)
carries through the scaling for the underlying minorant, afterwards scaleval==1., may only be carried out if use_cnt==1
ConicBundle.cb_scale_cols!
— Functioncb_scale_cols!(self::CBMatrix, vec::CBMatrix)
scales each column i of (this) by vec(i), i.e., (this)=(this)diag(vec), and returns (*this)
cb_scale_cols!(self::CBSparsemat, vec::CBMatrix)
scales each column i of (this) by vec(i), i.e., (this)=(this)diag(vec), and returns (*this)
ConicBundle.cb_scale_minorant!
— Functioncb_scale_minorant!(self::CBMinorant, scale_val::Real)
mutliply offset and coefficients (and PrimalData, if given) by scale_val
ConicBundle.cb_scale_primal_data!
— Functioncb_scale_primal_data!(self::CBPrimalMatrix, myfactor::Real)
multiply/scale *this with a nonnegative myfactor
cb_scale_primal_data!(self::CBBlockPSCPrimal, factor::Real)
multiply/scale *this with a nonnegative factor
cb_scale_primal_data!(self::CBDensePSCPrimal, factor::Real)
multiply/scale *this with a nonnegative factor
cb_scale_primal_data!(self::CBGramSparsePSCPrimal, factor::Real)
multiply/scale *this with a nonnegative factor
cb_scale_primal_data!(self::CBSparsePSCPrimal, factor::Real)
multiply/scale *this with a nonnegative factor
ConicBundle.cb_scale_rows!
— Functioncb_scale_rows!(self::CBMatrix, vec::CBMatrix)
scales each row i of (this) by vec(i), i.e., (this)=diag(vec)(this), and returns (*this)
cb_scale_rows!(self::CBSparsemat, vec::CBMatrix)
scales each row i of (this) by vec(i), i.e., (this)=diag(vec)(this), and returns (*this)
ConicBundle.cb_scaled_index
— Functioncb_scaled_index(self::CBAffineFunctionTransformation, index::Integer)
- @brief returns false if index is mapped to more than one index, otherwise true with mapped_index==-1 if mapped to zero, else >=0 and @a coeff gives the coefficient
ConicBundle.cb_scaled_index_subset
— Functioncb_scaled_index_subset(self::CBAffineFunctionTransformation, col_ind::Union{<:CBIndexmatrix,Nothing}, row_ind::Union{<:CBIndexmatrix,Nothing})
- @brief returns true if the transformation maps each index (in colind if !=0) onto at most one index and vice versa (out of rowind if !=0)
ConicBundle.cb_scaledrankadd
— Functioncb_scaledrankadd(A::CBSparsemat, D::CBMatrix, C::CBSymmatrix, alpha::Real, beta::Real, trans::Integer)
returns C=betaC+alpha ADA^T, where D is a vector representing a diagonal matrix and A may be transposed; if beta==0. then C is initialized to the correct size
cb_scaledrankadd(A::CBMatrix, D::CBMatrix, C::CBSymmatrix, alpha::Real, beta::Real, trans::Integer)
returns C=betaC+alpha ADA^T, where D is a vector representing a diagonal matrix and A may be transposed; if beta==0. then C is initialized to the correct size
ConicBundle.cb_scaling_indices
— Functioncb_scaling_indices(self::CBAffineFunctionTransformation, row_indices::CBIndexmatrix, col_indices::CBIndexmatrix)
- @brief if AFTModel::adddiagonalscaling() is called with @a indices specified by @a colindices, then AFTmodel has to provide a diagonal scaling matrix of dimension todim() as @a indiagscale in adddiagonalscaling() with the entries in the output vector @a rowindices computed correctly.
ConicBundle.cb_select_model!
— Functioncb_select_model!(self::CBBoxModelParameters, box_model::CBMinorantBundle, box_coeff::CBMatrix, box_indicators::CBMatrix, box_coords::CBIndexmatrix, box_complvalues::CBMatrix, nnc_model::CBMinorantBundle, nnc_coeff::CBMatrix, nnc_indicators::CBMatrix, coord_switching::CBMatrix, minorants::CBMinorantBundle, cand_minorant::CBMinorantPointer, cand_boxvec::CBPrimalMatrix, aggr_boxvec::CBPrimalMatrix, aggr_scaleval::Real, oracle::Union{<:CBBoxOracle,Nothing}, modification_id::Integer, function_task::CBFunctionTask, function_factor::Real, model_update::CBModelUpdate, center_id::Integer, center_y::CBMatrix, cand_id::Integer, cand_y::CBMatrix, model_maxviol::Real, H::CBBundleProxObject)
@brief BoxModel calls this for selecting the next coordinates for a specialized polyhedral model with a box part and an nnc part for aggregates, see the general explanation of the class.
There is little experience on how to do this. The current routine is minimalistic and simply uses the weighted number of switches in each coordinate between lower and upper bounds to select coordinates. To allow maybe better choices in future implementations the arguments try to pass all potentially relevant information items. On putput the coefficient values of the new model must be feasible and have to generate the same aggregate (the aggregate is maintained), and the new candidate minorant must be in the feasible set. @param[in,out] box_model the boxmodel holds the minorants describing the BoxBlock part of the model for selected coordinates and, unless exact or empty, in the last position the complement coordinates of a feasible point (e.g. aggr_boxvec) @param[in,out] box_coeff - on input coefficients of BoxBlock determined in last BundleMethod::eval_augmodel giving rise (together with nnc_coeff) to the aggrgate, - on output they match the new model and still give rise to the same aggregate @param[in,out] box_indicators indicators for activity of box minorants, indicators may but need not be maintained @param[in,out] box_coords the coordinates selected to have their respective interval range in the model @param[in,out] box_complvalues a point with 0 in the box_coords and feasible coordinate values in the complement (if not empty) @param[in,out] nnc_model if box_model is empty, this spans at least the aggregate (if available) and the candidate (always); if box_model is not empty but not the entire box, nnc_model typically holds one of the candidate or the aggregate; if box_model is the entire box, nnc_model is empty @param[in,out] nnc_coeff - on input coefficients of BoxBlock determined in last BundleMethod::eval_augmodel giving rise (together with box_coeff) to the aggrgate, - on output they match the new model and still give rise to the same aggregate @param[in,out] nnc_indicators indicators for activity of minorants, indicators may but need not be maintained @param[in] coord_switching keeps track of which coordinates where changing the most in the past by forming a weighted average in BoxModel::eval_function() @param[in] minorants the vector of MinorantPointer gives additional minorants
collected over time (some may be duplicates also of those in nnc_model)
@param[in] candminorant the (eps)sugradient linear minorant returned by BoxModel::evalfunction for the candidate (without function factor)
@param[in] cand_boxvec the maximizer over the box for the current candidate
@param[in] aggrboxvec the primal aggregate vector in the box (without functionfactor) giving rise to the aggregate; not initialized if zerodimensional
@param[in] aggrscaleval 0<= aggrscalevale <= functionfactor, ==functionfactor if functiontask==ObjectiveFunction; the aggregate with functionfactor is aggrboxvec*aggr_scaleval;
@param[in] oracle gives access to lower and upper bounds of the box @param[in] modification_id the identifier of the current function version to be used in generating specialized minorants corresponding to the coordinate vectors @param[in] function_task see FunctionTask @param[in] function_factor interpreted according to function_task and the coefficients sum up to at most this value @param[in] model_update informs about whether cand_y is the result of a null_step or descent_step or a new set up. @param[in] center_id the identifier of the center point @param[in] center_y the center point @param[in] cand_id the identifier of the candidate point @param[in] cand_y the candidate (mostly differnt from the center), close to it the model should be good @param[in] model_maxviol a minorant violated by this would have caused a null step @param[in] H the variable metric used in the proximal term (function_factor is already removed in this) @return - 0 on success - 1 on failure
cb_select_model!(self::CBNNCModelParameters, model::CBMinorantBundle, coefficients::CBMatrix, activity_indicators::CBMatrix, aggregate::CBMinorantPointer, center_minorant::CBMinorantPointer, cand_minorants::CBMinorantBundle, old_minorants::CBMinorantBundle, oracle::Union{<:CBMatrixFunctionOracle,Nothing}, function_task::CBFunctionTask, function_factor::Real, model_update::CBModelUpdate, center_id::Integer, center_y::CBMatrix, cand_id::Integer, cand_y::CBMatrix, model_maxviol::Real, H::CBBundleProxObject)
@brief NNCModel calls this for selecting the next minorants for a polyhedral model
@param[in,out] model contains the model of the previous subproblem or a minimal starting choice @param[in,out] coefficients contains the coefficients resulting from the last bundel subproblem (on input and on output they should generate the aggregate, if the aggregate is valid) @param[in,out] activity_indicators contains activity_indicators resulting from the last bundel subproblem (currently 1 if considered active and 0 otherwise). Those indicated active in the bundle on input will also be indicated active @param[in] aggregate if valid, it holds the current aggregate. It arises as nonnegative combinations of the model by the coefficients (so it inculde the current function_factor). This property of model and coefficients should be maintained on output @param[in] center_minorant if valid, it holds the current aggregate. It arises as nonnegative combinations of the model by the coefficients, and that should be maintained on output @param[in] cand_minorants holds the vector of minorants returned by evaluation in the candidate point @param[in] old_minorants the vector of MinorantPointer gives additional minorants
collected over time (some may be duplicates, some are most certainly already contained in the bundle on input)
@param[in] oracle gives access to the evaluation oracle @param[in] function_task see FunctionTask @param[in] function_factor interpreted according to function_task and the coefficients sum up to at most this value @param[in] model_update informs about whether cand_y is the result of a null_step or descent_step or a new set up. @param[in] center_id the identifier of the center point @param[in] center_y the center point @param[in] cand_id the identifier of the candidate point @param[in] cand_y the candidate (mostly differnt from the center), close to it the model should be good @param[in] model_maxviol a minorant violated by this would have caused a null step @param[in] H the variable metric used in the proximal term (function_factor is already removed in this) @return - 0 on success - 1 on failure
cb_select_model!(self::CBPSCModelParameters, modelvecs::CBMatrix, model_aggregate::CBMinorantPointer, topvecs::CBMatrix, Ritz_values::CBMatrix, primal_Ritzval::Real, primaleigs::CBMatrix, primalvecs::CBMatrix, primal_aggregate::CBMinorantPointer, primal_aggregate_coeff::Real, growthrate::Real, primalgrowth::CBMatrix, dualgrowth::CBMatrix, cand_Ritzvec::CBMatrix, cand_Ritzval::CBMatrix, oracle::Union{<:CBPSCOracle,Nothing}, modification_id::Integer, function_task::CBFunctionTask, function_factor::Real, model_update::CBModelUpdate, center_id::Integer, center_y::CBMatrix, cand_id::Integer, cand_y::CBMatrix, model_maxviol::Real, diffval_center_aggregate::Real, H::CBBundleProxObject)
@brief PSCModel calls this for selecting the next positive semidefinite model
@param[in,out] modelvecs * on input: orthonormal basis of the subspace used in the last semidefinite model * on output: orthonormal subspace basis to be used in the next semidefinite model, it includes the subspace of the primalvecs of the keepsize largest primaleigs. In particular for null steps the remaining columns of primalvecs with nonzero primaleigs have to be included with the current aggregate in a new aggregate of the model; this will be taken care of outside this routine aftwards @param[in,out] model_aggregate (MinorantPointer) aggregate in use in the last and then the next model. @param[in,out] topvecs * on input: orthonormal basis of the collected subspace that is supposed to approximate the eigenspace to the largest eigenvalues, see Ritz_values * on output: same thing but maybe reduced in size @param[in,out] Ritz_values * on input: Ritz_values in cand_y for the vectors in topvecs * on output: same thing but maybe reduced in size as in topvecs @param[in,out] activedim * on input: the dimension of the subspace (first columns in topvecs) regarded as active in the last iterations of the bundle subproblem solution
on output: the dimension of the subspace (first columns of topvecs) regarded as (maybe weakly) active now (typically it will increase during null steps and may be tightened at descent steps)
@param[out] keepsize columns 0..keepsize-1 of primalvecs (corresponding to the keepsize
largest primaleigs) are included in modelvecs. The remaining columns need to be aggregated afterwards into the aggregate of the model
@param[out] skippedsize columns activedim..activedim+skippedsize-1 of topvecs should be used for setting up the scaling matrix after descent steps. @param[in] primal_Ritzval the (common) Ritz value of the active subspace of the model (if not available use some guess like Ritz_values(0)) @param[in] primaleigs eigenvalues of the last primal semdifinite model matrix (sorted nonincreasingly) @param[in] primalvecs corresponding (orthonormal) eigenvectors to primaleigs @param[in] primal_aggregate (MinorantPointer) aggregate in use in the last model. @param[in] primal_aggregate_coeff coefficient on how strongly the aggregated was used in the last primal solution to the model @param[in] growthrate (Real) factor <X,Z>/<X^-,Z^->, where X^- and Z^- are the last but one iterates of the interior point method @param[in] primalgrowth (Matrix) factor by which primaleigs changed in the last interior point iteration @param[in] dualgrowth (Matrix) factor by which the dual Ritz values to primalvecs changed
during the last interior point iteration
@param[in] cand_Ritzvec (const Matrix&) the (orthonormal) vectors returned by the evaluation call to the oracle @param[in] cand_Ritzval (const Matrix&)
the Ritz values of cand_Ritzvec returned by the evaluation call to the oracle
@param[in] oracle gives access to the evaluation oracle @param[in] modification_id the identifier for the current version of the function accounting for dynamic modifications @param[in] function_task see FunctionTask @param[in] function_factor interpreted according to function_task and the coefficients sum up to at most this value @param[in] model_update informs about whether cand_y is the result of a null_step or descent_step or a new set up. @param[in] center_id the identifier of the center point @param[in] center_y the center point @param[in] cand_id the identifier of the candidate point @param[in] cand_y the candidate (mostly differnt from the center), close to it the model should be good @param[in] model_maxviol a minorant violated by this would have caused a null step @param[in] diffval_center_aggregate difference of center value to aggregate value (nonnegative, without function_factor) @param[in] H the variable metric used in the proximal term (function_factor is already removed in this) @return - 0 on success - 1 on failure
cb_select_model!(self::CBSOCModelParameters, modelvecs::CBMatrix, aggrvec::CBMatrix, cand_SOCval::Real, cand_SOCvec::CBMatrix, center_SOCval::Real, center_SOCvec::CBMatrix, SOCvecs::CBMatrix, oracle::Union{<:CBSOCOracle,Nothing}, function_task::CBFunctionTask, function_factor::Real, model_update::CBModelUpdate, center_id::Integer, center_y::CBMatrix, cand_id::Integer, cand_y::CBMatrix, model_maxviol::Real, H::CBBundleProxObject)
@brief SOCModel calls this for selecting the next minorants for a polyhedral model
@param[in,out] modelvecs the columns span the barx subspace of the SOC face (the model is initialized if modelvecs.coldim()>0). On output it has to span at least the subspace spanned by aggrvec and cand_SOCvec
@param[in,out] aggrvec current aggregate soc vector (includes all coordinates and @a functionfactor according to @a functiontask); if not valid it has coldim==0.
@param[in] cand_SOCval lower bound on the candidate value
@param[in] candSOCvec the SOCvector generating candSOCval (includes all coordinates but no function_factor)
@param[in] center_SOCval lower bound on the center value
@param[in] centerSOCvec the SOCvector generating centerSOCval (includes all coordinates but no function_factor)
@param[in] SOCvecs collects the barx parts of the old SOCvecs
@param[in] oracle gives access to the evaluation oracle
@param[in] function_task see FunctionTask
@param[in] functionfactor interpreted according to functiontask and the coefficients sum up to at most this value
@param[in] modelupdate informs about whether candy is the result of a nullstep or descentstep or a new set up.
@param[in] center_id the identifier of the center point
@param[in] center_y the center point
@param[in] cand_id the identifier of the candidate point
@param[in] cand_y the candidate (mostly differnt from the center), close to it the model should be good
@param[in] model_maxviol a minorant violated by this would have caused a null step
@param[in] H the variable metric used in the proximal term (function_factor is already removed in this)
@return
- 0 on success
- 1 on failure
cb_select_model!(self::CBSumBundleParameters, model_indices::CBIndexmatrix, cand_id::Integer, cand_y::CBMatrix, minorants::CBMinorantBundle, aggr_index::Integer, model_maxviol::Real, H::CBBundleProxObject, model_update::CBModelUpdate)
@brief FunctionModel and SumBundleHandler call this for selecting the next minorants for a polyhedral model
@param[out] model_indices the indices of minorants selected for the model; index 0 is always the aggregate indicated by the input index aggr_index @param[in] cand_id the identifier of the candidate point supplied next @param[in] cand_y the candidate (differnte from the center), close to it the model should be good @param[in] minorants the vector of MinorantPointer gives the minorants
out of which the model should be selected.
@param[in] aggr_index the index of the aggregate within the minorants @param[in] model_maxviol a minorant violated by this would have caused a null step @param[in] H the proximal term used for determining the given cand_y @param[in] model_update informs about whether cand_y is the result of a null_step or descent_step or aomw other a new set up. @return - 0 on success - 1 on failure
ConicBundle.cb_set!
— Functioncb_set!(self::CBSparseCoeffmatMatrix, i::Integer, j::Integer, cm::CBCoeffmatPointer)
sets the CoeffmatPointer of block i in column j (blockdiagonal matrix j) (may be empty)
cb_set!(self::CBSparseCoeffmatMatrix, i::Integer, j::Integer, cm::Union{<:CBCoeffmat,Nothing})
sets the CoeffmatPointer of block i in column j (blockdiagonal matrix j) to point to cm (or deletes it if cm==0)
ConicBundle.cb_set_D!
— Functioncb_set_D!(self::CBBundleDiagonalTrustRegionProx, in_D::CBMatrix)
set the diagonal (it needs to be >=0 but this is not checked)
ConicBundle.cb_set_active_bounds_fixing!
— Methodcb_set_active_bounds_fixing!(self::CBMatrixCBSolver, allow_fixing::Bool)
@brief If set to true (the default is false), variables may be fixed automatically to active bounds if these are strongly active (i.e., the corresponding multipliers are big) and the center values are also right on these bounds already.
The coordinates to be fixed are redetermined in each call following a descent step or a change of the function. An indicator vector of the variables fixed during the last call can be obtained via the routine get_fixed_active_bounds(). Setting this value to true might improve the performance of the algorithm in some instances but there is no convergence theory. It might be particularly helpful within Lagrangian relaxation if a primal cutting plane approach is used and non-tight inequalities should be eliminated quickly (fixing then indicates large primal slack values as these are the dual variables to the bounds
on the Lagrange mulitpliers). Furthermore, if the value of a variable is fixed to zero, the variable can typically be deleted without affecting the validity of the current cutting model and function values.
@param[in] allow_fixing (bool) @return - 0 on success - != 0 otherwise
ConicBundle.cb_set_aggr_dnormsqr!
— Functioncb_set_aggr_dnormsqr!(self::CBBundleTerminator, sg::Real)
set an upper bound for the dual norm squared of the aggregate at termination (or <=0 if no such bound is desired)
ConicBundle.cb_set_append_to_old!
— Functioncb_set_append_to_old!(self::CBAFTModification, append_only::Bool)
if set to true, no deletions/reassignments may be present or specified in the future, only appensions are allowed
cb_set_append_to_old!(self::CBGroundsetModification, append_only::Bool)
if set to true, no deletions/reassignments may be present or specified in the future, only appensions are allowed
cb_set_append_to_old!(self::CBNNCBoxSupportModification, append_only::Bool)
if set to true, no deletions/reassignments may be present or specified in the future, only appensions are allowed
cb_set_append_to_old!(self::CBPSCAffineModification, append_only::Bool)
if set to true, no deletions/reassignments may be present or specified in the future, only appensions are allowed
cb_set_append_to_old!(self::CBSOCSupportModification, append_only::Bool)
if set to true, no deletions/reassignments may be present or specified in the future, only appensions are allowed
ConicBundle.cb_set_augvalfailslimit!
— Functioncb_set_augvalfailslimit!(self::CBBundleTerminator, al::Integer)
set upper bound on the value returned by BundleTerminatorData::get_sumaugvalfails(), <0 if no limit
ConicBundle.cb_set_bundle_parameters!
— Functioncb_set_bundle_parameters!(self::CBMatrixCBSolver, params::CBBundleParameters, function_::Union{<:CBFunctionObject,Nothing} = nothing)
*@brief Sets the maximum bundlesize and the maximum number of new subgradients added in a bundle update of the cutting model for the specified @a function. The meaning of this routine may differ from standard for predefined special functions with special bundle types.
@param[in] params (const BundleParameters&)
some update parameters for the cutting model, see e.g. ConicBundle::BundleParameters
@param[in] function
if the aggregate subgradient of a particular function is desired,
provide the pointer here, otherwise this referrs to the root function
(if there is only one function to be optimized over, this is this single
function, otherwise it is the sum of functions)
@return
- 0 on success
- != 0 otherwise
cb_set_bundle_parameters!(self::CBAFTModel, param0::CBBundleParameters)
an AFT has no bundle, so it returns 1, see SumBlockModel::setbundleparameters
cb_set_bundle_parameters!(self::CBBoxModel, bp::CBBundleParameters)
see SumBlockModel::setbundleparameters
cb_set_bundle_parameters!(self::CBNNCModel, bp::CBBundleParameters)
if bp is an NNCParametersObject, it is cloned, otherwise the paraemters are copied
cb_set_bundle_parameters!(self::CBPSCModel, bp::CBBundleParameters)
see SumBlockModel::setbundleparameters
cb_set_bundle_parameters!(self::CBSOCModel, bp::CBBundleParameters)
see SumBlockModel::setbundleparameters
cb_set_bundle_parameters!(self::CBSumModel, bp::CBBundleParameters)
if bp is a SumBundleParametersObject, it is cloned, otherwise the paraemters are copied
cb_set_bundle_parameters!(self::CBSumBundleHandler, bp::CBBundleParameters)
sets maxbundlesize and maxmodelsize for all parts; this may be increased internally if the mode and/or the parent handler require this
ConicBundle.cb_set_bundleweight!
— Functioncb_set_bundleweight!(self::CBBundleSolver, bw::Union{<:CBBundleWeight,Nothing})
replace the previous BundleWeight by bw; bw will be deleted when replaced or on destruction of this
ConicBundle.cb_set_cand_minorant!
— Functioncb_set_cand_minorant!(self::CBSumBundleHandler, ft::CBFunctionTask, minorant::CBMinorantPointer)
@brief set the new minorant information of the candidate
Only one minorant can take this position. This is mainly due to that only one primal information can be associated with each minorant. Thus adding must involve compatible primals and this is easiest to guarantee if there is only one inital type at the lowest level. Contributions to parents will not care about the primals.
ConicBundle.cb_set_cbout!
— Functioncb_set_cbout!(self::CBGroundsetModification, incr::Integer = -1)
see CBout::set_out
cb_set_cbout!(self::CBNNCBoxSupportModification, incr::Integer = -1)
see CBout::set_out
cb_set_cbout!(self::CBPSCAffineModification, incr::Integer = -1)
see CBout::set_cbout
cb_set_cbout!(self::CBSOCSupportModification, incr::Integer = -1)
see CBout::set_out
cb_set_cbout!(self::CBNNCBoxSupportFunction, incr::Integer = -1)
see ConicBundle::CBout
cb_set_cbout!(self::CBPSCAffineFunction, incr::Integer = -1)
see ConicBundle::CBout
cb_set_cbout!(self::CBSOCSupportFunction, incr::Integer = -1)
see ConicBundle::CBout
cb_set_cbout!(self::CBQPSolver, incr::Integer = -1)
set output settings
cb_set_cbout!(self::CBLPGroundset, incr::Integer = -1)
output settings
cb_set_cbout!(self::CBUnconstrainedGroundset, incr::Integer = -1)
output settings
cb_set_cbout!(self::CBQPConeModelBlock, incr::Integer = -1)
output settings
cb_set_cbout!(self::CBUQPSumModelBlock, incr::Integer = -1)
do this for all subblocks
cb_set_cbout!(self::CBBundleSolver, incr::Integer)
set output and outputlevel of warnings and errors recursively with CBout
ConicBundle.cb_set_check_correctness!
— Functioncb_set_check_correctness!(self::CBPSCAffineFunction, chk::Bool)
if set to true, ConicBundle employs some additional consistency checks
ConicBundle.cb_set_clock!
— Functioncb_set_clock!(self::CBBundleSolver, myclock::CBClock)
set the external clock to be used for output
ConicBundle.cb_set_data!
— Functioncb_set_data!(self::CBAFTModel, bd::Union{<:CBBundleData,Nothing})
see SumBlockModel::set_data
cb_set_data!(self::CBBoxModel, bd::Union{<:CBBundleData,Nothing})
see SumBlockModel::set_data
cb_set_data!(self::CBNNCModel, bd::Union{<:CBBundleData,Nothing})
see SumBlockModel::set_data
cb_set_data!(self::CBPSCModel, bd::Union{<:CBBundleData,Nothing})
see SumBlockModel::set_data
cb_set_data!(self::CBSOCModel, bd::Union{<:CBBundleData,Nothing})
see SumBlockModel::set_data
cb_set_data!(self::CBSumModel, bd::Union{<:CBBundleData,Nothing})
see SumBlockModel::set_data()
ConicBundle.cb_set_defaults!
— Functioncb_set_defaults!(self::CBMatrixCBSolver)
- @brief Sets default values for algorithmic parameters that are not function specific (e.g., relative precision, weight and weight bounds for the augmentedproblem, etc.)
cb_set_defaults!(self::CBBundleHKWeight)
set default values for 'constant' parameters, e.g. minweight and maxweight
cb_set_defaults!(self::CBBundleRQBWeight)
set default values for 'constant' parameters, e.g. minweight and maxweight
cb_set_defaults!(self::CBUQPSolver)
reset parameters to default values
cb_set_defaults!(self::CBBundleSolver)
resets all parameters to default values and calls BundleTerminator::setdefaults() for *terminator and BundleWeight::setdefaults() for *bundleweight
cb_set_defaults!(self::CBBundleTerminator)
sets the default parameter values
ConicBundle.cb_set_do_yfixing!
— Functioncb_set_do_yfixing!(self::CBBundleSolver, dofix::Bool)
if set to true, the groundset may use a heuristic to decide whether a variable is fixed to one of its bounds (often helps to reduce inner update iterations)
ConicBundle.cb_set_eval_limit!
— Methodcb_set_eval_limit!(self::CBMatrixCBSolver, eval_limit::Integer)
@brief Sets an upper bound on the number of calls to the oracle (use negative numbers for no limit).
If this number is reached, the algorithm will terminate
independently of whether the last step was a descent or a null step. A negative number will be interepreted as no limit.
@param[in] eval_limit (Integer) @return - 0 on success - != 0 otherwise
ConicBundle.cb_set_fun_coeff!
— Functioncb_set_fun_coeff!(self::CBAffineFunctionTransformation)
allows to set the factor for the function
ConicBundle.cb_set_fun_offset!
— Functioncb_set_fun_offset!(self::CBAffineFunctionTransformation)
allows to set the constant offset for the funciton
ConicBundle.cb_set_groundset_id!
— Functioncb_set_groundset_id!(self::CBLPGroundset, gsid::Integer)
sets the groundset_id to the desired value, increasing it is safer here because this is used to indicate changes
cb_set_groundset_id!(self::CBUnconstrainedGroundset, gsid::Integer)
sets the groundset_id to the desired value, increasing it is safer here because this is used to indicate changes
ConicBundle.cb_set_infinity!
— Functioncb_set_infinity!(self::CBMicroseconds, infty::Bool)
use true to regard value as infinity
ConicBundle.cb_set_inner_update_limit!
— Methodcb_set_inner_update_limit!(self::CBMatrixCBSolver, update_limit::Integer)
@brief Set an upper bound on the number of inner updates for the cutting model with primal slacks within one null step (use negative numbers for no limit).
A negative number will be interepreted as no limit, i.e., the updates will be done till a certain precision of the cutting model is achieved. @param[in] update_limit (Integer) @return - 0 on success - != 0 otherwise
ConicBundle.cb_set_lower_bound!
— Methodcb_set_lower_bound!(self::CBMatrixCBSolver, i::Integer, lb::Real)
*@brief Sets lower bound for variable i, use ConicBundle::CBminusinfinity for unbounded from below.
The algorithm may have to adapt the center point aftwards.
In this case the old function values will be marked as outdated and
will be recomputed at the next call to e.g. solve().
@return
- 0 on success
- != 0 otherwise
ConicBundle.cb_set_mL!
— Functioncb_set_mL!(self::CBBundleSolver, in_mL::Real)
set the acceptance level for descent steps (rather don't change this!)
ConicBundle.cb_set_mN!
— Functioncb_set_mN!(self::CBBundleSolver, in_mN::Real)
set the acceptance level for null steps (mL<=in_mN<1., rather don't change this!)
ConicBundle.cb_set_max_Ritzvecs!
— Functioncb_set_max_Ritzvecs!(self::CBPSCAffineFunction, maxv::Integer)
set the maximum number of new Ritzvectors returned by evaluate(); values<1 default to 5
ConicBundle.cb_set_max_bundlesize!
— Methodcb_set_max_bundlesize!(self::CBMatrixCBSolver, max_bundlesize::Integer, function_::Union{<:CBFunctionObject,Nothing} = nothing)
@brief Sets the maximum number of subgradients stored for use in forming the model or determining scaling information, it must be as least as large as max_modelsize (and is increased to this if not)
The meaning of this routine may differ from standard for predefined special functions with special bundle types.
@param[in] max_bundlesize (int)
maximum number of subgradients stored for use in forming the model
@param[in] function
if the aggregate subgradient of a particular function is desired,
provide the pointer here, otherwise this referrs to the root function
(if there is only one function to be optimized over, this is this single
function, otherwise it is the sum of functions)
@return
- 0 on success
- != 0 otherwise
ConicBundle.cb_set_max_modelsize!
— Methodcb_set_max_modelsize!(self::CBMatrixCBSolver, max_modelsize::Integer, function_::Union{<:CBFunctionObject,Nothing} = nothing)
@brief Sets the maximum number of subgradients used in forming the cutting model of the specified @a function
Quite often a very small model, e.g., 2, yields very fast iterations and good progress in time (sometimes at the cost of more evaluations). By limited numerical experience, a significant reduction in the number of evaluations can only be expected if the bundle is large enough to wrap the function rather tightly. Quite frequently, unfortunately, this entails that solving the quadratic subproblems is more expensive than function evaluation. The meaning of this routine may differ from standard for
predefined special functions with special bundle types.
@param[in] max_modelsize (int) maximum number of subgradients to be used in forming the cutting model
@param[in] function if the aggregate subgradient of a particular function is desired, provide the pointer here, otherwise this referrs to the root function (if there is only one function to be optimized over, this is this single function, otherwise it is the sum of functions)
@return - 0 on success - != 0 otherwise
ConicBundle.cb_set_max_new!
— Functioncb_set_max_new!(self::CBCFunction, mn::Integer)
set the maximum number of new subgardients per evaluations
ConicBundle.cb_set_max_updates!
— Functioncb_set_max_updates!(self::CBBundleSolver, mu::Integer)
set the maximum number of Gauss-Seidel iterations until the next evaluations for descent/null step, use negative numbers for infinite, 0 or 1 for at most 1
ConicBundle.cb_set_max_weight!
— Methodcb_set_max_weight!(self::CBMatrixCBSolver, max_weight::Real)
@brief Sets an upper bound on the weight for the quadratic term of the augmented subproblem.
Nonpositive values indicate no bound. The new value shows its effect only at first dynamic change of the weight. @param[in] max_weight (double) @return - 0 on success - != 0 otherwise
ConicBundle.cb_set_maxeigval_factor!
— Functioncb_set_maxeigval_factor!(self::CBPSCVariableMetricSelection, ef::Real)
sets the parameter
ConicBundle.cb_set_maxit!
— Functioncb_set_maxit!(self::CBMinRes, in_maxit::Integer)
set maximum number of iterations
cb_set_maxit!(self::CBPCG, in_maxit::Integer)
set maximum number of iterations
cb_set_maxit!(self::CBPsqmr, in_maxit::Integer)
set maximum number of iterations
ConicBundle.cb_set_maxiter!
— Functioncb_set_maxiter!(self::CBUQPSolver, mi::Integer)
sets the upper bound on the number of interior point iterations (<0 means no bound)
ConicBundle.cb_set_maxweight!
— Functioncb_set_maxweight!(self::CBBundleHKWeight, mw::Real)
<=0 means no bound
cb_set_maxweight!(self::CBBundleRQBWeight, mw::Real)
<=0 means no bound
ConicBundle.cb_set_min_weight!
— Methodcb_set_min_weight!(self::CBMatrixCBSolver, min_weight::Real)
@brief Sets a lower bound on the weight for the quadratic term of the augmented subproblem.
Nonpositive values indicate no bound. The new value shows its effect only at first dynamic change of the weight.
@param[in] min_weight (double)
@return - 0 on success - != 0 otherwise
ConicBundle.cb_set_mineigval_factor!
— Functioncb_set_mineigval_factor!(self::CBPSCVariableMetricSelection, ef::Real)
sets the parameter
ConicBundle.cb_set_minweight!
— Functioncb_set_minweight!(self::CBBundleHKWeight, mw::Real)
<=0 means no bound
cb_set_minweight!(self::CBBundleRQBWeight, mw::Real)
<=0 means no bound
ConicBundle.cb_set_model!
— Functioncb_set_model!(self::CBBundleSolver, bp::Union{<:CBBundleModel,Nothing})
set/change the model that should be optimized over (for the existing groundset and starting point)
ConicBundle.cb_set_model_calls_delete!
— Functioncb_set_model_calls_delete!(self::CBAffineFunctionTransformation, mcd::Bool)
set to true if the model has to delete this, to false if it is destructed elsewhere
ConicBundle.cb_set_modeleps!
— Functioncb_set_modeleps!(self::CBBundleSolver, in_eps::Real)
set the required model precision by @a in_eps (if it is positive)
ConicBundle.cb_set_modelfailslimit!
— Functioncb_set_modelfailslimit!(self::CBBundleTerminator, ml::Integer)
set upper bound on the value returned by BundleTerminatorData::get_summodelfails, <0 if no limit
ConicBundle.cb_set_modification_id!
— Functioncb_set_modification_id!(self::CBMinorantUseData)
returns the modification id also for overwriting
ConicBundle.cb_set_n_latest_minorants!
— Functioncb_set_n_latest_minorants!(self::CBVariableMetricSVDSelection, nlm::Integer)
sets nlatestminorants
ConicBundle.cb_set_new_center!
— Functioncb_set_new_center!(self::CBBundleSolver, yp::Union{<:CBMatrix,Nothing} = nothing)
replace the current center by *yp or, if yp==0, by the default starting point
ConicBundle.cb_set_new_center_point!
— Methodcb_set_new_center_point!(self::CBMatrixCBSolver, center_point::CBMatrix)
@brief Set the starting point/center that will be used in the next call to solve(). Each call to this routine causes an immediate evaluation of all oracles.
@return - 0 on success - != 0 otherwise
ConicBundle.cb_set_next_weight!
— Methodcb_set_next_weight!(self::CBBundleHKWeight, u::Real)
<=0 leaves everything unchanged and does nothing
ConicBundle.cb_set_next_weight!
— Methodcb_set_next_weight!(self::CBBundleRQBWeight, u::Real)
<=0 leaves everything unchanged and does nothing
ConicBundle.cb_set_next_weight!
— Methodcb_set_next_weight!(self::CBMatrixCBSolver, weight::Real)
@brief Sets the weight (>0) to be used in the quadratic term of the next augmented subproblem (may be interpreted as 1./step_size or 1./trustregion-radius).
Independent of whether the weight violates current min- and max-bounds set in set_min_weight() and set_max_weight(), the next model will be computed for this value. Thereafter, however, it will be updated as usual; in particular, it may be truncated by min and max bounds immediately after the first subproblem. In order to guarantee a constant weight (e.g. 1 is frequently a reasonable choice if the automatic default heuristic performs poorly), set the min and max bounds to the same value, too. @param[in] weight (double) @return - 0 on success - != 0 otherwise
ConicBundle.cb_set_nullstep_updates!
— Functioncb_set_nullstep_updates!(self::CBBundleHKWeight, nu::Integer = 0)
set nullstep update strategy (0 ... original, 1 ... none, 2 ... enlarge if subsequence of three norm increases is found
ConicBundle.cb_set_objevallimit!
— Functioncb_set_objevallimit!(self::CBBundleTerminator, ol::Integer)
set upper bound on the value returned by BundleTerminatorData::get_cntobjeval, <0 if no limit
ConicBundle.cb_set_offset!
— Functioncb_set_offset!(self::CBClock, offs::CBMicroseconds)
allows to specify an offset, that will furtheron be added to all time measurements
ConicBundle.cb_set_oldfactor!
— Functioncb_set_oldfactor!(self::CBPSCVariableMetricSelection, of::Real)
sets the parameter
ConicBundle.cb_set_oracle!
— Functioncb_set_oracle!(self::CBPSCVariableMetricSelection, psco::Union{<:CBPSCOracle,Nothing})
sets the oracle pointer to this value (NULL is allowed, but calling addvariablemetric() then results in a WARNING and an error is returned); this is called by PSCModel when installing this
ConicBundle.cb_set_oraclefailslimit!
— Functioncb_set_oraclefailslimit!(self::CBBundleTerminator, ol::Integer)
set upper bound on the value returned by BundleTerminatorData::get_sumoraclefails, <0 if no limit
ConicBundle.cb_set_out!
— Functioncb_set_out!(self::CBMatrixCBSolver, print_level::Integer = 1)
@brief Specifies the output level (out==NULL: no output at all, out!=NULL and level=0: errors and warnings, level>0 increasingly detailed information)
@param[in] out (std::ostream) direct all output to (out). If out==NULL, there will be no output at all.
@param[in] print_level (int)
Output levels for print_level: - 0 ... no output except for errors and warnings - 1 ... line summary after each descent step - >1 ... undocumented and increasingly detailed log information. These higher levels should only be used if requested for debugging purposes.
Example for level 1:
\verbatim 00:00:00.00 endit 1 1 1 563. 563. 39041.188 39043.162 00:00:00.00 endit 2 2 2 563. 559. 38488.165 38490.200 00:00:00.00 endit 3 3 3 56.3 555. 33014.533 33211.856 00:00:00.00 endit 4 4 4 5.63 517. -14306.459 2738.0343 00:00:00.00 endit 5 5 5 4.04 148. -2692.1131 2.2150883 00:00:00.00 endit 6 6 6 4.01 1.29 1.7908952 2.0000581 00:00:00.00 endit 7 7 7 3.95 0.0213 1.9999387 2.0000000 00:00:00.00 _endit 8 8 8 3.95 2.94e-05 2.0000000 2.0000000
Column 1 2 3 4 5 6 7 8 9 \endverbatim - Column 1: computation time in hh:mm:ss.dd, - Column 2: "endit" is convenient for grep and stands for "end of iteration". Iterations with terminationcode()!=0 are marked with "endit". - Column 3: number of descent steps - Column 4: number of descent and null steps. Up to initialization calls and reevaluations, this is the number of evaluation calls to the function oracles from within the bundle method. In the example all calls led to descent steps. - Column 5: number of innermost iterations. It differs from column 5 only in the case of variables with bounds in which case it gives the number of updates of the multipliers for the bounds (or primal slacks in Lagrangean relaxation). Exceedingly high numbers in this column indicate that some variables are constantly at their bounds and it might be possible to improve convergence by deleting them (i.e. set them as constants to this bound and remove the variable). - Column 6: the weight of the quadratic term in the augmented problem. - Column 7: the norm of the aggregate subgradient. If it is small, say below 0.1, then mostly this is good indication that the objective value is close to optimal. - Column 8: the value of the cutting model in the last candidate point. It is always a lower bound on the true function value in this point - Column 9: the objective value in the latest point that led to a descent step, i.e., the point returend by getcenter(). Whenever terminationcode() returns 0 this is also the objective value of the latest evaluation call to the function oracles and the value in the center point of the next iteration.
cb_set_out!(self::CBAFTModification, print_level::Integer = 1)
see CBout::set_out
cb_set_out!(self::CBGroundsetModification, print_level::Integer = 1)
see CBout::set_out
cb_set_out!(self::CBNNCBoxSupportModification, print_level::Integer = 1)
see CBout::set_out
cb_set_out!(self::CBPSCAffineModification, print_level::Integer = 1)
see CBout::set_out
cb_set_out!(self::CBSOCSupportModification, print_level::Integer = 1)
see CBout::set_out
cb_set_out!(self::CBNNCBoxSupportFunction, pril::Integer = 1)
see ConicBundle::CBout
cb_set_out!(self::CBPSCAffineFunction, pril::Integer = 1)
see ConicBundle::CBout
cb_set_out!(self::CBSOCSupportFunction, pril::Integer = 1)
see ConicBundle::CBout
cb_set_out!(self::CBAFTModel, pril::Integer = 1)
set output and outputlevel of warnings and errors recursively, see CBout
cb_set_out!(self::CBBoxModel, pril::Integer = 1)
set output and outputlevel of warnings and errors recursively, see CBout
cb_set_out!(self::CBNNCModel, pril::Integer = 1)
set output and outputlevel of warnings and errors recursively, see CBout
cb_set_out!(self::CBPSCModel, pril::Integer = 1)
set output and outputlevel of warnings and errors recursively, see CBout
cb_set_out!(self::CBSOCModel, pril::Integer = 1)
set output and outputlevel of warnings and errors recursively, see CBout
cb_set_out!(self::CBSumModel, pril::Integer = 1)
set output and outputlevel of warnings and errors recursively, see CBout
cb_set_out!(self::CBUQPSumModelBlock, pril::Integer = 1)
do this for all subblocks
cb_set_out!(self::CBMinRes, in_print_level::Integer = 1)
set output stream and level of detail of log output (for debugging)
cb_set_out!(self::CBPCG, in_print_level::Integer = 1)
set output stream and level of detail of log output (for debugging)
cb_set_out!(self::CBPsqmr, in_print_level::Integer = 1)
set output stream and level of detail of log output (for debugging)
cb_set_out!(self::CBBundleSolver, pril::Integer = 1)
set output and outputlevel of warnings and errors recursively, see CBout
ConicBundle.cb_set_parent_information!
— Functioncb_set_parent_information!(self::CBSumBundleHandler, parent_sbh::Union{<:CBSumBundleHandler,Nothing}, aft::Union{<:CBAffineFunctionTransformation,Nothing}, in_mode::CBMode)
@brief sets a parent handler, an aft and prepares for the next inmode. If the respective pointers are null and inmode is active, a part in child mode is changed to root.
If the parent pointer is not null, the routine calls alignbundle in order to match the existing bundle to the parent's. Therefore, if the parent pointer is not null and the parent has a positive bundle size, setparent_information may only be called if all parts that have contributors also have a bundle containing an aggregate, i.e. they need a bundlesize of at least one.
If in_mode==root, the handler has to perpare the sumbundle to serve as root.
If in_mode==inactive, the handler has to remove any relevant contributions and to deactivate the sumbundle
If inmode==child, the action depends on the the current mode. If the mode is child or root already, no changes are required. In particular, if the mode is root and the inmode child is desired, this needs to be achieved later by a call to addcontributions() (once all bundle components have been collected). If the current mode is inactive, the sumbundle's mode is changed to root and again an addcontributions() will be needed to change that to child.
ConicBundle.cb_set_point!
— Functioncb_set_point!(self::CBUQPConeModelBlock, qp_x::CBMatrix, qp_y::CBMatrix, alpha::Real)
x,y,z is the new point and has to be stored, alpha is the step size used in the step, it is passed so thatthe block can take the same step for internal variables if needed.
cb_set_point!(self::CBUQPSumModelBlock, qp_x::CBMatrix, qp_y::CBMatrix, alpha::Real)
do this for all subblocks
ConicBundle.cb_set_primal!
— Functioncb_set_primal!(self::CBMinorant, param0::Union{<:CBPrimalData,Nothing})
if the minorant is generated by PrimalData and this should be aggregated along, insert a heap object of it here (see PrimalData)
ConicBundle.cb_set_prox!
— Functioncb_set_prox!(self::CBMatrixCBSolver, proxp::Union{<:CBBundleProxObject,Nothing})
@brief For variable metric install the BundleProxObject pointed to; the object is passed to the solver who will delete it on termination or when replaced
@param[in] proxp (BundleProxObject*) replace the current BundleProxObject by this object on the heap;
NULL is allowed and results in the default choice; the object pointed to will be deleted by the solver
@return - 0 on success - != 0 otherwise
cb_set_prox!(self::CBBundleSolver, bsp::Union{<:CBBundleProxObject,Nothing})
set the proximal term by replacing BundleProxObject with bsp, the latter is deleted when replaced or on destruction of this
ConicBundle.cb_set_prox_diagonal!
— Functioncb_set_prox_diagonal!(self::CBBundleSolver, insc::CBMatrix)
set the prox term to the given diagonal matrix
ConicBundle.cb_set_qp_solver!
— Functioncb_set_qp_solver!(self::CBMatrixCBSolver, qpparams::Union{<:CBQPSolverParametersObject,Nothing}, newqpsolver::Union{<:CBQPSolverObject,Nothing} = nothing)
@brief Set parameters for the internal QP solver, possibly after first exchanging the solver with a new one
The objects passed need to be heap objects; their ownership is transferred to the bundle code and they will be deleted there. The pointers may be null, in which case nothing is done for this object
@param[in] qpparams (QPSolverParametersObject*)
@param[in] newqpsolver (QPSolverObject*)
@return - 0 on success - != 0 otherwise
ConicBundle.cb_set_qp_solver_parameters!
— Functioncb_set_qp_solver_parameters!(self::CBLPGroundset, param0::Union{<:CBQPSolverParametersObject,Nothing})
set parameters for the QP_Solver
cb_set_qp_solver_parameters!(self::CBUnconstrainedGroundset, param0::Union{<:CBQPSolverParametersObject,Nothing})
set parameters for the QP_Solver
ConicBundle.cb_set_qp_xstart!
— Functioncb_set_qp_xstart!(self::CBUQPConeModelBlock, x_start_index::Integer)
the indices of the local variables correspond to the indices of the qp variables x and z starting with this index; returns 0 on success, 1 on failure
cb_set_qp_xstart!(self::CBUQPSumModelBlock, x_start_index::Integer)
set the starting index of x also for all subblocks
ConicBundle.cb_set_qp_ystart!
— Functioncb_set_qp_ystart!(self::CBUQPConeModelBlock, y_start_index::Integer)
the indices of the local variables correspond to the indices of the qp variables y starting with this index; returns 0 on success, 1 on failure
cb_set_qp_ystart!(self::CBUQPSumModelBlock, y_start_index::Integer)
set the starting index of y also for all subblocks
ConicBundle.cb_set_qpfailslimit!
— Functioncb_set_qpfailslimit!(self::CBBundleTerminator, ql::Integer)
set upper bound on the value returned by BundleTerminatorData::get_sumqpfails, <0 if no limit
ConicBundle.cb_set_qpsolver!
— Functioncb_set_qpsolver!(self::CBLPGroundset, qpparams::Union{<:CBQPSolverParametersObject,Nothing}, qpsolver::Union{<:CBQPSolverObject,Nothing} = nothing)
Set the qp solver's parameters to qpparams (if not null); if the second argument qpsolver is also given, the old solver is first discarded and replaced by this new solver and then the parameters are set (if given). Any object passed here will be owned and deleted by *this. For correct continuaton a new qpsolver needs to have the same feasible set as the current solver but this must be ensured by the caller.
ConicBundle.cb_set_recomplimit!
— Functioncb_set_recomplimit!(self::CBBundleTerminator, rl::Integer)
set upper bound on the value returned by BundleTerminatorData::get_sumrecomp, <0 if no limit
ConicBundle.cb_set_scalefactor!
— Functioncb_set_scalefactor!(self::CBCoeffmatInfo, sf::Real)
sets the scale factor
ConicBundle.cb_set_selection_method!
— Functioncb_set_selection_method!(self::CBPSCVariableMetricSelection, sm::Integer)
sets selection_method
cb_set_selection_method!(self::CBVariableMetricSVDSelection, sm::Integer)
sets selection_method
ConicBundle.cb_set_skip_extension!
— Functioncb_set_skip_extension!(self::CBPSCAffineModification, skip::Bool)
- @brief if this time no extension is possible for newly added variables with the availabel generating primal, set this to true;
ConicBundle.cb_set_starting_point!
— Functioncb_set_starting_point!(self::CBLPGroundset, vec::CBMatrix)
stores the a new starting point irrespective of whether it is feasible or not and returns 0 if it feasible, 1 if it is infeasible
cb_set_starting_point!(self::CBUnconstrainedGroundset, vec::CBMatrix)
stores the a new starting point irrespective of whether it is feasible or not and returns 0 if it feasible, 1 if it is infeasible
ConicBundle.cb_set_subspace!
— Functioncb_set_subspace!(self::CBQPKKTSubspaceHPrecond, insubspace::CBMatrix)
if the method admits this, let the subspace be chosen externally
ConicBundle.cb_set_sumbundle!
— Functioncb_set_sumbundle!(self::CBMatrixCBSolver, use_sumbundle::Bool, n_local_models::Integer = -1, bundle_parameters::Union{<:CBBundleParameters,Nothing} = nothing, strategy::Integer = 1)
@brief Starts/ends the use of a common SumBundle of the given bundlesize with a heuristic rule for selecting up to nlocal_models in each bundle iteration
If the function is the sum of many functions, having a local model for every one of them may result in a huge quadratic subproblem. It may then be better to
form a common model of most of the functions, where a heuristic dynamically selects a few of the functions, for which a local model seems worth while. Whether such a common model should be used, how many subgradients it should contain, and how many local models are to be selected at most are the parameters set here.
Setting these parameters only has an effect if bundle models of functions are present. If further functions are added later, the call should be repeated.
This interface provides a simpler access to the SumBundle features by using some default parameter choices that could be set separately in setbundleparameters() and setsumbundleparameters() in a refined way.
@param[in] use_sumbundle (bool) use value true to switch the sumbundle on, use value false to switch it off
@param[in] nlocalmodels (int) upper bound on the number of local models to be used on top of the sumbundle's model, negative values correspond to no upper bound and all functions may have local models
@param[in] bundle_parameters (const BundleParameters*) the maximum number of subgradients to be used in forming the SumBundle model, values <=1 are set to 2;
@param[in] strategy (int) this is currently in experimental stage and allows to choose among some internal sumbundle strategies (currently 0,1,2,11 are available)
@return - 0 on success - != 0 otherwise
ConicBundle.cb_set_sumbundle_parameters!
— Functioncb_set_sumbundle_parameters!(self::CBMatrixCBSolver, params::CBSumBundleParametersObject, function_::Union{<:CBFunctionObject,Nothing} = nothing)
*@brief Specifies the behavior of the model (of the specified function) concerning requests to join or start a SumBundle that subsumes several models instead of providing a separate model for each funciton.
The abstract interface for these Parameters is specified in
SumBundleParametersObject, a concrete implementation is
SumBundleParameters. Besides the usual BundleParameters
the new main parameter is specified in
SumBundleParametersObject::setacceptablemode(), see there.
@param[in] params (const BundleParameters&)
some update parameters for the cutting model, see e.g. ConicBundle::BundleParameters
@param[in] function
if the aggregate subgradient of a particular function is desired,
provide the pointer here, otherwise this referrs to the root function
(if there is only one function to be optimized over, this is this single
function, otherwise it is the sum of functions)
@return
- 0 on success
- != 0 otherwise
ConicBundle.cb_set_term_relprec!
— Methodcb_set_term_relprec!(self::CBMatrixCBSolver, term_relprec::Real)
@brief Sets the relative precision requirements for successful termination (default 1e-5).
@param[in] termrelprec (double) The algorithm stops with termination code 1, if predicted progress for the next step is less than termrelprec times absolute function value plus one.
@return - 0 on success - != 0 otherwise
ConicBundle.cb_set_termbounds!
— Functioncb_set_termbounds!(self::CBUQPSolver, lb::Real, ub::Real)
sets the termination lower and upper bounds
ConicBundle.cb_set_termeps!
— Functioncb_set_termeps!(self::CBUQPSolver, te::Real)
sets the termination precision
cb_set_termeps!(self::CBBundleTerminator, teps::Real)
set the termination precision (>0!)
ConicBundle.cb_set_terminator!
— Functioncb_set_terminator!(self::CBBundleSolver, bt::Union{<:CBBundleTerminator,Nothing})
replace the previous BundleTerminator by bt; bt will be deleted when replaced or on destruction of this
ConicBundle.cb_set_time_limit!
— Functioncb_set_time_limit!(self::CBMatrixCBSolver, time_limit::Integer)
@brief Set an upper bound on the number of seconds (user time, use negative numbers for no limit)
@param[in] time_limit (Integer) @return - 0 on success - != 0 otherwise
ConicBundle.cb_set_timelimit!
— Functioncb_set_timelimit!(self::CBBundleTerminator, cp::Union{<:CBClock,Nothing}, tl::CBMicroseconds)
set cp==0 for no timelimit, otherwise specify clock and microseconds
ConicBundle.cb_set_tol!
— Functioncb_set_tol!(self::CBSparsemat, t::Real)
set tolerance for recognizing zero values to t
cb_set_tol!(self::CBSparsesym, t::Real)
set tolerance for recognizing zero values to t
ConicBundle.cb_set_upper_bound!
— Methodcb_set_upper_bound!(self::CBMatrixCBSolver, i::Integer, ub::Real)
*@brief Sets upper bound for variable i, use ConicBundle::CBplusinfinity for unbounded from below.
The algorithm may have to adapt the center point aftwards.
In this case the old function values will be marked as outdated and
will be recomputed at the next call to e.g. solve().
@return
- 0 on success
- != 0 otherwise
ConicBundle.cb_set_use_linval!
— Functioncb_set_use_linval!(self::CBBundleSolver, ul::Bool)
if set to true, the value of the aggregate in the candidate is used for deciding on null or descent step, otherwise the model value
ConicBundle.cb_set_use_yfixing!
— Functioncb_set_use_yfixing!(self::CBLPGroundset, uyf::Bool)
set to true to switch on the cooridinate fixing heuristic (only constrained cases)
cb_set_use_yfixing!(self::CBUnconstrainedGroundset, uyf::Bool)
set to true to switch on the cooridinate fixing heuristic (only constrained cases)
ConicBundle.cb_set_variable_metric!
— Methodcb_set_variable_metric!(self::CBBundleSolver, ds::Integer)
0 ... use no scaling, 1 ... use a scaling heuristic, 2 ... also allow groundset to influence the scaling so as to favor feasibility,
ConicBundle.cb_set_variable_metric!
— Methodcb_set_variable_metric!(self::CBMatrixCBSolver, do_variable_metric::Integer)
@brief Use a variable metric heuristic or switch off general metrics alltogether. (variable metric resets the quadratic term e.g. to some diagonal matrix, switching it off resets the quadratic term to the identity times the weight)
@param[in] dovariablemetric (int) - 0 switch off the scaling heuristic - 1 use a diagonal scaling heuristic - 2 use a diagonal scaling heuristic combined with one for the bounds - 3 use a low rank scaling heuristic - 4 use a low rank scaling heuristic combined with a diagonal term - 5 use a dense scaling heuristic
@return - 0 on success - != 0 otherwise
ConicBundle.cb_set_variable_metric_selection!
— Functioncb_set_variable_metric_selection!(self::CBLPGroundset, vms::Union{<:CBVariableMetricSelection,Nothing} = nothing)
delete old selector and set a new one (0 is allowed resulting in no local selector)
cb_set_variable_metric_selection!(self::CBPSCModel, vms::Union{<:CBVariableMetricSelection,Nothing} = nothing)
delete old selector and set a new one (0 is allowed resulting in no local selector); if vms casts to PSCVariableMetricSelection*, the oracle is immediately set to this one
ConicBundle.cb_set_weight_update!
— Functioncb_set_weight_update!(self::CBMatrixCBSolver, bw::Union{<:CBBundleWeight,Nothing})
@brief Replaces the internal update routine for choosing the weight used in the proximal term; input NULL reinstalls the default routine.
The BundleWeight class instance pointed to will be deleted on construction, i.e., ownership is passe over to the solver. @param[in] bw replace internal update routine by bw, value 0 reinstalls the default routine @return - 0 on success - != 0 otherwise
ConicBundle.cb_set_weightu!
— Functioncb_set_weightu!(self::CBBundleDenseTrustRegionProx, in_weightu::Real)
set the weight of the proximal term
cb_set_weightu!(self::CBBundleDiagonalTrustRegionProx, in_weightu::Real)
set the weight of the proximal term
cb_set_weightu!(self::CBBundleDLRTrustRegionProx, in_weightu::Real)
sets the next weight
cb_set_weightu!(self::CBBundleIdProx, in_weightu::Real)
set the weight of the proximal term
cb_set_weightu!(self::CBBundleLowRankTrustRegionProx, in_weightu::Real)
sets the next weight
ConicBundle.cb_set_yfixed!
— Functioncb_set_yfixed!(self::CBLPGroundset)
if not NULL (iff getuseyfixing()==false) returns the vector yfixed with yfixed(i)=0 if not fixed, =1 is fixed already, =2 if newly fixed
cb_set_yfixed!(self::CBUnconstrainedGroundset)
if not NULL (iff getuseyfixing()==false) returns the vector yfixed with yfixed(i)=0 if not fixed, =1 is fixed already, =2 if newly fixed
ConicBundle.cb_shift_diag!
— Functioncb_shift_diag!(self::CBSymmatrix, s::Real)
shifts the diagonal by s, i.e., (*this)(i,i)+=s for all i
ConicBundle.cb_shuffle!
— Functioncb_shuffle!(self::CBMatrix, random_generator::Union{<:CBGB_rand,Nothing} = nothing)
shuffle the elements randomly (does not change dimensions)
cb_shuffle!(self::CBIndexmatrix, random_generator::Union{<:CBGB_rand,Nothing} = nothing)
shuffle the elements randomly (does not change dimensions)
ConicBundle.cb_sign
— Functioncb_sign(A::CBMatrix, tol::Real)
returns a matrix with elements (i,j)=sign((*this)(i,j)) for all i,j using ::sign(double,double)
cb_sign(A::CBIndexmatrix)
return a matrix of the same size as A with (i,j)=sign(A(i,j)) for all i,j, see also CHMatrixClasses::sign()
ConicBundle.cb_sign!
— Functioncb_sign!(self::CBMatrix, tol::Real = 1e-12)
sets (this)(i,j)=sign((this)(i,j),tol) for all i,j using ::sign(double,double) and returns *this
cb_sign!(self::CBIndexmatrix)
using ::sign assign (this)(i,j)=sign((this)(i,j)) for all i,j
ConicBundle.cb_skron
— Functioncb_skron(A::CBSymmatrix, B::CBSymmatrix, alpha::Real, add::Bool, startindex_S::Integer)
the symmetric Kronecker product, defined via (A skron B)svec(C)=(BCA'+ACB')/2; sets or adds (if add==true) the symmetric matrix a*(A skron B) into S starting at startindexS; if add==false and startindexS<0, S is initialzed to the correct size
cb_skron(A::CBSymmatrix, B::CBSymmatrix, S::CBSymmatrix, a::Real, add::Bool, startindex_S::Integer)
def symmetric Kronecker product (A skron B)svec(C)=(BCA'+ACB')/2; sets S=alpha(A skron B) or S=... (if add==true) possibly shifted to the block starting at startindexS; if add==false and startindexS<0, S is initialzed to the correct size
ConicBundle.cb_solve!
— Methodcb_solve!(self::CBBundleSolver, maxsteps::Integer = 0, stop_at_descent_steps::Bool = false)
execute at most maxsteps iterations of the bundle method stopping before if termination occurs or stopatdescent_steps==true and a descent step occurs; maxsteps<=0 indicates no bound on the steps
ConicBundle.cb_solve!
— Methodcb_solve!(self::CBMatrixCBSolver, maxsteps::Integer = 0, stop_at_descent_steps::Bool = false)
@brief solves or does a prescribed number of iterations
Bundle methods solve a problem by a sequence of so called descent steps that actually bring progress by moving from the current "center point" to a new center with better objective. A descent step may consist of several function evaluations (null steps), that lead to no immediate progress but mainly improve a cutting model of the objective function close to the current center point. A minimizer to the model is accepted as descent step if the function value at this point satisfies a sufficient decrease criterion in comparison to the decrease predicted by the model. Having found a descent step, the next center is automatically shifted to this successful candidate. Termination criteria may stop the process of seeking for a descent step, in which case the current center is kept and the routine termination_code() returns the termination code.
Restarting, after each descent step, the bundle method from scratch with the new center as starting point does not endanger convergence. Therefore, a descent step is the smallest unit, after which user interaction can take place safely. To allow this there
is a flag stopatdescent_steps that will cause the code to return after the next descent step.
If you know what your are doing, you may also use the input parameter maxsteps to force the algorithm to return after at most maxsteps null steps. Calling solve again without any intermediate problem configurations will then simply continue the process where it stopped and convergence is save. During null steps one may not decrease the weight or delete nonzero variables of the center or the current candidate!
In a Lagrangean relaxation cutting plane approach one may want to separate and enlarge the dimension after a certain number of null steps. In this case the code will try to preserve the model, given appropriate subgradient extension routines have been provided. If the model cannot be extended, it has to be discarded (if subgradient extension is not successful this is done automatically), and the algorithm will be restarted from the current center point. @param[in] maxsteps (int) if maxsteps>0 the code returns after at most so many null steps @param[in] stop_at_descent_steps (int) if true the code also returns whenever a descent step occured @return - 0 on success - != 0 otherwise
ConicBundle.cb_solve!
— Methodcb_solve!(self::CBQPSolver, Hp::Union{<:CBBundleProxObject,Nothing}, c::CBMatrix, gamma::Real, lowerbound::Real, upperbound::Real, relprec::Real, skip_factor::Real)
solve the quadratic problem for the given cost function and precision (without cutting model, usually for finding feasible starting points)
ConicBundle.cb_solve!
— Methodcb_solve!(self::CBUQPSolver, Q::CBSymmatrix, c::CBMatrix, offset::Real)
solve the QP for this cost function from scratch
ConicBundle.cb_solve_constrsys!
— Functioncb_solve_constrsys!(self::CBQPConeModelBlock, ABchol::CBSymmatrix, LinvABrhs::CBMatrix, LinvABsol::CBMatrix, startindex_model::Integer, Crhs_and_sol::CBMatrix, startindex_constraints::Integer)
- @brief given the Cholesky factorization LL' of minus the blocks A and B (contraints on design variables and Bundle-modelx) and LinvABrhs, solve for the local constraints C and add the new contribution of tracedual*LinvTrace to LinvABsol; store the tracedual in Crhsandsol but not yet locally (this will be done by computed_step() ).
cb_solve_constrsys!(self::CBQPSumModelBlock, ABchol::CBSymmatrix, LinvABrhs::CBMatrix, LinvABsol::CBMatrix, startindex_model::Integer, Crhs_and_sol::CBMatrix, startindex_constraints::Integer)
- @brief given the Cholesky factorization LL' of minus the blocks A and B (contraints on design variables and Bundle-modelx) and LinvABrhs, solve for the local constraints C and add the new contribution of tracedual*LinvTrace to LinvABsol; store the tracedual in Crhsandsol but not yet locally (this will be done by computed_step() ).
ConicBundle.cb_sortindex
— Functioncb_sortindex(vec::CBMatrix, nondecreasing::Bool)
returns an Indexmatrix ind so that vec(ind(0))<=vec(ind(1))<=...<=vec(ind(vec.dim()-1)) (vec may be rectangular, set nondecreasing=false for opposite order)
cb_sortindex(vec::CBMatrix, ind::CBIndexmatrix, nondecreasing::Bool)
sets ind so that vec(ind(0))<=vec(ind(1))<=...<=vec(ind(vec.dim()-1)) (vec may be rectangular, set nondecreasing=false for opposite order)
cb_sortindex(vec::CBIndexmatrix, nondecreasing::Bool)
returns an Indexmatrix ind so that vec(ind(0))<=vec(ind(1))<=...<=vec(ind(vec.dim()-1)) (vec may be rectangular, set nondecreasing=false for opposite order)
cb_sortindex(vec::CBIndexmatrix, ind::CBIndexmatrix, nondecreasing::Bool)
sets ind so that vec(ind(0))<=vec(ind(1))<=...<=vec(ind(vec.dim()-1)) (vec may be rectangular, set nondecreasing=false for opposite order)
ConicBundle.cb_sparse
— Functioncb_sparse(self::CBCMgramdense)
returns 0 if not sparse, otherwise 1
cb_sparse(self::CBCMgramdense, param0::CBIndexmatrix, param1::CBIndexmatrix, param2::CBMatrix, param3::Real)
returns 0 if not sparse. If it is sparse it returns 1 and the nonzero structure in I,J and v, where v is multiplied by d. Only the upper triangle (including diagonal) is delivered
cb_sparse(self::CBCMgramsparse)
returns 0 if not sparse, otherwise 1
cb_sparse(self::CBCMgramsparse, param0::CBIndexmatrix, param1::CBIndexmatrix, param2::CBMatrix, param3::Real)
returns 0 if not sparse. If it is sparse it returns 1 and the nonzero structure in I,J and v, where v is multiplied by d. Only the upper triangle (including diagonal) is delivered
cb_sparse(self::CBCMgramsparse_withoutdiag)
returns 0 if not sparse, otherwise 1
cb_sparse(self::CBCMgramsparse_withoutdiag, param0::CBIndexmatrix, param1::CBIndexmatrix, param2::CBMatrix, param3::Real)
returns 0 if not sparse. If it is sparse it returns 1 and the nonzero structure in I,J and v, where v is multiplied by d. Only the upper triangle (including diagonal) is delivered
cb_sparse(self::CBCMlowrankdd)
returns 0 if not sparse, otherwise 1
cb_sparse(self::CBCMlowrankdd, param0::CBIndexmatrix, param1::CBIndexmatrix, param2::CBMatrix, param3::Real)
returns 0 if not sparse. If it is sparse it returns 1 and the nonzero structure in I,J and val, where val is multiplied by d. Only the upper triangle (including diagonal) is delivered
cb_sparse(self::CBCMlowranksd)
returns 0 if not sparse, otherwise 1
cb_sparse(self::CBCMlowranksd, param0::CBIndexmatrix, param1::CBIndexmatrix, param2::CBMatrix, param3::Real)
returns 0 if not sparse. If it is sparse it returns 1 and the nonzero structure in I,J and val, where val is multiplied by d. Only the upper triangle (including diagonal) is delivered
cb_sparse(self::CBCMlowrankss)
returns 0 if not sparse, otherwise 1
cb_sparse(self::CBCMlowrankss, param0::CBIndexmatrix, param1::CBIndexmatrix, param2::CBMatrix, param3::Real)
returns 0 if not sparse. If it is sparse it returns 1 and the nonzero structure in I,J and val, where val is multiplied by d. Only the upper triangle (including diagonal) is delivered
cb_sparse(self::CBCMsingleton)
returns 0 if not sparse, otherwise 1
cb_sparse(self::CBCMsingleton, I::CBIndexmatrix, J::CBIndexmatrix, v::CBMatrix, d::Real = 1.)
returns 0 if not sparse. If it is sparse it returns 1 and the nonzero structure in I,J and v, where v is multiplied by d. Only the upper triangle (including diagonal) is delivered
cb_sparse(self::CBCMsymdense)
returns 0 if not sparse, otherwise 1
cb_sparse(self::CBCMsymdense, param0::CBIndexmatrix, param1::CBIndexmatrix, param2::CBMatrix, param3::Real)
returns 0 if not sparse. If it is sparse it returns 1 and the nonzero structure in I,J and v, where v is multiplied by d. Only the upper triangle (including diagonal) is delivered
cb_sparse(self::CBCMsymsparse)
returns 0 if not sparse, otherwise 1
cb_sparse(self::CBCMsymsparse, I::CBIndexmatrix, J::CBIndexmatrix, val::CBMatrix, d::Real = 1.)
returns 0 if not sparse. If it is sparse it returns 1 and the nonzero structure in I,J and val, where val is multiplied by d. Only the upper triangle (including diagonal) is delivered
ConicBundle.cb_sparseDiag
— Functioncb_sparseDiag(A::CBMatrix, tol::Real)
forms a sparse symmetrix matrix having vector A on its diagonal
ConicBundle.cb_sparse_argument_changes
— Functioncb_sparse_argument_changes(self::CBAffineFunctionTransformation)
- @brief returns true if argtrafo influences at most two thirds of the entries of localargument
ConicBundle.cb_sparsemult
— Functioncb_sparsemult(self::CBSparsesym, A::CBMatrix)
compute (this)A and return the result in a Sparsemat
ConicBundle.cb_sparsify!
— Functioncb_sparsify!(self::CBMinorant, tol::Real = CB_minorant_zero_tolerance, sparsity_ratio::Real = CB_minorant_sparsity_ratio)
converts to sparse format with zeros of absolut value at most tol*(fabs(offset)+1) if the given ratio of elements is zero in relation to the maximum nonzero index
ConicBundle.cb_sqr
— Functioncb_sqr(A::CBMatrix)
returns a matrix with elements (i,j)=sqr((*this)(i,j)) for all i,j
ConicBundle.cb_sqr!
— Functioncb_sqr!(self::CBMatrix)
sets (this)(i,j)=sqr((this)(i,j)) for all i,j and returns *this
ConicBundle.cb_sqrt
— Functioncb_sqrt(A::CBMatrix)
returns a matrix with elements (i,j)=sqrt((*this)(i,j)) for all i,j
ConicBundle.cb_sqrt!
— Functioncb_sqrt!(self::CBMatrix)
sets (this)(i,j)=sqrt((this)(i,j)) for all i,j and returns *this
ConicBundle.cb_start!
— Functioncb_start!(self::CBClock)
read current time, all further time measurements will be in relation to this time
ConicBundle.cb_start_augmodel!
— Functioncb_start_augmodel!(self::CBSumBundleHandler, bp::CBQPModelDataPointer, cand_id::Integer, cand_y::CBMatrix, indices::Union{<:CBIndexmatrix,Nothing}, ft::CBFunctionTask)
start the augmented model block for FunctionTask ft if to be handled here and increase xdim correspondingly; if there are several, use startaugmodel(QPSumBlock&,Integer&) instead
cb_start_augmodel!(self::CBSumBundleHandler, bp::CBQPModelDataPointer, sumblock::CBQPSumModelDataObject, cand_id::Integer, cand_y::CBMatrix, indices::Union{<:CBIndexmatrix,Nothing} = nothing)
add augmented model blocks to the sumblock for parts to be handled here and increase xdim correspondingly
ConicBundle.cb_start_modification!
— Functioncb_start_modification!(self::CBLPGroundset)
propagates the call to QPSolverObject::QPstart_modification() of the current qpsolver
cb_start_modification!(self::CBUnconstrainedGroundset)
return a new modification object on the heap that is initialized for modification of *this
ConicBundle.cb_start_sumaugmodel!
— Functioncb_start_sumaugmodel!(self::CBAFTModel, blockp::CBQPModelDataPointer, cand_id::Integer, cand_y::CBMatrix, indices::Union{<:CBIndexmatrix,Nothing} = nothing, bh::Union{<:CBSumBundleHandler,Nothing} = nothing, mode::CBMode = cbm_inactive, aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
see BundleModel::startaugmodel() for the first four parameters; for the others see sumbundlecontribution()
cb_start_sumaugmodel!(self::CBSumModel, blockp::CBQPModelDataPointer, cand_id::Integer, cand_y::CBMatrix, indices::Union{<:CBIndexmatrix,Nothing} = nothing, bh::Union{<:CBSumBundleHandler,Nothing} = nothing, mode::CBMode = cbm_inactive, aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
see BundleModel::startaugmodel() for the first four parameters; for the others see sumbundlecontribution()
ConicBundle.cb_starting_x!
— Functioncb_starting_x!(self::CBUQPConeModelBlock, qp_x::CBMatrix)
generate a strictly feasible primal starting point, store it in the qpx_range of x; returns 0 on success, 1 on failure
cb_starting_x!(self::CBUQPSumModelBlock, qp_x::CBMatrix)
get the starting x of all subblocks
ConicBundle.cb_starting_y!
— Functioncb_starting_y!(self::CBUQPConeModelBlock, qp_y::CBMatrix, qp_Qx::CBMatrix, qp_c::CBMatrix)
generate a strictly feasible dual starting point, store it in the qpyrange of y, x is fixed already by a previous call to startingx and Qx=Q*x; returns 0 on success, 1 on failure
cb_starting_y!(self::CBUQPSumModelBlock, qp_y::CBMatrix, qp_Qx::CBMatrix, qp_c::CBMatrix)
get the starting y information of all subblocks
ConicBundle.cb_store_SOCvec!
— Functioncb_store_SOCvec!(self::CBSOCData, SOCvec::CBMatrix)
if maxoldminorants > 0, it adds the SOCvec cyclically to SOCvecs keeping maxoldminorants of them
ConicBundle.cb_store_svec
— Functioncb_store_svec(self::CBSymmatrix, dp::Union{<:AbstractVector{Cdouble},Nothing}, d::Real = 1.)
store in the form of an svec in the real array (or matrix)
ConicBundle.cb_subassign!
— Functioncb_subassign!(self::CBMatrix, vecrow::CBIndexmatrix, veccol::CBIndexmatrix, A::CBMatrix)
assigns A to a submatrix of this, (this)(vecrow(i),veccol(j))=A(i,j) for 0<=i<vecrow.dim(), 0<=j<veccol.dim()
cb_subassign!(self::CBMatrix, vec::CBIndexmatrix, A::CBMatrix)
assigns vector A to a subvector of this, (this)(vec(i))=A(i) for 0<=i<vec.dim(), *this, vec, and A may be rectangular matrices, their dimesions are not changed, returns *this
cb_subassign!(self::CBIndexmatrix, vecrow::CBIndexmatrix, veccol::CBIndexmatrix, A::CBIndexmatrix)
assigns A to a submatrix of this, (this)(vecrow(i),veccol(j))=A(i,j) for 0<=i<vecrow.dim(), 0<=j<veccol.dim()
cb_subassign!(self::CBIndexmatrix, vec::CBIndexmatrix, A::CBIndexmatrix)
assigns vector A to a subvector of this, (this)(vec(i))=A(i) for 0<=i<vec.dim(), *this, vec, and A may be rectangular matrices, their dimesions are not changed, returns *this
ConicBundle.cb_subspace
— Functioncb_subspace(self::CBCMgramdense, P::CBMatrix)
delivers a new object on the heap corresponding to the matrix P^T(*this)P, the caller is responsible for deleting the object
cb_subspace(self::CBCMgramsparse, P::CBMatrix)
delivers a new object on the heap corresponding to the matrix P^T(*this)P, the caller is responsible for deleting the object
cb_subspace(self::CBCMgramsparse_withoutdiag, P::CBMatrix)
delivers a new object on the heap corresponding to the matrix P^T(*this)P, the caller is responsible for deleting the object
cb_subspace(self::CBCMlowrankdd, P::CBMatrix)
delivers a new object on the heap corresponding to the matrix P^T(*this)P, the caller is responsible for deleting the object
cb_subspace(self::CBCMlowranksd, P::CBMatrix)
delivers a new object on the heap corresponding to the matrix P^T(*this)P, the caller is responsible for deleting the object
cb_subspace(self::CBCMlowrankss, P::CBMatrix)
delivers a new object on the heap corresponding to the matrix P^T(*this)P, the caller is responsible for deleting the object
cb_subspace(self::CBCMsingleton, P::CBMatrix)
delivers a new object on the heap corresponding to the matrix P^T(*this)P, the caller is responsible for deleting the object
cb_subspace(self::CBCMsymdense, P::CBMatrix)
delivers a new object on the heap corresponding to the matrix P^T(*this)P, the caller is responsible for deleting the object
cb_subspace(self::CBCMsymsparse, P::CBMatrix)
delivers a new object on the heap corresponding to the matrix P^T(*this)P, the caller is responsible for deleting the object
ConicBundle.cb_subtract_z
— Functioncb_subtract_z(self::CBUQPConeModelBlock, dual_residual::CBMatrix, with_step::Bool = false)
add the contributions of the dual slacks and return dual_residual returns 0 on success, 1 on failure
cb_subtract_z(self::CBUQPSumModelBlock, dual_residual::CBMatrix, with_step::Bool = false)
do this for all subblocks
ConicBundle.cb_suggest_mu!
— Functioncb_suggest_mu!(self::CBUQPConeModelBlock, qp_dx::CBMatrix, qp_dy::CBMatrix, rhs_residual::CBMatrix)
@brief supply the information for the choice of the next barrier parameter value
dx, dy is the predictor direction giving rise to the rhs_residual -(c-At(y+dy)-Q(x+dx)). Compute the direction dz and local step and based on the predictor (x+dx,y+dy,z+dz) suggest a value for mu by specifying the inner product of the dual cone variables ip_xz=ip(x,z)+ip(s,t), the dimension of the conic variable space mu_dim= cone_x.dim+cone_s.dim a value for the factor on mu to obtain the new target
cb_suggest_mu!(self::CBUQPSumModelBlock, qp_dx::CBMatrix, qp_dy::CBMatrix, rhs_residual::CBMatrix)
get this from all subblocks
ConicBundle.cb_sum
— Functioncb_sum(A::CBMatrix)
returns the sum over all elements of A, i.e., (1 1 ... 1)A(1 1 ... 1)^T
cb_sum(A::CBIndexmatrix)
returns the sum over all elements of A, i.e., (1 1 ... 1)A(1 1 ... 1)^T
cb_sum(A::CBSparsemat)
returns the sum over all elements of A, i.e., (1 1 ... 1)A(1 1 ... 1)^T
cb_sum(A::CBSymmatrix)
returns the sum over all elements of A, i.e., (1 1 ... 1)A(1 1 ... 1)^T
cb_sum(A::CBSparsesym)
returns the sum over all elements of A, i.e., (1 1 ... 1)A(1 1 ... 1)^T
ConicBundle.cb_sumbundle_mode!
— Functioncb_sumbundle_mode!(self::CBAFTModel, bh::Union{<:CBSumBundleHandler,Nothing} = nothing, aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
see SumBlockModel::sumbundle_mode
cb_sumbundle_mode!(self::CBSumModel, bh::Union{<:CBSumBundleHandler,Nothing} = nothing, aft::Union{<:CBAffineFunctionTransformation,Nothing} = nothing)
see SumBlockModel::sumbundle_mode
ConicBundle.cb_sumcols
— Functioncb_sumcols(A::CBMatrix)
returns a column vector holding the sum over all columns, i.e., A*(1 1 ... 1)^T
cb_sumcols(A::CBIndexmatrix)
returns a column vector holding the sum over all columns, i.e., A*(1 1 ... 1)^T
cb_sumcols(A::CBSparsemat)
returns a column vector holding the sum over all columns, i.e., A*(1 1 ... 1)^T
cb_sumcols(A::CBSymmatrix)
returns a column vector holding the sum over all columns, i.e., A*(1 1 ... 1)^T
cb_sumcols(A::CBSparsesym)
returns a column vector holding the sum over all columns, i.e., A*(1 1 ... 1)^T
ConicBundle.cb_sumrows
— Functioncb_sumrows(A::CBMatrix)
returns a row vector holding the sum over all rows, i.e., (1 1 ... 1)*A
cb_sumrows(A::CBIndexmatrix)
returns a row vector holding the sum over all rows, i.e., (1 1 ... 1)*A
cb_sumrows(A::CBSparsemat)
returns a row vector holding the sum over all rows, i.e., (1 1 ... 1)*A
cb_sumrows(A::CBSymmatrix)
returns a row vector holding the sum over all rows, i.e., (1 1 ... 1)*A
cb_sumrows(A::CBSparsesym)
returns a row vector holding the sum over all rows, i.e., (1 1 ... 1)*A
ConicBundle.cb_support_in
— Functioncb_support_in(self::CBCMgramdense, param0::CBSparsesym)
returns 0 if the support of the costraint matrix is not contained in the support of the sparse symmetric matrix S, 1 if it is contained.
cb_support_in(self::CBCMgramsparse, param0::CBSparsesym)
returns 0 if the support of the costraint matrix is not contained in the support of the sparse symmetric matrix S, 1 if it is contained.
cb_support_in(self::CBCMgramsparse_withoutdiag, param0::CBSparsesym)
returns 0 if the support of the costraint matrix is not contained in the support of the sparse symmetric matrix S, 1 if it is contained.
cb_support_in(self::CBCMlowrankdd, param0::CBSparsesym)
returns 0 if the support of the costraint matrix is not contained in the support of the sparse symmetric matrix S, 1 if it is contained.
cb_support_in(self::CBCMlowranksd, param0::CBSparsesym)
returns 0 if the support of the costraint matrix is not contained in the support of the sparse symmetric matrix S, 1 if it is contained.
cb_support_in(self::CBCMlowrankss, param0::CBSparsesym)
returns 0 if the support of the costraint matrix is not contained in the support of the sparse symmetric matrix S, 1 if it is contained.
cb_support_in(self::CBCMsingleton, S::CBSparsesym)
returns 0 if the support of the costraint matrix is not contained in the support of the sparse symmetric matrix S, 1 if it is contained.
cb_support_in(self::CBCMsymdense, param0::CBSparsesym)
returns 0 if the support of the costraint matrix is not contained in the support of the sparse symmetric matrix S, 1 if it is contained.
cb_support_in(self::CBCMsymsparse, S::CBSparsesym)
returns 0 if the support of the costraint matrix is not contained in the support of the sparse symmetric matrix S, 1 if it is contained.
ConicBundle.cb_support_rankadd
— Functioncb_support_rankadd(A::CBMatrix, C::CBSparsesym, alpha::Real, beta::Real, trans::Integer)
returns C=betaC+alphaAA^T (or A^TA), but only on the current support of C
ConicBundle.cb_support_xbpeya!
— Functioncb_support_xbpeya!(self::CBSparsesym, y::CBSparsesym, alpha::Real = 1., beta::Real = 0.)
returns this= alphay+beta(this) restricted to the curent support of *this; if beta==0, then *this is initialized to 0 on its support first
ConicBundle.cb_supports_dense_variable_metric
— Functioncb_supports_dense_variable_metric(self::CBBundleDenseTrustRegionProx)
returns true if dynamic scaling with dense symmetric matrices is supported
cb_supports_dense_variable_metric(self::CBBundleDLRTrustRegionProx)
returns true if variable metric with dense symmetric matrices is supported
cb_supports_dense_variable_metric(self::CBBundleLowRankTrustRegionProx)
returns true if dynamic scaling with dense symmetric matrices is supported
ConicBundle.cb_supports_diagonal_bounds_scaling
— Functioncb_supports_diagonal_bounds_scaling(self::CBBundleDenseTrustRegionProx)
- @brief this implementation does not support a diagonal scaling heuristic, therefore the following routine has to return true.
cb_supports_diagonal_bounds_scaling(self::CBBundleDiagonalTrustRegionProx)
- @brief this implementation supports a diagonal scaling heuristic for bounds in the groundset, therefore the following routine has to return true.
cb_supports_diagonal_bounds_scaling(self::CBBundleDLRTrustRegionProx)
- @brief this implementation does not support a diagonal scaling heuristic, therefore the following routine has to return true.
cb_supports_diagonal_bounds_scaling(self::CBBundleLowRankTrustRegionProx)
- @brief this implementation does not support a diagonal scaling heuristic, therefore the following routine has to return true.
ConicBundle.cb_supports_diagonal_variable_metric
— Functioncb_supports_diagonal_variable_metric(self::CBBundleDenseTrustRegionProx)
returns true if dynamic scaling with diagonal matrices is supported
cb_supports_diagonal_variable_metric(self::CBBundleDiagonalTrustRegionProx)
returns true if dynamic scaling with diagonal matrices is supported
cb_supports_diagonal_variable_metric(self::CBBundleDLRTrustRegionProx)
returns true if variable metric with diagonal matrices is supported
cb_supports_diagonal_variable_metric(self::CBBundleLowRankTrustRegionProx)
returns true if dynamic scaling with diagonal matrices is supported
ConicBundle.cb_supports_lowrank_variable_metric
— Functioncb_supports_lowrank_variable_metric(self::CBBundleDenseTrustRegionProx)
returns true if dynamic scaling with low rank structure is supported
cb_supports_lowrank_variable_metric(self::CBBundleDiagonalTrustRegionProx)
returns true if dynamic scaling with low rank matrices is supported
cb_supports_lowrank_variable_metric(self::CBBundleDLRTrustRegionProx)
returns true if variable metric with low rank structure is supported
cb_supports_lowrank_variable_metric(self::CBBundleLowRankTrustRegionProx)
returns true if dynamic scaling with low rank structure is supported
ConicBundle.cb_svec
— Functioncb_svec(A::CBSymmatrix, v::CBMatrix, a::Real, add::Bool, startindex_vec::Integer, startindex_A::Integer, blockdim::Integer)
the symmetric vec operator stacks the lower triangle of A to a n*(n+1)/2 vector with the same norm2 as A; here it sets svec(A)=[a11,sqrt(2)a12,...,sqrt(2)a1n,a22,...,sqrt(2)a(n-1,n),ann]', multiplies it by a and sets or adds (if add==true) it to v starting from startindexvec possibly restricted to the subblock of order blockdim (whenever >=0, else blockdim is set to A.rowdim()-startindexA) starting from startindexA (must be >=0); if add==false and startindexvec<0 then vec is also reinitialzed to the appropriate size
cb_svec(A::CBSymmatrix)
the symmetric vec operator, stacks the lower triangle of A to a n*(n+1)/2 vector with the same norm2 as A; i.e., it returns svec(A)=[a11,sqrt(2)a12,...,sqrt(2)a1n,a22,...,sqrt(2)a(n-1,n),ann]'
ConicBundle.cb_svec_projection!
— Functioncb_svec_projection!(self::CBPSCAffineFunction, svec_offset::CBMatrix, svec_coeffs::CBMatrix, P::CBMatrix, index_subset::Union{<:CBIndexmatrix,Nothing} = nothing)
see PSCOracle::svec_projection()
ConicBundle.cb_sveci
— Functioncb_sveci(v::CBMatrix, A::CBSymmatrix, a::Real, add::Bool, startindex_vec::Integer, startindex_A::Integer, blockdim::Integer)
the inverse operator to svec, extracts from v at startindexvec (>=0) the symmetric matrix of blockdim adding its mutliple by a into A starting at startindexA; if add==false and startindexA<0 A is initialized to the size of blockdim; if the latter is also negative then v.dim()-startindexvec must match an exact order and matrix A is initialized to this size. In all other cases the size of the symmetric matrix determines the missing parameters and vec.dim-startindex_vec
ConicBundle.cb_swap
— Functioncb_swap(A::CBMatrix, B::CBMatrix)
swap the content of the two matrices A and B (involves no copying)
cb_swap(A::CBIndexmatrix, B::CBIndexmatrix)
swap the content of the two matrices A and B (involves no copying)
cb_swap(A::CBSparsemat, B::CBSparsemat)
swap the content of the two sparse matrices A and B (involves no copying)
cb_swap(A::CBSymmatrix, B::CBSymmatrix)
swap the content of the two matrices A and B (involves no copying)
cb_swap(A::CBSparsesym, B::CBSparsesym)
swap the content of the two sparse matrices A and B (involves no copying)
ConicBundle.cb_swap_colsij!
— Functioncb_swap_colsij!(self::CBMatrix, i::Integer, j::Integer)
column i of this matrix is swapped with column j
ConicBundle.cb_swap_rowsij!
— Functioncb_swap_rowsij!(self::CBMatrix, i::Integer, j::Integer)
row i of this matrix is swapped with row j
ConicBundle.cb_swapij!
— Functioncb_swapij!(self::CBSymmatrix, i::Integer, j::Integer)
swaps rows (and columns) i and j
ConicBundle.cb_symscale
— Functioncb_symscale(A::CBSymmatrix, B::CBMatrix, S::CBSymmatrix, a::Real, b::Real, btrans::Integer)
sets S=betaS+alphaB'AB for symmatrix A and matrix B
ConicBundle.cb_synchronize_ids!
— Functioncb_synchronize_ids!(self::CBMinorantPointer, new_modification_id::Integer, new_center_id::Integer, old_center_id::Integer, new_cand_id::Integer, old_cand_id::Integer, new_prex_id::Integer = 0)
if not empty it sets the modification_id to its new id and reinitializes the evaluation map
cb_synchronize_ids!(self::CBMinorantUseData, new_modification_id::Integer, new_center_id::Integer, old_center_id::Integer, new_cand_id::Integer, old_cand_id::Integer, new_prex_id::Integer)
sets the modification_id to its new id and reinitializes the evaluation map
cb_synchronize_ids!(self::CBAFTData, new_center_id::Integer, old_center_id::Integer, new_cand_id::Integer, old_cand_id::Integer, new_prex_id::Integer = 0)
synchronize ids in any case by discarding inconsistent parts but return number of errors
cb_synchronize_ids!(self::CBBoxData, new_center_id::Integer, old_center_id::Integer, new_cand_id::Integer, old_cand_id::Integer, new_prex_id::Integer = 0)
synchronize ids in any case by discarding inconsistent parts but return number of errors
cb_synchronize_ids!(self::CBNNCData, new_center_id::Integer, old_center_id::Integer, new_cand_id::Integer, old_cand_id::Integer, new_prex_id::Integer = 0)
synchronize ids in any case by discarding inconsistent parts but return number of errors
cb_synchronize_ids!(self::CBPSCData, new_center_id::Integer, old_center_id::Integer, new_cand_id::Integer, old_cand_id::Integer, new_prex_id::Integer = 0)
synchronize ids in any case by discarding inconsistent parts but return number of errors
cb_synchronize_ids!(self::CBSOCData, new_center_id::Integer, old_center_id::Integer, new_cand_id::Integer, old_cand_id::Integer, new_prex_id::Integer = 0)
synchronize ids in any case by discarding inconsistent parts but return number of errors
cb_synchronize_ids!(self::CBAFTModel, new_center_id::Integer, old_center_id::Integer, new_cand_id::Integer, old_cand_id::Integer)
see BundleModel::synchronize_ids
cb_synchronize_ids!(self::CBSumModel, new_center_id::Integer, old_center_id::Integer, new_cand_id::Integer, old_cand_id::Integer)
see BundleModel::synchronize_ids
cb_synchronize_ids!(self::CBSumBundle, new_modification_id::Integer, new_center_id::Integer, old_center_id::Integer, new_cand_id::Integer, old_cand_id::Integer, new_prex_id::Integer = 0)
sets the modification_id to id
ConicBundle.cb_termination_code
— Methodcb_termination_code(self::CBMatrixCBSolver)
@brief Returns the termination code of the bundle algorithm for the latest descent step
For resetting all counters relevant for termination see clear_fail_counts() . @return - 0 : Not terminated. (Continue with the next solve()) - 1 : Relative precision criterion satisfied. (See set_term_relprec()) - 2 : Timelimit exceeded. (Currently the C interface does not offer a timelimit.) - 4 : Maximum number of function reevaluations exceeded. (Indicates that there is a problem with one of the function oracles that seems to deliver no valid upper bounds on the true function value for descent steps) - 8 : Maximum number of quadratic subproblem failures exceeded. (Indicates that the numerical limits of the inner quadratic programming solver are reached, no further progress expected) - 16 : maximum number of model evaluation failures exceeded (Indicates that the numerical limits of the setup of the subproblem are reached, no further progress expected) - 32 : maximum number of failures to increase the augmented model value exceeded (Indicates that the numerical limits of the interplay between subproblem and quadratic programming solver are reached, no further progress expected) - 64 : maximum number of oracle calls (function evaluations) exceeded, see set_eval_limit() - 128 : maximum number of oracle failures exceeded. This refers to function evaluations that terminate with insufficient precision but still provide a new approximate subgradient. A failure typically indicates numerical difficulties with the precision requirements. (Currently the interface does not allow to manipulate the limit, it is set to 10)
ConicBundle.cb_time
— Functioncb_time(self::CBClock)
return time elapsed since last call to start() in Microseconds (possibly adding an optional offset)
ConicBundle.cb_times_B!
— Functioncb_times_B!(self::CBQPConeModelBlock, A::CBMatrix, C::CBMatrix, alpha::Real, beta::Real, Atrans::Integer, Btrans::Integer, startindex_model::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
C=betaC+alphaA*B where A and B may be transposed; carry out the model part of this beginning at startindex_model
cb_times_B!(self::CBQPSumModelBlock, A::CBMatrix, C::CBMatrix, alpha::Real, beta::Real, Atrans::Integer, Btrans::Integer, startindex_model::Integer, globalbundle::CBMinorantBundle, startindex_bundle::Integer)
C=betaC+alphaA*B where A and B may be transposed; carry out the model part of this beginning at startindex_model
ConicBundle.cb_times_Q
— Functioncb_times_Q(self::CBMatrix, A::CBMatrix, r::Integer)
computes A=AQ, assuming a housholder Q is coded in the first r columns of the lower triangle of (this); it always returns 0
ConicBundle.cb_to_dim
— Functioncb_to_dim(self::CBAffineFunctionTransformation)
returns the dimension of the output argument or -1 if it is unknown
ConicBundle.cb_trace
— Functioncb_trace(A::CBMatrix)
returns the sum of the diagonal elements A(i,i) over all i
cb_trace(A::CBIndexmatrix)
returns the sum of the diagonal elements A(i,i) over all i
cb_trace(A::CBSparsemat)
returns the sum of the diagonal elements A(i,i) over all i
cb_trace(A::CBSymmatrix)
returns the sum of the diagonal elements A(i,i) over all i
cb_trace(A::CBSparsesym)
returns the sum of the diagonal elements A(i,i) over all i
ConicBundle.cb_tracedual
— Functioncb_tracedual(self::CBQPConeModelBlock, prec::Union{<:AbstractVector{Cdouble},Nothing} = nothing)
return the value of the dual variable to the trace consrat == support function value
cb_tracedual(self::CBUQPConeModelBlock, prec::Union{<:AbstractVector{Cdouble},Nothing} = nothing)
return the value of the dual variable to the trace consrat == support function value
ConicBundle.cb_transform_argument
— Functioncb_transform_argument(self::CBAffineFunctionTransformation, transformed_y::CBMatrix, input_y::CBMatrix)
@brief computes @a transformedoffset and, if @a this is not the identity,@a transformedy and returns either @a inputy (id) or @a transformedy
On input @a transformedy is supposed to be of dimension zero, unless it was already the result of a previous transformation for exactly this AFT with this data (no intermediate modifications). This is important, because if @a transformedy has the correct size, only the data changed by the transformation is overwritten and the constant parts are assumed to be already initialized. On output it is again of dimension 0 if the transformation is the identity.
The @a transformed_offset = fun_offset+ip(linear_cost,@a input_y) is the value needed in objective_value() together with the result of the evaluation of the function for @a transformed_y in order to compute the transformed objective value.
ConicBundle.cb_transform_minorant
— Functioncb_transform_minorant(self::CBAffineFunctionTransformation, out_minorant::CBMinorantPointer, in_minorant::CBMinorantPointer, alpha::Real = 1., add_trafo_minorant::Bool = false, provided_row_indices::Union{<:CBIndexmatrix,Nothing} = nothing, needed_column_indices::Union{<:CBIndexmatrix,Nothing} = nothing)
@brief transforms the in linear minorant (scaled by alpha) and initializes or adds it to the out linear minorant
if out_minorant.empty()==true, the out_minorant is initialized, otherwise the information is added. the constant_minorant of the transformation is only added if add_trafo_minorant is set to true.
If given, providedrowindices and neededcolumnindices must be as specified in qpcostindices, i.e. of inminorant only the providedrowindices (all if NULL) will be used to compute only the neededcolumnindices (as rows, all if NULL) of outminorant.
ConicBundle.cb_transform_minorants
— Functioncb_transform_minorants(self::CBAffineFunctionTransformation, out_minorants::CBMinorantBundle, in_minorants::CBMinorantBundle, alpha::Real = 1.)
@brief transforms several linear minorants (scaled by alpha) and initializes or adds them to the out linear minorants
for out_minorant[i].empty()==true the out_minorant is initialized, otherwise the information is added.
ConicBundle.cb_transpose
— Functioncb_transpose(A::CBSymmatrix)
(drop it or use a constructor instead)
cb_transpose(A::CBSparsesym)
(drop it or use a constructor instead)
ConicBundle.cb_transpose!
— Functioncb_transpose!(self::CBMatrix)
transposes itself (cheap for vectors, expensive for matrices)
cb_transpose!(self::CBIndexmatrix)
transposes itself (cheap for vectors, expensive for matrices)
cb_transpose!(self::CBSparsemat)
transposes itself (swaps row and column representations, thus cheap)
cb_transpose!(self::CBSymmatrix)
transposes itself (at almost no cost)
cb_transpose!(self::CBSparsesym)
transposes itself (at almost no cost)
ConicBundle.cb_tril
— Functioncb_tril(A::CBMatrix, i::Integer)
retuns a matrix that keeps the lower triangle of A starting with diagonal d, i.e., (i,j)=A(i,j) for 0<=i<row dimension, 0<=j<min(i+d+1,column dimension), and sets (i,j)=0 otherwise
cb_tril(A::CBIndexmatrix, d::Integer)
retuns a matrix that keeps the lower triangle of A starting with diagonal d, i.e., (i,j)=A(i,j) for 0<=i<row dimension, 0<=j<min(i+d+1,column dimension), and sets (i,j)=0 otherwise
ConicBundle.cb_tril!
— Functioncb_tril!(self::CBMatrix, d::Integer = 0)
keeps everything below and including diagonal d, everything above is set to zero, returns *this
cb_tril!(self::CBIndexmatrix, d::Integer = 0)
keeps lower triangle starting with diagonal d; set (*this)(i,j)=0 for 0<=i<row dimension, max(0,i+d)<=j<column dimension, returns *this
ConicBundle.cb_tril_solve!
— Functioncb_tril_solve!(self::CBMatrix, rhs::CBMatrix, tol::Real = 1e-10)
solves (this)x=rhs for x by forward substitution regarding (this) as an upper triangle matrix and stores x in rhs. Returns 0 on success, otherwise i+1 if abs(this)(i,i)<tol and the reduced row of rhs is nonzero.
ConicBundle.cb_triu
— Functioncb_triu(A::CBMatrix, i::Integer)
retuns a matrix that keeps the upper triangle of A starting with diagonal d, i.e., (i,j)=A(i,j) for 0<=i<row dimension, max(0,i+d)<=j<column dimension, and sets (i,j)=0 otherwise
cb_triu(A::CBIndexmatrix, d::Integer)
retuns a matrix that keeps the upper triangle of A starting with diagonal d, i.e., (i,j)=A(i,j) for 0<=i<row dimension, max(0,i+d)<=j<column dimension, and sets (i,j)=0 otherwise
ConicBundle.cb_triu!
— Functioncb_triu!(self::CBMatrix, d::Integer = 0)
keeps everything above and including diagonal d, everything below is set to zero, returns *this
cb_triu!(self::CBIndexmatrix, d::Integer = 0)
keeps upper triangle starting with diagonal d; set (*this)(i,j)=0 for 0<=i<row dimension, 0<=j<min(i+d,column dimension), returns *this
ConicBundle.cb_triu_solve!
— Functioncb_triu_solve!(self::CBMatrix, rhs::CBMatrix, tol::Real = 1e-10)
solves (this)x=rhs for x by back substitution regarding (this) as an upper triangle matrix and stores x in rhs. Returns 0 on success, otherwise i+1 if abs(this)(i,i)<tol and the remaining row of rhs is nonzero.
ConicBundle.cb_unif_long!
— Functioncb_unif_long!(self::CBGB_rand, m::Integer)
returns a random integer number "uniformly distributed" in {0,..,m-1}
ConicBundle.cb_update!
— Functioncb_update!(self::CBUQPSolver, dQ::CBSymmatrix, dc::CBMatrix, doffset::Real)
resolve the QP for the same feasible set but update the cost terms by the given argumetns first
ConicBundle.cb_update_QP_costs!
— Functioncb_update_QP_costs!(self::CBBundleDenseTrustRegionProx, delta_Q::CBSymmatrix, delta_d::CBMatrix, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, center_y::CBMatrix, groundset_minorant::CBMinorantPointer, delta_groundset_minorant::CBMinorantPointer, delta_index::CBIndexmatrix, yfixed::Union{<:CBIndexmatrix,Nothing})
updates the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::updateQPcosts
cb_update_QP_costs!(self::CBBundleDiagonalTrustRegionProx, delta_Q::CBSymmatrix, delta_d::CBMatrix, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, center_y::CBMatrix, groundset_minorant::CBMinorantPointer, delta_groundset_minorant::CBMinorantPointer, delta_index::CBIndexmatrix, yfixed::Union{<:CBIndexmatrix,Nothing})
updates the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::updateQPcosts
cb_update_QP_costs!(self::CBBundleDLRTrustRegionProx, delta_Q::CBSymmatrix, delta_d::CBMatrix, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, center_y::CBMatrix, groundset_minorant::CBMinorantPointer, delta_groundset_minorant::CBMinorantPointer, delta_index::CBIndexmatrix, yfixed::Union{<:CBIndexmatrix,Nothing})
updates the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::updateQPcosts
cb_update_QP_costs!(self::CBBundleIdProx, delta_Q::CBSymmatrix, delta_d::CBMatrix, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, center_y::CBMatrix, groundset_minorant::CBMinorantPointer, delta_groundset_minorant::CBMinorantPointer, delta_index::CBIndexmatrix, yfixed::Union{<:CBIndexmatrix,Nothing})
updates the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::updateQPcosts
cb_update_QP_costs!(self::CBBundleLowRankTrustRegionProx, delta_Q::CBSymmatrix, delta_d::CBMatrix, constant_minorant::CBMinorantPointer, bundle::CBMinorantBundle, center_y::CBMatrix, groundset_minorant::CBMinorantPointer, delta_groundset_minorant::CBMinorantPointer, delta_index::CBIndexmatrix, yfixed::Union{<:CBIndexmatrix,Nothing})
updates the dual QP costs Q, d, and the constant offset to the bundle subproblem, see BundleProxObject::updateQPcosts
ConicBundle.cb_update_model!
— Functioncb_update_model!(self::CBAFTModel, model_update::CBModelUpdate, center_id::Integer, center_y::CBMatrix, cand_id::Integer, cand_y::CBMatrix, model_maxviol::Real, H::CBBundleProxObject)
see BundleModel::update_model
cb_update_model!(self::CBSumModel, model_update::CBModelUpdate, center_id::Integer, center_y::CBMatrix, cand_id::Integer, cand_y::CBMatrix, model_maxviol::Real, H::CBBundleProxObject)
see BundleModel::update_model
cb_update_model!(self::CBSumBundleHandler, model_update::CBModelUpdate, center_id::Integer, center_y::CBMatrix, cand_id::Integer, cand_y::CBMatrix, model_maxviol::Real, H::CBBundleProxObject)
updates the sumbundle maybe even if not active; in this it tries to do the same as bh, storing the aggregate at the same place and providing new room at the same place; the new subgradient is not entered here but in setcandminorant()
ConicBundle.cb_valid
— Functioncb_valid(self::CBMinorantPointer)
returns true if the pointer is not empty and the data is valid
cb_valid(self::CBMinorantUseData)
check validity recursively
ConicBundle.cb_variable_modifications
— Functioncb_variable_modifications(self::CBPSCAffineModification)
returns true if some modifications are performed on the block structure
ConicBundle.cb_wall_time
— Functioncb_wall_time(self::CBClock)
returns the Microseconds passed on the wall clock sind initialization
ConicBundle.cb_weight_changed
— Functioncb_weight_changed(self::CBBundleHKWeight)
returns true if last call of *_update modified current value of tau, else 0
cb_weight_changed(self::CBBundleRQBWeight)
returns true if last call of *_update modified current value of tau, else 0
ConicBundle.cb_xbpeya
— Functioncb_xbpeya(x::CBMatrix, y::CBMatrix, alpha::Real, beta::Real, ytrans::Integer)
returns x= alphay+betax, where y may be transposed (ytrans=1); if beta==0. then x is initialized to the correct size
cb_xbpeya(x::CBIndexmatrix, y::CBIndexmatrix, alpha::Integer, beta::Integer, ytrans::Integer)
returns x= alphay+betax, where y may be transposed (ytrans=1); if beta==0. then x is initialized to the correct size
cb_xbpeya(x::CBSparsemat, y::CBSparsemat, alpha::Real, beta::Real, ytrans::Integer)
returns x= alphay+betax, where y may be transposed (ytrans=1); if beta==0. then x is initialized to the correct size
cb_xbpeya(x::CBSymmatrix, y::CBSymmatrix, alpha::Real, beta::Real)
returns x= alphay+betax; if beta==0. then x is initialized to the correct size
cb_xbpeya(x::CBSparsesym, y::CBSparsesym, alpha::Real, beta::Real)
returns x= alphay+betax; if beta==0. then x is initialized to the correct size
ConicBundle.cb_xdim
— Functioncb_xdim(self::CBUQPConeModelBlock)
dimension of externally visible primal variables
cb_xdim(self::CBUQPSumModelBlock)
sum of all xdim of the sublocks
ConicBundle.cb_xetriu_yza!
— Functioncb_xetriu_yza!(self::CBSymmatrix, A::CBMatrix, B::CBMatrix, d::Real = 1.)
sets this(i,j), i<=j to the upper triangle of the matrix product dtranspose(A)*B
cb_xetriu_yza!(self::CBSymmatrix, A::CBSparsemat, B::CBMatrix, d::Real = 1.)
sets this(i,j), i<=j to the upper triangle of the matrix product dtranspose(A)*B
ConicBundle.cb_xeya!
— Functioncb_xeya!(self::CBMatrix, A::CBMatrix, d::Real = 1., atrans::Integer = 0)
sets this=dA where A may be transposed and returns *this
cb_xeya!(self::CBMatrix, A::CBIndexmatrix, d::Real = 1.)
sets this=dA and returns *this
cb_xeya!(self::CBMatrix, A::CBSymmatrix, d::Real = 1.)
sets this=dA and returns *this
cb_xeya!(self::CBMatrix, A::CBSparsesym, d::Real = 1.)
sets this=dA and returns *this
cb_xeya!(self::CBMatrix, A::CBSparsemat, d::Real = 1.)
sets this=dA and returns *this
cb_xeya!(self::CBIndexmatrix, A::CBIndexmatrix, d::Integer = 1)
sets this=dA and returns *this
cb_xeya!(self::CBSparsemat, A::CBSparsemat, d::Real = 1.)
sets this=dA and returns *this
cb_xeya!(self::CBSparsemat, A::CBMatrix, d::Real = 1.)
sets this=dA removing abs(values)<tol; returns *this
cb_xeya!(self::CBSparsemat, A::CBIndexmatrix, d::Real = 1.)
sets this=dA removing zeros; returns *this
cb_xeya!(self::CBSparsemat, A::CBSparsesym, d::Real = 1.)
sets this=Ad, abs(values)<tol are removed from the support, and returns *this,
cb_xeya!(self::CBSymmatrix, A::CBSymmatrix, d::Real = 1.)
sets this=dA and returns *this
cb_xeya!(self::CBSymmatrix, A::CBMatrix, d::Real = 1.)
sets this=d(A+transpose(A))/2. and returns *this
cb_xeya!(self::CBSymmatrix, A::CBIndexmatrix, d::Real = 1.)
sets this=d(A+transpose(A))/2. and returns *this
cb_xeya!(self::CBSymmatrix, A::CBSparsesym, d::Real = 1.)
sets this=dA and returns *this
cb_xeya!(self::CBSparsesym, A::CBSparsesym, d::Real = 1.)
sets this=dA and returns *this
cb_xeya!(self::CBSparsesym, A::CBMatrix, d::Real = 1.)
sets and returns this=d(A+transpose(A))/2. where abs(values)<tol are removed from the support
cb_xeya!(self::CBSparsesym, A::CBIndexmatrix, d::Real = 1.)
sets and returns this=d(A+transpose(A))/2. where zeros are removed from the support
cb_xeya!(self::CBSparsesym, A::CBSymmatrix, d::Real = 1.)
sets and returns this=Ad where abs(values)<tol are removed from the support
cb_xeya!(self::CBSparsesym, A::CBSparsemat, d::Real = 1.)
sets and returns this=d.(A+transpose(A))/2.
ConicBundle.cb_xeyapzb
— Functioncb_xeyapzb(x::CBMatrix, y::CBMatrix, z::CBMatrix, alpha::Real, beta::Real)
returns x= alphay+betaz; x is initialized to the correct size
cb_xeyapzb(x::CBIndexmatrix, y::CBIndexmatrix, z::CBIndexmatrix, alpha::Integer, beta::Integer)
returns x= alphay+betaz; x is initialized to the correct size, see CHMatrixClasses::xeyapzb() for default values of alpha and beta.
cb_xeyapzb(x::CBSymmatrix, y::CBSymmatrix, z::CBSymmatrix, alpha::Real, beta::Real)
returns x= alphay+betaz; x is initialized to the correct size
cb_xeyapzb(x::CBSparsesym, y::CBSparsesym, z::CBSparsesym, alpha::Real, beta::Real)
returns x= alphay+betaz; x is initialized to the correct size
ConicBundle.cb_xpetriu_yza!
— Functioncb_xpetriu_yza!(self::CBSymmatrix, A::CBMatrix, B::CBMatrix, d::Real = 1.)
adds to this(i,j), i<=j the upper triangle of the matrix product dtranspose(A)*B
cb_xpetriu_yza!(self::CBSymmatrix, A::CBSparsemat, B::CBMatrix, d::Real = 1.)
adds to this(i,j), i<=j the upper triangle of the matrix product dtranspose(A)*B
ConicBundle.cb_xpeya!
— Functioncb_xpeya!(self::CBMatrix, A::CBMatrix, d::Real = 1.)
sets this+=dA and returns *this
cb_xpeya!(self::CBMatrix, A::CBIndexmatrix, d::Real = 1.)
sets this+=dA and returns *this
cb_xpeya!(self::CBMatrix, A::CBSymmatrix, d::Real = 1.)
sets this+=dA and returns *this
cb_xpeya!(self::CBMatrix, A::CBSparsesym, d::Real = 1.)
sets this+=dA and returns *this
cb_xpeya!(self::CBMatrix, A::CBSparsemat, d::Real = 1.)
sets this+=dA and returns *this
cb_xpeya!(self::CBIndexmatrix, A::CBIndexmatrix, d::Integer = 1)
sets this+=dA and returns *this
cb_xpeya!(self::CBSymmatrix, A::CBSymmatrix, d::Real = 1.)
sets this+=dA and returns *this
cb_xpeya!(self::CBSymmatrix, A::CBMatrix, d::Real = 1.)
sets this+=d(A+transpose(A))/2. and returns *this
cb_xpeya!(self::CBSymmatrix, A::CBIndexmatrix, d::Real = 1.)
sets this+=d(A+transpose(A))/2. and returns *this
cb_xpeya!(self::CBSymmatrix, A::CBSparsesym, d::Real = 1.)
sets this+=dA and returns *this
ConicBundle.cb_ydim
— Functioncb_ydim(self::CBUQPConeModelBlock)
dimension of externally visible dual variables
cb_ydim(self::CBUQPSumModelBlock)
sum of all ydim of the sublocks
ConicBundle.cb_zero
— Functioncb_zero(self::CBMinorantPointer)
returns true if the pointer is not empty but all entrys (also the offset) are zero
Missing docstring for cbm_child
. Check Documenter's build log for details.
Missing docstring for cbm_inactive
. Check Documenter's build log for details.
Missing docstring for cbm_root
. Check Documenter's build log for details.
Missing docstring for cbm_unavailable
. Check Documenter's build log for details.
Missing docstring for cbmu_descent_step
. Check Documenter's build log for details.
Missing docstring for cbmu_new_subgradient
. Check Documenter's build log for details.
Missing docstring for cbmu_null_step
. Check Documenter's build log for details.