Skip to content

Commit

Permalink
Rebase and reformat
Browse files Browse the repository at this point in the history
  • Loading branch information
odow committed Mar 17, 2021
1 parent a21cb60 commit 089f86a
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 49 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/format_check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
using JuliaFormatter
format("src", verbose=true)
format("test", verbose=true)
out = String(read(Cmd(`git diff --name-only`)))
out = String(read(Cmd(`git diff`)))
if isempty(out)
exit(0)
end
Expand Down
6 changes: 4 additions & 2 deletions src/_Derivatives/subexpressions.jl
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@ as the uninitialized vector, or by explicitly computing the full
function _topological_sort(
starts,
subexpressions::Vector{Vector{NodeData}},
subexpression_dependency_graph::Vector{Vector{Int}} =
Vector{Vector{Int}}(undef, length(subexpressions)),
subexpression_dependency_graph::Vector{Vector{Int}} = Vector{Vector{Int}}(
undef,
length(subexpressions),
),
)
ordered = Int[]
in_order = fill(false, length(subexpressions))
Expand Down
10 changes: 7 additions & 3 deletions src/nlp.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1365,7 +1365,10 @@ mutable struct _ParameterPrintWrapper
mode::Any
end
function Base.show(io::IO, p::_ParameterPrintWrapper)
relevant_parameters = filter(i->i[2] isa NonlinearParameter && i[2].index==p.idx, p.model.obj_dict)
relevant_parameters = filter(
i -> i[2] isa NonlinearParameter && i[2].index == p.idx,
p.model.obj_dict,
)
if length(relevant_parameters) == 1
par_name = first(relevant_parameters)[1]
print(io, par_name)
Expand Down Expand Up @@ -1639,7 +1642,6 @@ function MOI.constraint_expr(d::NLPEvaluator, i::Integer)
end
end


