Skip to content
This repository has been archived by the owner on Apr 4, 2023. It is now read-only.

Commit

Permalink
Bump Version
Browse files Browse the repository at this point in the history
  • Loading branch information
pedromxavier committed Oct 24, 2022
1 parent 93f160f commit 6ec0830
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 138 deletions.
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ authors = [
"joaquimg <joaquim@psr-inc.com>",
"bernalde <dbernalneira@usra.edu>",
]
version = "0.5.0"
version = "0.5.1"

[deps]
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
Expand Down
220 changes: 83 additions & 137 deletions src/test/examples/basic.jl
Original file line number Diff line number Diff line change
@@ -1,192 +1,138 @@
function __test_basic_examples(::Type{S}) where {S<:AbstractSampler}
function __test_basic_examples(sampler::Type{S}) where {S<:AbstractSampler}
n = 3

# ~ QUBO Matrix
Q = [-1 2 2;2 -1 2;2 2 -1]
Q = [
-1 2 2
2 -1 2
2 2 -1
]

# ~ Boolean States
= 0.0
= 1.0
, = 0, 1

Test.@testset "Basic ~ Bool ~ Min" begin
model = JuMP.Model(S)

# -*- Build Model -*- #
model = JuMP.Model(sampler)
JuMP.@variable(model, x[1:n], Bin)
JuMP.@objective(model, Min, x' * Q * x)

# -*- Run -*- #
JuMP.optimize!(model)

Test.@test JuMP.result_count(model) == 2^n # ~ 8

for i = 1:3
xi = JuMP.value.(x; result=i)
yi = JuMP.objective_value(model; result=i)

Test.@test xi [, , ] || xi [, , ] || xi [, , ]
Test.@test yi -1.0
end

let i = 4
xi = JuMP.value.(x; result=i)
yi = JuMP.objective_value(model; result=i)

Test.@test xi [, , ]
Test.@test yi 0.0
end

for i = 5:7
xi = JuMP.value.(x; result=i)
yi = JuMP.objective_value(model; result=i)

Test.@test xi [, , ] || xi [, , ] || xi [, , ]
Test.@test yi 2.0
end
Test.@test JuMP.result_count(model) > 0

let i = 8
xi = JuMP.value.(x; result=i)
yi = JuMP.objective_value(model; result=i)
for i = 1:JuMP.result_count(model)
xi = JuMP.value.(x; result = i)
yi = JuMP.objective_value(model; result = i)

Test.@test xi [, , ]
Test.@test yi 9.0
if xi [, , ] || xi [, , ] || xi [, , ]
Test.@test yi -1.0
elseif xi [, , ]
Test.@test yi 0.0
elseif xi [, , ] || xi [, , ] || xi [, , ]
Test.@test yi 2.0
elseif xi [, , ]
Test.@test yi 9.0
else
Test.@test false
end
end
end

Test.@testset "Basic ~ Bool ~ Max" begin
model = JuMP.Model(S)

# -*- Build Model -*- #
model = JuMP.Model(sampler)
JuMP.@variable(model, x[1:n], Bin)
JuMP.@objective(model, Max, x' * Q * x)

# -*- Run -*- #
JuMP.optimize!(model)

Test.@test JuMP.result_count(model) == 2^n # ~ 8

let i = 1
xi = JuMP.value.(x; result=i)
yi = JuMP.objective_value(model; result=i)

Test.@test xi [, , ]
Test.@test yi 9.0
end

for i = 2:4
xi = JuMP.value.(x; result=i)
yi = JuMP.objective_value(model; result=i)

Test.@test xi [, , ] || xi [, , ] || xi [, , ]
Test.@test yi 2.0
end

let i = 5
xi = JuMP.value.(x; result=i)
yi = JuMP.objective_value(model; result=i)

Test.@test xi [, , ]
Test.@test yi 0.0
end
Test.@test JuMP.result_count(model) > 0

for i = 6:8
xi = JuMP.value.(x; result=i)
yi = JuMP.objective_value(model; result=i)
for i = 1:JuMP.result_count(model)
xi = JuMP.value.(x; result = i)
yi = JuMP.objective_value(model; result = i)

Test.@test xi [, , ] || xi [, , ] || xi [, , ]
Test.@test yi -1.0
if xi [, , ]
Test.@test yi 9.0
elseif xi [, , ] || xi [, , ] || xi [, , ]
Test.@test yi 2.0
elseif xi [, , ]
Test.@test yi 0.0
elseif xi [, , ] || xi [, , ] || xi [, , ]
Test.@test yi -1.0
else
Test.@test false
end
end
end

# ~ Ising Hamiltonian
J = [0 4 4; 0 0 4; 0 0 0]
h = [-1;-1;-1]
h = [-1; -1; -1]

# ~ Spin states
= -1.0
= 1.0
, = -1, 1

Test.@testset "Basic ~ Spin ~ Min" begin
model = JuMP.Model(S)

# -*- Build Model -*- #
model = JuMP.Model(sampler)
JuMP.@variable(model, s[1:n], Anneal.Spin)
JuMP.@objective(model, Min, s' * J * s + h' * s)

# -*- Run -*- #
JuMP.optimize!(model)

Test.@test JuMP.result_count(model) == 2^n # ~ 8

for i = 1:3
si = JuMP.value.(s; result=i)
Hi = JuMP.objective_value(model; result=i)

Test.@test si [, , ] || si [, , ] || si [, , ]
Test.@test Hi -5.0
end

for i = 4:6
si = JuMP.value.(s; result=i)
Hi = JuMP.objective_value(model; result=i)

Test.@test si [, , ] || si [, , ] || si [, , ]
Test.@test Hi -3.0
end

let i = 7
si = JuMP.value.(s; result=i)
Hi = JuMP.objective_value(model; result=i)

Test.@test si [, , ]
Test.@test Hi 9.0
end
Test.@test JuMP.result_count(model) > 0

let i = 8
si = JuMP.value.(s; result=i)
Hi = JuMP.objective_value(model; result=i)
for i = 1:JuMP.result_count(model)
si = JuMP.value.(s; result = i)
Hi = JuMP.objective_value(model; result = i)

Test.@test si [, , ]
Test.@test Hi 15.0
if si [, , ] || si [, , ] || si [, , ]
Test.@test Hi -5.0
elseif si [, , ] || si [, , ] || si [, , ]
Test.@test Hi -3.0
elseif si [, , ]
Test.@test Hi 9.0
elseif si [, , ]
Test.@test Hi 15.0
else
Test.@test false
end
end
end

Test.@testset "Basic ~ Spin ~ Max" begin
model = JuMP.Model(S)

# -*- Build Model -*- #
model = JuMP.Model(sampler)
JuMP.@variable(model, s[1:n], Anneal.Spin)
JuMP.@objective(model, Max, s' * J * s + h' * s)

# -*- Run -*- #
JuMP.optimize!(model)

Test.@test JuMP.result_count(model) == 2^n # ~ 8

let i = 1
si = JuMP.value.(s; result=i)
Hi = JuMP.objective_value(model; result=i)

Test.@test si [, , ]
Test.@test Hi 15.0
end

let i = 2
si = JuMP.value.(s; result=i)
Hi = JuMP.objective_value(model; result=i)

Test.@test si [, , ]
Test.@test Hi 9.0
end

for i = 3:5
si = JuMP.value.(s; result=i)
Hi = JuMP.objective_value(model; result=i)

Test.@test si [, , ] || si [, , ] || si [, , ]
Test.@test Hi -3.0
end
Test.@test JuMP.result_count(model) > 0

for i = 6:8
si = JuMP.value.(s; result=i)
Hi = JuMP.objective_value(model; result=i)
for i = 1:JuMP.result_count(model)
si = JuMP.value.(s; result = i)
Hi = JuMP.objective_value(model; result = i)

Test.@test si [, , ] || si [, , ] || si [, , ]
Test.@test Hi -5.0
if si [, , ]
Test.@test Hi 15.0
elseif si [, , ]
Test.@test Hi 9.0
elseif si [, , ] || si [, , ] || si [, , ]
Test.@test Hi -3.0
elseif si [, , ] || si [, , ] || si [, , ]
Test.@test Hi -5.0
else
Test.@test false
end
end
end

nothing
return nothing
end
5 changes: 5 additions & 0 deletions src/test/test.jl
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
# -*- Interface Tests -*- #
include("interface/moi.jl")
include("interface/anneal.jl")

# -*- Example Tests -*- #
include("examples/basic.jl")

@doc raw"""
""" function test end

@doc raw"""
""" function test_config! end

function Anneal.test(optimizer::Type{<:AbstractSampler}; examples::Bool=false)
Test.@testset "-*- Interface" verbose = true begin
__test_moi_interface(optimizer)
Expand Down

2 comments on commit 6ec0830

@pedromxavier
Copy link
Contributor Author

Choose a reason for hiding this comment

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

@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/70931

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 v0.5.1 -m "<description of version>" 6ec08308f0333c8ba8dc922b071d896590c466fc
git push origin v0.5.1

Please sign in to comment.