From 56dcdcceda84ee460a84adf7055b01efdd31e954 Mon Sep 17 00:00:00 2001 From: Christoph Ortner Date: Wed, 11 Sep 2024 15:04:30 -0700 Subject: [PATCH] asp bugfix --- src/asp.jl | 4 ++-- test/test_asp.jl | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/asp.jl b/src/asp.jl index 4f690c4..c5a6cbb 100644 --- a/src/asp.jl +++ b/src/asp.jl @@ -71,8 +71,8 @@ function solve(solver::ASP, A, y, Aval=A, yval=y) tracer = asp_homotopy(AP, y; solver.params...) q = length(tracer) - every = max(1, q ÷ solver.nstore) - istore = unique([1:every:q; q]) + every = max(1, q / solver.nstore) + istore = unique(round.(Int, [1:every:q; q])) new_tracer = [ (solution = tracer[i][1], λ = tracer[i][2], σ = 0.0 ) for i in istore ] diff --git a/test/test_asp.jl b/test/test_asp.jl index 4cacb64..e607bed 100644 --- a/test/test_asp.jl +++ b/test/test_asp.jl @@ -1,6 +1,5 @@ using ACEfit using LinearAlgebra, Random, Test -using Random ## @@ -29,6 +28,12 @@ Av = A[val_indices,:] yt = y[train_indices] yv = y[val_indices] +for (nstore, n1) in [ (20, 21), (100, 101), (200, 165)] + solver = ACEfit.ASP(P=I, select = :final, nstore = nstore, loglevel=0, traceFlag=true) + results = ACEfit.solve(solver, A, y) + @test length(results["path"]) == n1 +end + for (select, tolr, tolc) in [ (:final, 10*epsn, 1), ( (:byerror,1.3), 10*epsn, 1), ( (:bysize,73), 1, 10) ]