@@ -21,6 +21,7 @@ class Line_Search_Methods(IntEnum):
21
21
SIMPLE = auto () #: Simple line search method
22
22
ARMIJO = auto () #: Armijo line search method
23
23
WOLFE = auto () #: Wolfe line search method
24
+ HAGERZHANG = auto () #: Hager-Zhang line search method
24
25
25
26
26
27
@unique
@@ -155,6 +156,28 @@ class VariPEPS_Config:
155
156
line_search_use_last_step_size (:obj:`bool`):
156
157
Flag if the line search should start from the step size of the
157
158
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
+
158
181
basinhopping_niter (:obj:`int`):
159
182
Value for parameter `niter` of :obj:`scipy.optimize.basinhopping`.
160
183
See this function for details.
@@ -214,14 +237,25 @@ class VariPEPS_Config:
214
237
optimizer_reuse_env_eps : float = 1e-3
215
238
216
239
# Line search
217
- line_search_method : Line_Search_Methods = Line_Search_Methods .WOLFE
240
+ line_search_method : Line_Search_Methods = Line_Search_Methods .HAGERZHANG
218
241
line_search_initial_step_size : float = 1.0
219
242
line_search_reduction_factor : float = 0.5
220
243
line_search_max_steps : int = 20
221
244
line_search_armijo_const : float = 1e-4
222
245
line_search_wolfe_const : float = 0.9
223
246
line_search_use_last_step_size : bool = False
224
247
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
+
225
259
# Basinhopping
226
260
basinhopping_niter : int = 20
227
261
basinhopping_T : float = 0.001
0 commit comments