Skip to content

Commit ff51796

Browse files
committed
Ensure that Hager-Zhang line search terminates
1 parent b799e11 commit ff51796

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

varipeps/config.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ class VariPEPS_Config:
240240
line_search_method: Line_Search_Methods = Line_Search_Methods.HAGERZHANG
241241
line_search_initial_step_size: float = 1.0
242242
line_search_reduction_factor: float = 0.5
243-
line_search_max_steps: int = 20
243+
line_search_max_steps: int = 40
244244
line_search_armijo_const: float = 1e-4
245245
line_search_wolfe_const: float = 0.9
246246
line_search_use_last_step_size: bool = False

varipeps/optimization/line_search.py

+11
Original file line numberDiff line numberDiff line change
@@ -654,6 +654,8 @@ def line_search(
654654
None,
655655
)
656656
signal_reset_descent_dir = False
657+
658+
count += 1
657659
continue
658660
else:
659661
hager_zhang_upper_bound = alpha
@@ -681,6 +683,7 @@ def line_search(
681683
None,
682684
)
683685
signal_reset_descent_dir = False
686+
count += 1
684687
continue
685688
elif descent_new_grad >= 0:
686689
hager_zhang_upper_bound = alpha
@@ -710,6 +713,7 @@ def line_search(
710713
None,
711714
)
712715
signal_reset_descent_dir = False
716+
count += 1
713717
continue
714718
else:
715719
if new_value <= (
@@ -736,6 +740,7 @@ def line_search(
736740
None,
737741
)
738742
signal_reset_descent_dir = False
743+
count += 1
739744
continue
740745

741746
if varipeps_config.line_search_method is Line_Search_Methods.SIMPLE:
@@ -915,6 +920,7 @@ def line_search(
915920
None,
916921
)
917922
signal_reset_descent_dir = False
923+
count += 1
918924
continue
919925
elif hager_zhang_state is _Hager_Zhang_State.UPDATE_INNER:
920926
if descent_new_grad >= 0:
@@ -951,6 +957,7 @@ def line_search(
951957
None,
952958
)
953959
signal_reset_descent_dir = False
960+
count += 1
954961
continue
955962
else:
956963
hager_zhang_upper_bound = alpha
@@ -980,6 +987,7 @@ def line_search(
980987
None,
981988
)
982989
signal_reset_descent_dir = False
990+
count += 1
983991
continue
984992
else:
985993
alpha = hager_zhang_lower_bound * hager_zhang_upper_bound_des_grad
@@ -1017,6 +1025,7 @@ def line_search(
10171025
None,
10181026
)
10191027
signal_reset_descent_dir = False
1028+
count += 1
10201029
continue
10211030

10221031
if hz_secant_alpha is not None and (
@@ -1051,6 +1060,7 @@ def line_search(
10511060
None,
10521061
)
10531062
signal_reset_descent_dir = False
1063+
count += 1
10541064
continue
10551065
hz_secant_alpha = None
10561066

@@ -1077,6 +1087,7 @@ def line_search(
10771087
None,
10781088
)
10791089
signal_reset_descent_dir = False
1090+
count += 1
10801091
continue
10811092
hz_secant_lower = None
10821093

0 commit comments

Comments
 (0)