src/Iterate.jl

changeset 22
d5e10d963303
parent 4
59fd17a3cea0
equal deleted inserted replaced
21:3b7fcc651585 22:d5e10d963303
20 # The function `step` should take as its argument a function that itself 20 # The function `step` should take as its argument a function that itself
21 # takes as its argument a function that calculates the objective value 21 # takes as its argument a function that calculates the objective value
22 # on demand. 22 # on demand.
23 ######################################################################## 23 ########################################################################
24 24
25 function simple_verbosity(iter, params, calc_objective)
26 if params.verbose_iter!=0 && mod(iter, params.verbose_iter) == 0
27 v, extra₀ = calc_objective()
28 if isa(extra₀, AbstractString)
29 extra = " [$extra₀]"
30 else
31 extra = ""
32 end
33 @printf("%d/%d J=%f%s\n", iter, params.maxiter, v, extra)
34 return true
35 end
36 end
37
25 function simple_iterate(step :: Function, 38 function simple_iterate(step :: Function,
26 params::NamedTuple) 39 params :: NamedTuple)
27 for iter=1:params.maxiter 40 for iter=1:params.maxiter
28 step() do calc_objective 41 step() do calc_objective
29 if params.verbose_iter!=0 && mod(iter, params.verbose_iter) == 0 42 simple_verbosity(iter, params, calc_objective)
30 v, _ = calc_objective()
31 @printf("%d/%d J=%f\n", iter, params.maxiter, v)
32 return true
33 end
34 end 43 end
35 end 44 end
36 end 45 end
37 46
38 function simple_iterate(step :: Function, 47 function simple_iterate(step :: Function,
39 datachannel::Channel{T}, 48 datachannel :: Channel{T},
40 params::NamedTuple) where T 49 params :: NamedTuple) where T
41 for iter=1:params.maxiter 50 for iter=1:params.maxiter
42 d = take!(datachannel) 51 d = take!(datachannel)
43 step(d) do calc_objective 52 step(d) do calc_objective
44 if params.verbose_iter!=0 && mod(iter, params.verbose_iter) == 0 53 simple_verbosity(iter, params, calc_objective)
45 v, _ = calc_objective()
46 @printf("%d/%d J=%f\n", iter, params.maxiter, v)
47 return true
48 end
49 end 54 end
50 end 55 end
51 end 56 end
52 57
53 end 58 end

mercurial