Skip to content

Commit 4b46549

Browse files
committed
Implement Hager-Zhang line search and use it as default
1 parent 8610d69 commit 4b46549

File tree

3 files changed

+599
-48
lines changed

3 files changed

+599
-48
lines changed

varipeps/config.py

+35-1
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)