Skip to content

Commit

Permalink
Merge pull request #91 from mariohsouto/jg/moi1
Browse files Browse the repository at this point in the history
MOI 1.0
  • Loading branch information
joaquimg committed Mar 2, 2022
2 parents 9df324d + aabdf90 commit 73a843e
Show file tree
Hide file tree
Showing 6 changed files with 102 additions and 219 deletions.
6 changes: 3 additions & 3 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "ProxSDP"
uuid = "65e78d25-6039-50a4-9445-38022e3d2eb3"
repo = "https://github.com/mariohsouto/ProxSDP.jl.git"
version = "1.7.0"
version = "1.8.0"

[deps]
Arpack = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97"
Expand All @@ -15,10 +15,10 @@ SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"

[compat]
julia = "1"
julia = "1.6"
Arpack = "0.3.2, 0.5.1"
KrylovKit = "0.5.2"
MathOptInterface = "0.10.6"
MathOptInterface = "1"
TimerOutputs = "0.5.0"

[extras]
Expand Down
4 changes: 3 additions & 1 deletion src/MOI_wrapper.jl
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ end

MOI.get(::Optimizer, ::MOI.SolverName) = "ProxSDP"

MOI.get(::Optimizer, ::MOI.SolverVersion) = "1.7.0"
MOI.get(::Optimizer, ::MOI.SolverVersion) = "1.8.0"

function MOI.set(optimizer::Optimizer, param::MOI.RawOptimizerAttribute, value)
fields = fieldnames(Options)
Expand Down Expand Up @@ -353,6 +353,8 @@ function MOI.optimize!(dest::Optimizer, src::MOI.ModelLike)
return index_map, false
end

MOI.supports_incremental_interface(::Optimizer) = false

#=
Attributes
=#
Expand Down
4 changes: 2 additions & 2 deletions src/pdhg.jl
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ function chambolle_pock(
end

# max_iter or time limit stop condition
if p.iter >= opt.max_iter_local || time() - p.time0 > opt.time_limit
if p.iter >= opt.max_iter_local || time() - p.time0 >= opt.time_limit
if p.iter > opt.min_iter_time_infeas &&
max_abs_diff(residuals.dual_gap) < opt.infeas_stable_gap_tol &&
residuals.dual_gap[k] > opt.infeas_limit_gap_tol # low gap but far from zero, say 10%
Expand Down Expand Up @@ -376,7 +376,7 @@ function chambolle_pock(
println(" WARNING: Time limit hit.")
end
end
if p.iter >= opt.max_iter_local || time() - p.time0 > opt.time_limit
if p.iter >= opt.max_iter_local || time() - p.time0 >= opt.time_limit
break
end
end
Expand Down
58 changes: 33 additions & 25 deletions test/moi_proxsdp_unit.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
function simple_lp(optimizer)
function simple_lp(bridged)

bridged = MOIB.full_bridge_optimizer(optimizer, Float64)
MOI.empty!(bridged)
@test MOI.is_empty(bridged)

Expand Down Expand Up @@ -49,9 +48,8 @@ function simple_lp(optimizer)

end

function simple_lp_2_1d_sdp(optimizer)
function simple_lp_2_1d_sdp(bridged)

bridged = MOIB.full_bridge_optimizer(optimizer, Float64)
MOI.empty!(bridged)
@test MOI.is_empty(bridged)

Expand Down Expand Up @@ -96,9 +94,8 @@ function simple_lp_2_1d_sdp(optimizer)

end

function lp_in_SDP_equality_form(optimizer)
function lp_in_SDP_equality_form(bridged)

bridged = MOIB.full_bridge_optimizer(optimizer, Float64)
MOI.empty!(bridged)
@test MOI.is_empty(bridged)

Expand Down Expand Up @@ -275,17 +272,6 @@ end

function double_sdp_with_duplicates(optimizer)

cache = MOIU.UniversalFallback(MOIU.Model{Float64}());
optimizer0 = ProxSDP.Optimizer(
log_verbose = true,
log_freq = 10,
check_dual_feas = true,
check_dual_feas_freq = 10,
)
MOI.empty!(cache);
optimizer1 = MOIU.CachingOptimizer(cache, optimizer0);
optimizer = MOIB.full_bridge_optimizer(optimizer1, Float64);

MOI.empty!(optimizer)

x = MOI.add_variable(optimizer)
Expand Down Expand Up @@ -352,11 +338,33 @@ function sdp_wiki(optimizer)
end


simple_lp(optimizer)
simple_lp_2_1d_sdp(optimizer)
lp_in_SDP_equality_form(optimizer)
lp_in_SDP_inequality_form(optimizer)
sdp_from_moi(optimizer)
double_sdp_from_moi(optimizer)
double_sdp_with_duplicates(optimizer)
sdp_wiki(optimizer)
simple_lp(optimizer_bridged)
simple_lp_2_1d_sdp(optimizer_bridged)
lp_in_SDP_equality_form(optimizer_bridged)
lp_in_SDP_inequality_form(optimizer_bridged)
sdp_from_moi(optimizer_bridged)
double_sdp_from_moi(optimizer_bridged)
double_sdp_with_duplicates(optimizer_bridged)
sdp_wiki(optimizer_bridged)

# print test
const optimizer_print = MOI.instantiate(
()->ProxSDP.Optimizer(
log_freq = 10, log_verbose = true, timer_verbose = true, extended_log = true, extended_log2 = true,
tol_gap = 1e-4, tol_feasibility = 1e-4),
with_bridge_type = Float64)
sdp_wiki(optimizer_print)

# eig solvers
default_solver = MOI.get(optimizer_bridged, MOI.RawOptimizerAttribute("eigsolver"))
min_size_krylov_eigs = MOI.get(optimizer_bridged, MOI.RawOptimizerAttribute("min_size_krylov_eigs"))
MOI.set(optimizer_bridged, MOI.RawOptimizerAttribute("eigsolver"), 1)
MOI.set(optimizer_bridged, MOI.RawOptimizerAttribute("min_size_krylov_eigs"), 1)
sdp_wiki(optimizer_bridged)
MOI.set(optimizer_bridged, MOI.RawOptimizerAttribute("eigsolver"), 2)
sdp_wiki(optimizer_bridged)
MOI.set(optimizer_bridged, MOI.RawOptimizerAttribute("min_size_krylov_eigs"), min_size_krylov_eigs)
MOI.set(optimizer_bridged, MOI.RawOptimizerAttribute("eigsolver"), default_solver)
MOI.set(optimizer_bridged, MOI.RawOptimizerAttribute("full_eig_decomp"), true)
sdp_wiki(optimizer_bridged)
MOI.set(optimizer_bridged, MOI.RawOptimizerAttribute("full_eig_decomp"), false)

2 comments on commit 73a843e

@joaquimg
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator register()

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/55817

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v1.8.0 -m "<description of version>" 73a843e63cf60d5ffa67e0d1d664721947327800
git push origin v1.8.0

Please sign in to comment.