MyNixOS website logo
Description

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 <doi:10.1007/0-387-29054-0>), item-set constrained test assembly (van der Linden, 2000 <doi:10.1177/01466210022031697>), hybrid assembly (Xiong, 2018 <doi:10.1177/0146621618762739>), recursion-based analytic methods (Lim et al., 2021 <doi:10.1111/jedm.12276>), and classification evaluation (Rudner, 2000 <doi:10.7275/an9m-2035>; Rudner, 2005 <doi:10.7275/56a5-6b14>).

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.

Metadata

Version

0.1.0

License

Unknown

Platforms (80)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    uefi
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-uefi
  • aarch64-windows
  • aarch64_be-none
  • arc-linux
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-linux
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • sh4-linux
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-uefi
  • x86_64-windows