optimize: instantization macro

This commit is contained in:
jiri committed 2026-10-27 10:29:18 +01:00
1 parent 00aaa10846
commit 66cb0bbdca
1 file changed
+28 -24
+28 -24
View File
@@ -1149,7 +1149,7 @@ for(; budget; ++st.iter)
A=J.transposedtimes(); A=J.transposedtimes();
g=r*J; g=r*J;
for(int i=0; i<n; ++i) diag[i]=((const NRSMat<T> &)A)(i,i); for(int i=0; i<n; ++i) diag[i]=((const NRSMat<T> &)A)(i,i);
mu*= std::max((T)1/3,1-std::pow(2*rho-1,3)); mu*= std::max((T)1/3,1-std::pow(2*rho-1,(T)3));
nu=2; nu=2;
st.step(fold-f,h.norm()); st.step(fold-f,h.norm());
} }
@@ -2045,29 +2045,33 @@ return firstorder_minimize("SPSA",stepper,o,x,hp,achieved,&est);
//force instantiation //force instantiation
template double linesearch_wolfe(optevaluator<double> &e, NRVec<double> &x, double &f, NRVec<double> &g, const NRVec<double> &p, const double alpha1, const linesearch_hyperparameters<double> &lp); #define INSTANTIZE(T) \
template class optstate<double>; template T linesearch_wolfe(optevaluator<T> &e, NRVec<T> &x, T &f, NRVec<T> &g, const NRVec<T> &p, const T alpha1, const linesearch_hyperparameters<T> &lp); \
template class ParameterShift<double>; template class optstate<T>; \
template class FiniteDifference<double>; template class ParameterShift<T>; \
template class FrozenOptProblem<double>; template class FiniteDifference<T>; \
template class BFGS_Optimizer<double>; template class FrozenOptProblem<T>; \
template class LBFGS_Optimizer<double>; template class BFGS_Optimizer<T>; \
template class GDIIS_Optimizer<double>; template class LBFGS_Optimizer<T>; \
template class TrustRegion_Optimizer<double>; template class GDIIS_Optimizer<T>; \
template class PRFO_Optimizer<double>; template class TrustRegion_Optimizer<T>; \
template class LM_Optimizer<double>; template class PRFO_Optimizer<T>; \
template class OptLeastSquares<double>; template class LM_Optimizer<T>; \
template bool hessian_update(NRSMat<double> &B, const NRVec<double> &s, const NRVec<double> &y, const TR_hessian type, const double thr); template class OptLeastSquares<T>; \
template class CG_Optimizer<double>; template bool hessian_update(NRSMat<T> &B, const NRVec<T> &s, const NRVec<T> &y, const TR_hessian type, const T thr); \
template class NelderMead_Optimizer<double>; template class CG_Optimizer<T>; \
template class Powell_Optimizer<double>; template class NelderMead_Optimizer<T>; \
template class Rotosolve_Optimizer<double>; template class Powell_Optimizer<T>; \
template class Cobyla_Optimizer<double>; template class Rotosolve_Optimizer<T>; \
template class SGD_Optimizer<double>; template class Cobyla_Optimizer<T>; \
template class QNG_Optimizer<double>; template class SGD_Optimizer<T>; \
template class Adam_Optimizer<double>; template class QNG_Optimizer<T>; \
template class SPSA_Optimizer<double>; template class Adam_Optimizer<T>; \
template double linemin_brent(optevaluator<double> &e, NRVec<double> &x, double &f, const NRVec<double> &u, const double t1, const double tol, const double abstol, const int maxiter, const int verbose); template class SPSA_Optimizer<T>; \
template T linemin_brent(optevaluator<T> &e, NRVec<T> &x, T &f, const NRVec<T> &u, const T t1, const T tol, const T abstol, const int maxiter, const int verbose); \
INSTANTIZE(double)
}//namespace }//namespace