-
Notifications
You must be signed in to change notification settings - Fork 3
pqn may break vmin/vmax limits #7
Copy link
Copy link
Open
Description
Hi,
While working on Viking Graben JUDI's PR I've encountered a situation when at some iteration the pqn algorithm with TV condition crosses the vmin/vmax boundary condition.
For example my code:
# SETUP CONSTARAINTS
options=PARSDMM_options()
options.FL=Float32
options=default_PARSDMM_options(options,options.FL)
constraint = Vector{SetIntersectionProjection.set_definitions}()
# Bound constraints
vmin = 1.2
vmax = 5.2
# Slowness squared [s^2/km^2]
mmin = (1f0 ./ vmax).^2
mmax = (1f0 ./ vmin).^2
mminArr = ones(Float32, size(model0)) .* mmin
mmaxArr = ones(Float32, size(model0)) .* mmax
# bounds:
set_type = "bounds"
TD_OP = "identity"
app_mode = ("matrix","")
custom_TD_OP = ([],false)
push!(constraint, set_definitions(set_type,TD_OP,vec(mminArr),vec(mmaxArr),app_mode,custom_TD_OP));
#TV
(TV,dummy1,dummy2,dummy3) = get_TD_operator(model0.m,"TV",options.FL)
mvar_min = 0.0
mvar_max = norm(TV*vec(m0),1) * 1.0
set_type = "l1"
TD_OP = "TV"
app_mode = ("matrix","")
custom_TD_OP = ([],false)
push!(constraint, set_definitions(set_type,TD_OP,mvar_min,mvar_max,app_mode,custom_TD_OP));Here is the result of 8 9 and 10 iterations:



As you can see 9th iteration brings up values about 11 km/s (there is no clipping values during the imshow and the colorbar's range reflects min/max values in the array) even when the borders are [1.2, 5.2]
P.S. 15 iterations at 3.5 Hz passed correctly.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels