|
| 1 | +using SparseArrays |
| 2 | +using SparseMatrixColorings |
| 3 | +using StableRNGs |
| 4 | +using Test |
| 5 | + |
| 6 | +rng = StableRNG(0) |
| 7 | + |
| 8 | +asymmetric_params = vcat( |
| 9 | + [(10, 20, p) for p in (0.0:0.1:0.5)], |
| 10 | + [(20, 10, p) for p in (0.0:0.1:0.5)], |
| 11 | + [(100, 200, p) for p in (0.01:0.01:0.05)], |
| 12 | + [(200, 100, p) for p in (0.01:0.01:0.05)], |
| 13 | +) |
| 14 | + |
| 15 | +@testset "Column coloring" begin |
| 16 | + problem = ColoringProblem(; structure=:nonsymmetric, partition=:column) |
| 17 | + algo = GreedyColoringAlgorithm() |
| 18 | + optalgo = OptimalColoringAlgorithm(HiGHS.Optimizer) |
| 19 | + for (m, n, p) in asymmetric_params |
| 20 | + A = sprand(rng, m, n, p) |
| 21 | + result = coloring(A, problem, algo) |
| 22 | + optresult = coloring(A, problem, optalgo) |
| 23 | + @test ncolors(result) >= ncolors(optresult) |
| 24 | + end |
| 25 | +end |
| 26 | + |
| 27 | +@testset "Row coloring" begin |
| 28 | + problem = ColoringProblem(; structure=:nonsymmetric, partition=:row) |
| 29 | + algo = GreedyColoringAlgorithm() |
| 30 | + optalgo = OptimalColoringAlgorithm(HiGHS.Optimizer) |
| 31 | + for (m, n, p) in asymmetric_params |
| 32 | + A = sprand(rng, m, n, p) |
| 33 | + result = coloring(A, problem, algo) |
| 34 | + optresult = coloring(A, problem, optalgo) |
| 35 | + @test ncolors(result) >= ncolors(optresult) |
| 36 | + end |
| 37 | +end |
0 commit comments