Skip to content

Commit

Permalink
Add axis_constraints.jl benchmark
Browse files Browse the repository at this point in the history
  • Loading branch information
blegat committed Oct 2, 2019
1 parent 61d5e1a commit bc881f7
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 1 deletion.
1 change: 0 additions & 1 deletion src/Containers/container.jl
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@ function container(f::Function, indices,
end
push!(unique_indices, index)
end
# TODO compute idx
error("Repeated index ", duplicate, ". Index sets must have unique elements.")
end
return SparseAxisArray(Dict(data))
Expand Down
57 changes: 57 additions & 0 deletions test/perf/axis_constraints.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
using JuMP
using BenchmarkTools

function sum_iterate(con_refs)
x = 0.0
for con_ref in con_refs
x += dual(con_ref)
end
return x
end

function sum_index(con_refs)
x = 0.0
for i in eachindex(con_refs)
x += dual(con_refs[i])
end
return x
end

function dense_axis_constraints(n)
model = Model()
mock = MOIU.MockOptimizer(MOIU.Model{Float64}(),
eval_variable_constraint_dual=false)
MOIU.set_mock_optimize!(mock,
mock -> MOIU.mock_optimize!(mock, zeros(n),
(MOI.SingleVariable, MOI.EqualTo{Float64}) => ones(n - 1)))
MOIU.reset_optimizer(model, mock)

@variable(model, x[1:n])
set = MOI.EqualTo(0.0)
@time @constraint(model, con_refs[i = 2:n], x[i] in set)
optimize!(model)
@assert sum_iterate(con_refs) == n - 1
@btime sum_iterate($con_refs)
@assert sum_index(con_refs) == n - 1
@btime sum_index($con_refs)
return
end
function sparse_axis_constraints(n)
model = Model()
mock = MOIU.MockOptimizer(MOIU.Model{Float64}(),
eval_variable_constraint_dual=false)
MOIU.set_mock_optimize!(mock,
mock -> MOIU.mock_optimize!(mock, zeros(n),
(MOI.SingleVariable, MOI.EqualTo{Float64}) => ones(div(n, 2))))
MOIU.reset_optimizer(model, mock)

@variable(model, x[1:n])
set = MOI.EqualTo(0.0)
@time @constraint(model, con_refs[i = 1:n; iseven(i)], x[i] in set)
optimize!(model)
@assert sum_iterate(con_refs) == div(n, 2)
@btime sum_iterate($con_refs)
@assert sum_index(con_refs) == div(n, 2)
@btime sum_index($con_refs)
return
end

0 comments on commit bc881f7

Please sign in to comment.