Automated Test Assembly for Multistage Tests Using Mixed-Integer Linear Programming

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 ), item-set constrained test assembly (van der Linden, 2000 ), hybrid assembly (Xiong, 2018 ), recursion-based analytic methods (Lim et al., 2021 ), and classification evaluation (Rudner, 2000 ; Rudner, 2005 ).


mstATA

R-CMD-check

The goal of mstATA is to provide tools for automated test assembly of multistage tests using mixed-integer linear programming formulations.

Installation

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”)

Vignettes

The package includes several vignettes:

  • Getting Started with mstATA – complete end-to-end workflow.
  • MST Assembly Examples: Bottom-Up, Top-Down, and Hybrid Strategies – bottom-up, top-down, and extended-hybrid strategies.
  • Stimulus-Based Assessment in mstATA: Conditional Item Selection – conditional item selection with stimulus constraints.
  • Formulation for Multiple Objectives – multi-objective optimization strategies and evaluation.
  • Detecting and Resolving Infeasibility - how to deal with infeasibility.

To browse available vignettes:

browseVignettes("mstATA")
#> No vignettes found by browseVignettes("mstATA")

Citation

If you use mstATA in research, please cite:

Chen, H. (2026). mstATA: An R Package for IRT-Based Multistage Test Assembly.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("mstATA")

0.1.0 by Hong Chen, 7 months ago


https://github.com/Hongchen030/mstATA


Report a bug at https://github.com/Hongchen030/mstATA/issues


Browse source code at https://github.com/cran/mstATA


Authors: Hong Chen [aut, cre]


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports stats, utils, dplyr, rlang, methods, Matrix, ggplot2

Suggests testthat, knitr, rmarkdown, kableExtra, highs, lpSolveAPI, Rglpk, Rsymphony, irtQ, mstR, numDeriv, ggformula, ggpubr


See at CRAN