@@ -111,7 +111,7 @@ function AL(
111111 init_subtol:: Real = T (0.1 ),
112112 factor_primal_linear_improvement:: Real = T (3 // 4 ),
113113 factor_decrease_subtol:: Real = T (1 // 4 ),
114- ) where {H, T <: Real }
114+ dual_safeguard = project_y!,
115115 if ! (nlp. meta. minimize)
116116 error (" AL only works for minimization problems" )
117117 end
@@ -131,10 +131,6 @@ function AL(
131131 @assert factor_penalty_up > 1
132132 @assert 0 < factor_primal_linear_improvement < 1
133133 @assert 0 < factor_decrease_subtol < 1
134- ymin = - 1e20
135- ymax = 1e20
136- @assert ymin <= 0
137- @assert ymax >= 0
138134 verbose = options. verbose
139135 max_time = options. maxTime
140136 max_iter = options. maxIter
@@ -174,7 +170,7 @@ function AL(
174170 iter += 1
175171
176172 # dual safeguard
177- project_y! (alf, ymin, ymax )
173+ dual_safeguard (alf)
178174
179175 # AL subproblem
180176 suboptions. ϵa = max (subtol, options. ϵa)
@@ -252,20 +248,13 @@ function AL(
252248end
253249
254250"""
255- project_y!(nlp, ymin, ymax )
251+ project_y!(nlp)
256252
257- Given an `AugLagModel`, project `nlp.y` into [ymin, ymax]and updates `nlp.μc_y` accordingly.
253+ Given an `AugLagModel`, project `nlp.y` into [ymin, ymax] and updates `nlp.μc_y` accordingly.
258254"""
259- function project_y! (
260- nlp:: AugLagModel ,
261- ymin:: AbstractVector{T} ,
262- ymax:: AbstractVector{T} ,
263- ) where {T <: Real }
264- nlp. y .= max .(ymin, min .(nlp. y, ymax))
265- nlp. μc_y .= nlp. μ .* nlp. cx .- nlp. y
266- end
255+ project_y! (nlp:: AugLagModel ) = project_y! (nlp:: AugLagModel , - 1e20 , 1e20 )
267256
268- function project_y! (nlp:: AugLagModel , ymin:: T , ymax:: T ) where {T <: Real }
257+ function project_y! (nlp:: AugLagModel , ymin:: V , ymax:: V ) where {V }
269258 nlp. y .= max .(ymin, min .(nlp. y, ymax))
270259 nlp. μc_y .= nlp. μ .* nlp. cx .- nlp. y
271260end
0 commit comments