|
51 | 51 | @test isapprox(cost, anticipative_value; atol=1e-5) |
52 | 52 | @test isapprox(cost, cost2; atol=1e-5) |
53 | 53 | end |
| 54 | + |
| 55 | +@testset "DVSP - generate_dataset with environments" begin |
| 56 | + using DecisionFocusedLearningBenchmarks.DynamicVehicleScheduling |
| 57 | + |
| 58 | + b = DynamicVehicleSchedulingBenchmark(; two_dimensional_features=true) |
| 59 | + envs = generate_environments(b, 5; seed=0) |
| 60 | + policies = generate_baseline_policies(b) |
| 61 | + lazy = policies[1] |
| 62 | + |
| 63 | + # target_policy takes env -> Vector{DataSample} (full trajectory) |
| 64 | + target_policy = env -> evaluate_policy!(lazy, env)[2] |
| 65 | + |
| 66 | + # vector-of-environments overload |
| 67 | + dataset = generate_dataset(b, envs; target_policy=target_policy) |
| 68 | + @test dataset isa Vector{DataSample} |
| 69 | + @test !isempty(dataset) |
| 70 | + @test all(!isnothing(s.x) for s in dataset) |
| 71 | + @test all(!isnothing(s.y) for s in dataset) |
| 72 | + |
| 73 | + # count-based wrapper |
| 74 | + dataset2 = generate_dataset(b, 3; seed=1, target_policy=target_policy) |
| 75 | + @test dataset2 isa Vector{DataSample} |
| 76 | + @test !isempty(dataset2) |
| 77 | + |
| 78 | + # seed keyword is forwarded: same seed → same dataset |
| 79 | + dataset3a = generate_dataset(b, 3; seed=42, target_policy=target_policy) |
| 80 | + dataset3b = generate_dataset(b, 3; seed=42, target_policy=target_policy) |
| 81 | + @test length(dataset3a) == length(dataset3b) |
| 82 | +end |
0 commit comments