Skip to content

Commit d6dfae1

Browse files
committed
Add QAP as an available model
1 parent bbf0574 commit d6dfae1

File tree

4 files changed

+44
-23
lines changed

4 files changed

+44
-23
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ConstraintModels"
22
uuid = "841a6ec5-cac3-4c42-9a0a-4b21c9553698"
33
authors = ["Jean-Francois Baffier"]
4-
version = "0.1.1"
4+
version = "0.1.2"
55

66
[deps]
77
CBLS = "a3809bfe-37bb-4d48-a667-bac4c6be8d90"

src/ConstraintModels.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ const LS = LocalSearchSolvers
1010

1111
import LocalSearchSolvers: Options
1212

13+
export qap
1314
export mincut
1415
export golomb
1516
export magic_square
1617
export n_queens
1718
export sudoku
1819

20+
include("assignment.jl")
1921
include("cut.jl")
2022
include("golomb.jl")
2123
include("magic_square.jl")

src/assignment.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function qap(n, W, D, ::Val{:JuMP})
2+
model = JuMP.Model(CBLS.Optimizer)
3+
4+
@variable(model, X[1:n], DiscreteSet(1:n))
5+
@constraint(model, X in AllDifferent())
6+
7+
Σwd = p -> sum(sum(W[p[i], p[j]] * D[i, j] for j in 1:n) for i in 1:n)
8+
@objective(model, Min, ScalarFunction(Σwd))
9+
10+
return model, X
11+
end
12+
13+
qap(n, weigths, distances; modeler = :JuMP) = qap(n, weigths, distances, Val(modeler))

test/JuMP.jl

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -18,30 +18,36 @@
1818
@constraint(m, X in Ordered())
1919
end
2020

21-
# @testset "JuMP: sudoku 9x9" begin
22-
# m, X = sudoku(3)
23-
# optimize!(m)
24-
# solution_ = value.(X)
25-
# display(solution_, Val(:sudoku))
26-
# end
21+
@testset "JuMP: sudoku 9x9" begin
22+
m, X = sudoku(3)
23+
optimize!(m)
24+
solution_ = value.(X)
25+
display(solution_, Val(:sudoku))
26+
end
2727

28-
# @testset "JuMP: golomb(5)" begin
29-
# m, X = golomb(5)
30-
# optimize!(m)
31-
# @info "JuMP: golomb(5)" value.(X)
32-
# end
28+
@testset "JuMP: golomb(5)" begin
29+
m, X = golomb(5)
30+
optimize!(m)
31+
@info "JuMP: golomb(5)" value.(X)
32+
end
3333

34-
# @testset "JuMP: magic_square(3)" begin
35-
# m, X = magic_square(3)
36-
# optimize!(m)
37-
# @info "JuMP: magic_square(3)" value.(X)
38-
# end
34+
@testset "JuMP: magic_square(3)" begin
35+
m, X = magic_square(3)
36+
optimize!(m)
37+
@info "JuMP: magic_square(3)" value.(X)
38+
end
3939

40-
# @testset "JuMP: n_queens(5)" begin
41-
# m, X = n_queens(5)
42-
# optimize!(m)
43-
# @info "JuMP: n_queens(5)" value.(X)
44-
# end
40+
@testset "JuMP: n_queens(5)" begin
41+
m, X = n_queens(5)
42+
optimize!(m)
43+
@info "JuMP: n_queens(5)" value.(X)
44+
end
45+
46+
@testset "JuMP: qap(12)" begin
47+
m, X = qap(12, qap_weights, qap_distances)
48+
optimize!(m)
49+
@info "JuMP: qap(12)" value.(X)
50+
end
4551

4652
@testset "JuMP: basic opt" begin
4753
model = Model(CBLS.Optimizer)
@@ -62,4 +68,4 @@ end
6268
optimize!(model)
6369

6470
@info "JuMP: basic opt" value(x) value(y) (12*value(x)+20*value(y))
65-
end
71+
end

0 commit comments

Comments
 (0)