Provides a suite of mixed-integer linear programming (MILP) model builders and solvers—including 'Gurobi', 'HiGHS', 'Symphony', 'GNU Linear Programming Kit (GLPK)', and 'lpSolve'—for automated test assembly (ATA) in multistage testing (MST). Offers filtering of decision variables through item–module eligibility and the application of explicit bounds to simplify the MILP model and accelerate the optimization process. Supports bottom up, top down, and hybrid assembly strategies; enemy-item and enemy-stimulus exclusions; stimulus all in/all out or partial selection; anchor item/stimulus specification; and item exposure control. Accommodates both single-objective and multi-objective optimization ('weighted sum', 'maximin', 'capped maximin', 'minimax', and 'goal programming'). Enables simultaneous assembly of multiple panels with item and stimulus content balancing and exposure control. Provides analytical evaluation of assembled MST performance within seconds. Includes tools for diagnosing infeasible optimization models by systematically identifying sources of infeasibility and reformulating models with slack variables to restore feasibility.Methods implemented in this package build on established work in optimal test assembly (van der Linden, 2005
The goal of mstATA is to provide tools for automated test assembly of multistage tests using mixed-integer linear programming formulations.
You can install the development version of mstATA from
GitHub using pak:
# install.packages("pak")
pak::pak("Hongchen030/mstATA")
Alternatively, you can use remotes:
# install.packages("remotes")
remotes::install_github("Hongchen030/mstATA")
mstATA supports multiple mixed-integer programming solvers, including:
Gurobi – requires separate installation and a valid license. Installation instructions are available here: https://CRAN.R-project.org/package=prioritizr. See the prioritizr package vignette “gurobi_installation_guide” for installation instructions. Gurobi requires a valid license. However, free academic licenses are available for qualified students and researchers through the Gurobi Academic Program.
HiGHS – available on CRAN via install.packages(“highs”)
GLPK (via Rglpk) – available on CRAN via install.package(“Rglpk”)
SYMPHONY (via Rsymphony) – available on CRAN via install.package(“Rsymphony”)
lpSolve (via lpSolveAPI) – available on CRAN via install.package(“lpSolveAPI”)
The package includes several vignettes:
To browse available vignettes:
browseVignettes("mstATA")
#> No vignettes found by browseVignettes("mstATA")
If you use mstATA in research, please cite:
Chen, H. (2026). mstATA: An R Package for IRT-Based Multistage Test Assembly.