NEWS
GreedyExperimentalDesign 1.35
- Curation of designs based on minimizing orthogonality as measured by average absolute correlation between each pair of vectors
- Hadamard matrix experimental designs
GreedyExperimentalDesign 1.31
- Various speedups and bug fixes.
GreedyExperimentalDesign 1.21
- Fixed small bug, deleted vignette which was causing compilation issues.
GreedyExperimentalDesign 1.6.1 (2026-04-30)
- Optional GPU acceleration via wgpu-native (WebGPU) on Linux (Vulkan), macOS (Metal), and Windows (Direct3D 12/Vulkan)
- All five compute shaders use workgroup shared memory tiling, eliminating 8-16x memory bandwidth waste versus naive global-memory access
- Distance matrix shader tiles X rows cooperatively across 256-thread workgroups, computing all n*(n-1)/2 pairs in parallel
- Kernel matrix shader (Gaussian, Laplacian, inverse multiquadric, exponential, polynomial) uses the same 16-feature tiling strategy
- Batch objective shader evaluates r candidate designs simultaneously; each workgroup tiles the n design-vector entries into shared memory before the inner product loop
- Multiple-kernel objective shader applies the same tiling per kernel and accumulates the weighted (optionally log-scaled) sum in a single GPU pass
- Greedy search shader (full_greedy_search_gpu) runs the complete pair-switching loop on the GPU: incremental O(p) average update per iteration eliminates the O(np) full recompute, and a 256-thread workgroup parallel argmin reduction reads back only 4 bytes per iteration instead of numITnumIC*4 bytes
- New R functions: ged_gpu_available(), ged_gpu_devices(), compute_distance_matrix_gpu(), compute_kernel_matrix_gpu(), compute_objective_vals_gpu(), compute_multiple_kernel_objective_vals_gpu(), compute_randomization_metrics_gpu(), full_greedy_search_gpu()
- GPU use is automatic when wgpu-native is detected at install time; disabled transparently otherwise with no change to existing CPU code paths
- Added benchmark script benchmarks/benchmark_gpu_backend.R for CPU vs GPU timing comparison
GreedyExperimentalDesign 1.6 (2026-01-09)
- Massive speedups using Rcpp all over the codebase
- Gurobi search for r many vectors now works using pooling and a whole array of other arguments
- ggplot2 in now the plotting engine
- Added a test suite for public exported functions
- Added a benchmark suite
- Standardized method names across all types of searches
- Added examples for all functions in documentation
- Fixed documentation errors and inconsistencies
- Updated package description with DOI's for the relevant publications
GreedyExperimentalDesign 1.5.6.3
- Fixed the Java-side cache so newBlankDesign no longer reuses a design with the wrong nT when the same n is requested again, which was causing findIndicies to overrun its array (issue #3 on github)
GreedyExperimentalDesign 1.5.6.2
- added a C++ function that creates block design allocations rapidly
- exports all toolbox-style blazing-fast C++ functions (a) generate_block_design_cpp_wrap which generates homogeneous block allocation vectors
(b) compute_distance_matrix_cpp_wrap which generates Euclidean squared distance matrices and (c) shuffle_cpp_wrap a shuffling routine that
is faster than base R's sample() function
- made standard one_zero over zero_one formats for allocation vectors
- added a function "gen_var_cov_matrix_block_designs" that generated varcov matrices for block designs
GreedyExperimentalDesign 1.5.6.1 (2023-07-12)
- Faster implementation of complete_randomization_with_forced_balanced, imbalanced_complete_randomization, and imbalanced_block_designs via std::shuffle
- Seed for complete_randomization_with_forced_balanced, imbalanced_complete_randomization, and imbalanced_block_designs
- We now comply with CRAN policy to not change the user's graphical parameters
GreedyExperimentalDesign 1.5.6
- Method that calculates asymmetric cost allocation
- Greedy Pair Switching algorithm that supports unequal number of treatments and controls
- Imbalanced (unequal allocation) Completely Random Designs
- Imbalanced (unequal allocation) Block Designs
GreedyExperimentalDesign 1.5.5 (2022-11-17)
- Speedier implementation of binary pairwise matching designs using Java and Hash functions to check uniqueness
GreedyExperimentalDesign 1.5 (2022-11-04)
- Greedy Design on Multiple Kernels simultaneously
- You can pass distance matrices to binary match design initialization
- You can create binary match designs based on Mahalanobis distances between units using a flag in the design initialization
GreedyExperimentalDesign 1.4 (2020-12-07)
- Binary match followed by greedy within-the-binary-pairs search / rerandomization
GreedyExperimentalDesign 1.3
- Gurobi now works with Kernel distances.
GreedyExperimentalDesign 1.2 (2018-07-15)
- Gurobi setup for allocation searches via numerical optimization.
GreedyExperimentalDesign 1.1 (2018-03-02)
- Updated package to conform to CRAN's new policies.
GreedyExperimentalDesign 1.0 (2016-12-08)