@@ -21,6 +21,7 @@ class Line_Search_Methods(IntEnum):
2121 SIMPLE = auto () #: Simple line search method
2222 ARMIJO = auto () #: Armijo line search method
2323 WOLFE = auto () #: Wolfe line search method
24+ HAGERZHANG = auto () #: Hager-Zhang line search method
2425
2526
2627@unique
@@ -155,6 +156,28 @@ class VariPEPS_Config:
155156 line_search_use_last_step_size (:obj:`bool`):
156157 Flag if the line search should start from the step size of the
157158 previous optimizer step.
159+ line_search_hager_zhang_quad_step (:obj:`bool`):
160+ Use QuadStep method in Hager-Zhang line search to find initial
161+ step size.
162+ line_search_hager_zhang_delta (:obj:`float`):
163+ Constant used in Hager-Zhang line search method.
164+ line_search_hager_zhang_sigma (:obj:`float`):
165+ Constant used in Hager-Zhang line search method.
166+ line_search_hager_zhang_psi_0 (:obj:`float`):
167+ Constant used in Hager-Zhang line search method.
168+ line_search_hager_zhang_psi_1 (:obj:`float`):
169+ Constant used in Hager-Zhang line search method.
170+ line_search_hager_zhang_psi_2 (:obj:`float`):
171+ Constant used in Hager-Zhang line search method.
172+ line_search_hager_zhang_eps (:obj:`float`):
173+ Constant used in Hager-Zhang line search method.
174+ line_search_hager_zhang_theta (:obj:`float`):
175+ Constant used in Hager-Zhang line search method.
176+ line_search_hager_zhang_gamma (:obj:`float`):
177+ Constant used in Hager-Zhang line search method.
178+ line_search_hager_zhang_rho (:obj:`float`):
179+ Constant used in Hager-Zhang line search method.
180+
158181 basinhopping_niter (:obj:`int`):
159182 Value for parameter `niter` of :obj:`scipy.optimize.basinhopping`.
160183 See this function for details.
@@ -214,14 +237,25 @@ class VariPEPS_Config:
214237 optimizer_reuse_env_eps : float = 1e-3
215238
216239 # Line search
217- line_search_method : Line_Search_Methods = Line_Search_Methods .WOLFE
240+ line_search_method : Line_Search_Methods = Line_Search_Methods .HAGERZHANG
218241 line_search_initial_step_size : float = 1.0
219242 line_search_reduction_factor : float = 0.5
220243 line_search_max_steps : int = 20
221244 line_search_armijo_const : float = 1e-4
222245 line_search_wolfe_const : float = 0.9
223246 line_search_use_last_step_size : bool = False
224247
248+ line_search_hager_zhang_quad_step : bool = True
249+ line_search_hager_zhang_delta : float = 0.1
250+ line_search_hager_zhang_sigma : float = 0.9
251+ line_search_hager_zhang_psi_0 : float = 0.01
252+ line_search_hager_zhang_psi_1 : float = 0.1
253+ line_search_hager_zhang_psi_2 : float = 2.0
254+ line_search_hager_zhang_eps : float = 1e-8
255+ line_search_hager_zhang_theta : float = 0.5
256+ line_search_hager_zhang_gamma : float = 0.66
257+ line_search_hager_zhang_rho : float = 5
258+
225259 # Basinhopping
226260 basinhopping_niter : int = 20
227261 basinhopping_T : float = 0.001
0 commit comments