"""
_VarValueMap{T,F}
Expand All @@ -1656,7 +1658,9 @@ struct _VarValueMap{T,F}
end
function Base.getindex(m::_VarValueMap{T}, moi_index::Int64) where {T}
return get!(m.cache, moi_index) do
return m.var_value(VariableRef(m.model, MOI.VariableIndex(moi_index)))::T
return m.var_value(
VariableRef(m.model, MOI.VariableIndex(moi_index)),
)::T
end
end

Expand Down
55 changes: 44 additions & 11 deletions src/print.jl
Original file line number Diff line number Diff line change
Expand Up @@ -408,7 +408,7 @@ end
"""
Base.show([io::IO], summary::SolutionSummary; verbose::Bool = false)
Write a summary of the solution results to `io` (or to `stdout` if `io` is not
Write a summary of the solution results to `io` (or to `stdout` if `io` is not
given).
"""
function Base.show(io::IO, summary::_SolutionSummary)
Expand All @@ -425,8 +425,10 @@ function _show_status_summary(io::IO, summary::_SolutionSummary)
println(io, " Termination status : ", summary.termination_status)
println(io, " Primal status : ", summary.primal_status)
println(io, " Dual status : ", summary.dual_status)
summary.verbose && println(io, " Result count : ", summary.result_count)
summary.verbose && println(io, " Has duals : ", summary.has_duals)
if summary.verbose
println(io, " Result count : ", summary.result_count)
println(io, " Has duals : ", summary.has_duals)
end
println(io, " Message from the solver:")
println(io, " \"", summary.raw_status, "\"")
println(io)
Expand All @@ -436,18 +438,38 @@ end
function _show_candidate_solution_summary(io::IO, summary::_SolutionSummary)
println(io, "* Candidate solution")
println(io, " Objective value : ", summary.objective_value)
_print_if_not_missing(io, " Objective bound : ", summary.objective_bound)
_print_if_not_missing(io, " Dual objective value : ", summary.dual_objective_value)
_print_if_not_missing(
io,
" Objective bound : ",
summary.objective_bound,
)
_print_if_not_missing(
io,
" Dual objective value : ",
summary.dual_objective_value,
)
if summary.verbose && summary.has_values
println(io, " Primal solution : ")
for variable_name in sort(collect(keys(summary.primal_solution)))
println(io, " ", variable_name, " : ", summary.primal_solution[variable_name])
println(
io,
" ",
variable_name,
" : ",
summary.primal_solution[variable_name],
)
end
end
if summary.verbose && summary.has_duals
println(io, " Dual solution : ")
for constraint_name in sort(collect(keys(summary.dual_solution)))
println(io, " ", constraint_name, " : ", summary.dual_solution[constraint_name])
println(
io,
" ",
constraint_name,
" : ",
summary.dual_solution[constraint_name],
)
end
end
println(io)
Expand All @@ -457,8 +479,16 @@ end
function _show_work_counters_summary(io::IO, summary::_SolutionSummary)
println(io, "* Work counters")
println(io, " Solve time (sec) : ", @sprintf("%.5f", summary.solve_time))
_print_if_not_missing(io, " Simplex iterations : ", summary.simplex_iterations)
_print_if_not_missing(io, " Barrier iterations : ", summary.barrier_iterations)
_print_if_not_missing(
io,
" Simplex iterations : ",
summary.simplex_iterations,
)
_print_if_not_missing(
io,
" Barrier iterations : ",
summary.barrier_iterations,
)
_print_if_not_missing(io, " Node count : ", summary.node_count)
return
end
Expand All @@ -482,7 +512,7 @@ function _get_constraint_dict(model)
for (F, S) in list_of_constraint_types(model)
for constraint in all_constraints(model, F, S)
constraint_name = name(constraint)
if !isempty(constraint_name)
if !isempty(constraint_name)
dict[constraint_name] = dual(constraint)
end
end
Expand Down Expand Up @@ -988,7 +1018,10 @@ function function_string(::Type{<:PrintMode}, p::NonlinearExpression)
end

function function_string(::Type{<:PrintMode}, p::NonlinearParameter)
relevant_parameters = filter(i->i[2] isa NonlinearParameter && i[2].index==p.index, p.m.obj_dict)
relevant_parameters = filter(
i -> i[2] isa NonlinearParameter && i[2].index == p.index,
p.m.obj_dict,
)
if length(relevant_parameters) == 1
par_name = first(relevant_parameters)[1]
return "Reference to nonlinear parameter $(par_name)"
Expand Down
42 changes: 10 additions & 32 deletions test/print.jl
Original file line number Diff line number Diff line change
Expand Up @@ -287,16 +287,8 @@ end
model[:param] = @NLparameter(model, param == 1.0)

constr = @NLconstraint(model, expr - param <= 0)
io_test(
REPLMode,
constr,
"(subexpression[1] - param) - 0.0 $le 0",
)
io_test(
IJuliaMode,
constr,
"(subexpression_{1} - param) - 0.0 \\leq 0",
)
io_test(REPLMode, constr, "(subexpression[1] - param) - 0.0 $le 0")
io_test(IJuliaMode, constr, "(subexpression_{1} - param) - 0.0 \\leq 0")
end

@testset "Custom constraint" begin
Expand Down Expand Up @@ -839,7 +831,6 @@ end
end

@testset "Print solution summary" begin

model = Model()
@variable(model, x <= 2.0)
@variable(model, y >= 0.0)
Expand All @@ -848,7 +839,7 @@ end

JuMP.set_name(JuMP.UpperBoundRef(x), "xub")
JuMP.set_name(JuMP.LowerBoundRef(y), "ylb")

set_optimizer(
model,
() -> MOIU.MockOptimizer(
Expand All @@ -866,24 +857,9 @@ end
MOI.set(mockoptimizer, MOI.ResultCount(), 1)
MOI.set(mockoptimizer, MOI.PrimalStatus(), MOI.FEASIBLE_POINT)
MOI.set(mockoptimizer, MOI.DualStatus(), MOI.FEASIBLE_POINT)
MOI.set(
mockoptimizer,
MOI.VariablePrimal(),
JuMP.optimizer_index(x),
1.0,
)
MOI.set(
mockoptimizer,
MOI.VariablePrimal(),
JuMP.optimizer_index(y),
0.0,
)
MOI.set(
mockoptimizer,
MOI.ConstraintDual(),
JuMP.optimizer_index(c),
-1.0,
)
MOI.set(mockoptimizer, MOI.VariablePrimal(), JuMP.optimizer_index(x), 1.0)
MOI.set(mockoptimizer, MOI.VariablePrimal(), JuMP.optimizer_index(y), 0.0)
MOI.set(mockoptimizer, MOI.ConstraintDual(), JuMP.optimizer_index(c), -1.0)
MOI.set(
mockoptimizer,
MOI.ConstraintDual(),
Expand Down Expand Up @@ -923,7 +899,10 @@ end
Node count : 1
"""

@test sprint((io, model) -> show(io, solution_summary(model, verbose=true)), model) == """
@test sprint(
(io, model) -> show(io, solution_summary(model, verbose = true)),
model,
) == """
* Solver : Mock
* Status
Expand Down Expand Up @@ -952,5 +931,4 @@ end
Barrier iterations : 1
Node count : 1
"""

end

0 comments on commit 089f86a

Please sign in to comment.