Full factorial Design of Experiments in Java
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


javamut - permutations in Java

javamut generates all the permutations (possible combinations) of a set of conditions (also known as factors). By specifying the levels (the number of values) for each condition, javamut can create a table that contains every possible combination of the conditions, known as a full factorial design. The table can then be used in an experiment to examine how each condition affects the results.

For example, suppose you're about to conduct a traffic study and want to break the results down by season and time of day. Your first condition might be Season with four levels Spring, Summer, Autumn, Winter; your second condition might be Time Of Day with two levels Day and Night. The full factorial design in this case would look something like

Season Time Of Day
Spring Day
Summer Day
Autumn Day
Winter Day
Spring Night
Summer Night
Autumn Night
Winter Night

With only two conditions and a few levels per condition this table is easy to generate by hand, but the complexity rises quickly as you add conditions. If we add a third condition Vehicle with three levels Car, Truck/SUV, and Commercial there are (2x4x3) 24 combinations; if we add a fourth condition Speed Limit with three levels 30, 40, and 50 now there are (2x4x3x3) 72 combinations, and so on.


The full factorial expansion algorithm is based on the PyDOE Design of Experiments for Python project, itself based on the full factorial code provided in the Scilab SciDOE package by the following authors:

  • Copyright (C) 2012-2013 - Michael Baudin
  • Copyright (C) 2012 - Maria Christopoulou
  • Copyright (C) 2009 - Yann Collette
  • Copyright (C) 2001 - Per A. Brodtkorb