Skip to content

Commit 6f0b96d

Browse files
authored
Define Base.summary with IO argument (#1193)
1 parent 22be384 commit 6f0b96d

35 files changed

+103
-72
lines changed

src/api.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Base.summary(r::OptimizationResults) = summary(r.method) # might want to do more here than just return summary of the method used
1+
Base.summary(io::IO, r::OptimizationResults) = summary(io, r.method) # might want to do more here than just return summary of the method used
22
minimizer(r::OptimizationResults) = r.minimizer
33
minimum(r::OptimizationResults) = r.minimum
44
iterations(r::OptimizationResults) = r.iterations

src/maximize.jl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ maximizer(r::MaximizationWrapper) = minimizer(res(r))
6868
maximum(r::Union{UnivariateOptimizationResults,MultivariateOptimizationResults}) =
6969
throw(MethodError())
7070
maximum(r::MaximizationWrapper) = -minimum(res(r))
71-
Base.summary(r::MaximizationWrapper) = summary(res(r))
71+
Base.summary(io::IO, r::MaximizationWrapper) = summary(io, res(r))
7272

7373
for api_method in (
7474
:lower_bound,
@@ -101,8 +101,10 @@ for api_method in (
101101
end
102102

103103
function Base.show(io::IO, r::MaximizationWrapper{<:UnivariateOptimizationResults})
104-
@printf io "Results of Maximization Algorithm\n"
105-
@printf io " * Algorithm: %s\n" summary(r)
104+
println(io, "Results of Maximization Algorithm")
105+
print(io, " * Algorithm: ")
106+
summary(io, r)
107+
println(io)
106108
@printf io " * Search Interval: [%f, %f]\n" lower_bound(r) upper_bound(r)
107109
@printf io " * Maximizer: %e\n" maximizer(r)
108110
@printf io " * Maximum: %e\n" maximum(r)
@@ -117,8 +119,11 @@ end
117119
function Base.show(io::IO, r::MaximizationWrapper{<:MultivariateOptimizationResults})
118120
take = Iterators.take
119121

120-
@printf io "Results of Optimization Algorithm\n"
121-
@printf io " * Algorithm: %s\n" summary(r.res)
122+
println(io, "Results of Optimization Algorithm")
123+
print(io, " * Algorithm: ")
124+
summary(io, r.res)
125+
println(io)
126+
122127
if length(join(initial_state(r), ",")) < 40
123128
@printf io " * Starting Point: [%s]\n" join(initial_state(r), ",")
124129
else

src/multivariate/solvers/constrained/fminbox.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,11 @@ function Fminbox(
232232
Fminbox(method, promote(mu0, mufactor)..., precondprep) # default optimizer
233233
end
234234

235-
Base.summary(F::Fminbox) = "Fminbox with $(summary(F.method))"
235+
function Base.summary(io::IO, F::Fminbox)
236+
print(io, "Fminbox with ")
237+
summary(io, F.method)
238+
return
239+
end
236240

237241
# barrier_method() constructs an optimizer to solve the barrier problem using m = Fminbox.method as the reference.
238242
# Essentially it only updates the P and precondprep fields of `m`.

src/multivariate/solvers/constrained/ipnewton/ipnewton.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ struct IPNewton{F,Tμ<:Union{Symbol,Number}} <: IPOptimizer{F}
55
# TODO: μ0, and show_linesearch were originally in options
66
end
77

8-
Base.summary(::IPNewton) = "Interior Point Newton"
8+
Base.summary(io::IO, ::IPNewton) = print(io, "Interior Point Newton")
99

1010
promote_objtype(method::IPNewton, x, autodiff, inplace::Bool, f::TwiceDifferentiable) = f
1111
promote_objtype(method::IPNewton, x, autodiff, inplace::Bool, f) =

src/multivariate/solvers/constrained/samin.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ end
5656
# * 2 = summary every temperature change, without param values
5757
# * 3 = summary every temperature change, with param values
5858
# covered by the trial values. 1: start decreasing temperature immediately
59-
Base.summary(::SAMIN) = "SAMIN"
59+
Base.summary(io::IO, ::SAMIN) = print(io, "SAMIN")
6060

6161
function optimize(
6262
obj_fn,

src/multivariate/solvers/first_order/accelerated_gradient_descent.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ struct AcceleratedGradientDescent{IL,L} <: FirstOrderOptimizer
1212
manifold::Manifold
1313
end
1414

15-
Base.summary(::AcceleratedGradientDescent) = "Accelerated Gradient Descent"
15+
Base.summary(io::IO, ::AcceleratedGradientDescent) = print(io, "Accelerated Gradient Descent")
1616

1717
function AcceleratedGradientDescent(;
1818
alphaguess = LineSearches.InitialPrevious(), # TODO: investigate good defaults

src/multivariate/solvers/first_order/adam.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ end
4040
# could use epsilon = T->sqrt(eps(T)) and input the promoted type
4141
Adam(; alpha = 0.0001, beta_mean = 0.9, beta_var = 0.999, epsilon = 1e-8) =
4242
Adam(alpha, beta_mean, beta_var, epsilon, Flat())
43-
Base.summary(::Adam) = "Adam"
43+
Base.summary(io::IO, ::Adam) = print(io, "Adam")
4444
function default_options(method::Adam)
4545
(; allow_f_increases = true, iterations = 10_000)
4646
end

src/multivariate/solvers/first_order/adamax.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ struct AdaMax{Tα,T,Tm} <: FirstOrderOptimizer
3939
end
4040
AdaMax(; alpha = 0.002, beta_mean = 0.9, beta_var = 0.999, epsilon = sqrt(eps(Float64))) =
4141
AdaMax(alpha, beta_mean, beta_var, epsilon, Flat())
42-
Base.summary(::AdaMax) = "AdaMax"
42+
Base.summary(io::IO, ::AdaMax) = print(io, "AdaMax")
4343
function default_options(method::AdaMax)
4444
(; allow_f_increases = true, iterations = 10_000)
4545
end

src/multivariate/solvers/first_order/bfgs.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ struct BFGS{IL,L,H,T,TM} <: FirstOrderOptimizer
1010
manifold::TM
1111
end
1212

13-
Base.summary(::BFGS) = "BFGS"
13+
Base.summary(io::IO, ::BFGS) = print(io, "BFGS")
1414

1515
"""
1616
# BFGS

src/multivariate/solvers/first_order/cg.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ struct ConjugateGradient{Tf,T,Tprep,IL,L} <: FirstOrderOptimizer
5151
manifold::Manifold
5252
end
5353

54-
Base.summary(::ConjugateGradient) = "Conjugate Gradient"
54+
Base.summary(io::IO, ::ConjugateGradient) = print(io, "Conjugate Gradient")
5555

5656
"""
5757
# Conjugate Gradient Descent

0 commit comments

Comments
 (0)