Welcome to ScalaTion, the Scala-based system for Simulation, Optimization and Analytics.
This system, coded in Scala, supports multi-paradigm simulation modeling including 'tableau', 'event', 'process', 'dynamics', 'dynamics_pde', 'activity' and 'state' oriented models.
Scala is a modern object-oriented, functional programming language that is well-suited for developing simulation engines. It is in the Java family of languages and can call Java code. The inclusion of advanced and functional programming capabilities, makes the code much more concise than Java. ScalaTion also supports optimization and analytics as they nowadays go hand-in-hand with simulation modeling. Some of the algorithms come in both sequential and parallel versions.
The ScalaTion 1.3 version defines multiple .par subpackages that contain parallel versions of sequential algorithms. Future directions include completing the 'scala3d' and 'physics' packages.
As of version 1.3, ScalaTion consists of three subprojects: scalation_mathstat, scalation_modeling and sclation_models.
Please read the LICENSE file (an MIT style license).
$ tar xvfz scalation_1.3.tar.gz
OR
$ unzip scalation_1.3.zip
$ cd scalation_1.3
$ cd scalation_models
$ sbt
> compile
> run-main apps.process.Bank
> run-main scalation.analytics.RegressionTest
> exit
ScalaTion 1.3 is set up to use the Simple Build Tool sbt.
ScalaTion 1.3 uses the following build specification files build.sbt, build.sbt and build.sbt. Source packages are in the src/main/scala directory, class files are in the target/scala-2.12/classes directory, and documentation files are in the target/scala-2.12/api directory. Data file input, output or analytics are stored in subdirectories of data, while database files are stored in store.
To develop using an IDE:
For more information about the source code, see
src/README_src.hmtl.
Overall scaladoc generated API for ScalaTion
Papers/Documentation
Online supplement
Source Packages (doc)
Package
Description
~/scalation_1.3/target/scala-2.12/api
MATH AND STAT
scalation.util
A package of utilities needed by the other packages.
- scalation.util.bld
A subpackage of for building util implementations.
scalation.scala2d
A package supporting 2D graphics based on Java 2D.
scalation.math
A package of mathematical objects and operations needed for analytics, simulation and optimization.
scalation.linalgebra
A package of implementations for linear algebra (e.g., for vectors and matrices).
Vectors and matrices of real (Double), rational and complex numbers are supported.
- scalation.linalgebra.bld
A subpackage for building implementations for linear algebra (e.g., for vectors and matrices).
- scalation.linalgebra.gen
A subpackage of generic implementations for linear algebra (e.g., for vectors and matrices).
Vectors and matrices of types implementing Numeric can be instantiated.
- scalation.linalgebra.mem_mapped
A subpackage for memory mapped linear algebra (e.g., for vectors and matrices).
- - scalation.linalgebra.mem_mapped.bld
A sub-subpackage for building implementations for memory mapped linear algebra (e.g., for vectors and matrices).
- scalation.linalgebra.par
A subpackage of parallel implementations for linear algebra.
scalation.relalgebra
A package of implementations for columnar relational algebra.
scalation.plot
A package for displaying basic plots and histograms.
scalation.random
A package for random numbers and random variates (Normal distribution, etc.)
scalation.stat
A package of statistical objects and operations needed for simulation,
including implementations for summary statitistics and ANOVA.
MODELING
scalation.model
A package defining the general form of a model.
scalation.scala3d
A package supporting 3D graphics based on JavaFX 3D (Under development).
scalation.animation
A package supplying a general purpose animation engine.
scalation.calculus
A package for computing derivatives, gradients and Jacobians.
scalation.minima
A package supporting simulation optimization (minimization).
scalation.maxima
A package supporting simulation optimization (maximization).
scalation.analytics
A package supporting analytics, including regression, time series analysis and clustering.
- scalation.analytics.par
A subpackage supporting parallel analytics, including regression, time series analysis and clustering.
- scalation.analytics.classifier
A subpackage supporting analytics, including several types of classifier.
-- scalation.analytics.classifier.par
A subpackage supporting parallel analytics, including several types of classifier.
scalation.graphalytics
A package supporting graph analytics, including shortest path, subgraph isomorphism, etc.
- scalation.graphalytics.mutable
A package supporting graph analytics, including shortest path, subgraph isomorphism, etc. using mutable graphs.
scalation.queueingnet
A package supporting queueing network models.
scalation.tableau
A simulation engine for tableau oriented (spreedsheet like) models.
scalation.event
A simulation engine for event oriented models such as Event Scheduling or Event Graphs.
scalation.process
A simulation engine for process oriented models such as Process-Interaction Models.
scalation.dynamics
A simulation engine for systems dynamics (continuous simulation), which includes
general-purpose Ordinary Differential Equation (ODE) solvers.
scalation.dynamics_pde
A simulation engine for systems dynamics (continuous simulation), which includes
category-specific Partial Differential Equation (PDE) solvers.
scalation.physics
A physics engine for simulation based games (Under development).
scalation.activity
A simulation engine for activity oriented models such as Petri Nets.
scalation.state
A simulation engine for state oriented models such as Markov Chains.
APPLICATIONS
apps.activity
Example models for activity oriented models such as Petri Nets.
apps.analytics
Example analytics problems.
apps.dynamics
Example models for systems dynamics (continuous simulation).
apps.event
Example models for event oriented models such as Event Graphs.
apps.game
Example simulation-oriented games.
apps.montecarlo
Example Monte Carlo simulation.
apps.optimization
Example optimization problems.
apps.process
Example models for process oriented models such as Process-Interaction Models.
apps.simopt
Example simulation optimization problems.
apps.state
Example models for state oriented models such as Markov Chains.
apps.tableau
Example models for tableau oriented (spreadheet like) models.
Source Packages (src)
Package
Description
MATH AND STAT MODULE
scalation.util
A package of utilities needed by other packages.
- scalation.util.bld
A subpackage of for building util implementations.
scalation.scala2d
A package supporting 2D graphics based on Java 2D.
scalation.math
A package of mathematical objects and operations needed for analytics, simulation and optimization.
scalation.linalgebra
A package of implementations for linear algebra (e.g., for vectors and matrices).
Vectors and matrices of real (Double) and complex numbers are supported.
- scalation.linalgebra.bld
A subpackage for building implementations for linear algebra (e.g., for vectors and matrices).
- scalation.linalgebra.gen
A subpackage of generic implementations for linear algebra (e.g., for vectors and matrices).
Vectors and matrices of types implementing Numeric can be instantiated.
- scalation.linalgebra.mem_mapped
A subpackage for memory mapped linear algebra (e.g., for vectors and matrices).
- - scalation.linalgebra.mem_mapped.bld
A sub-subpackage for building implementations for memory mapped linear algebra (e.g., for vectors and matrices).
- scalation.linalgebra.par
A subpackage of parallel implementations for linear algebra.
scalation.relalgebra
A package of implementations for columnar relational algebra.
scalation.plot
A package for displaying basic plots and histograms.
scalation.random
A package for random numbers and random variates (Normal distribution, etc.)
scalation.stat
A package of statistical objects and operations needed for simulation,
including implementations for summary statitistics and ANOVA.
MODELING MODULE
scalation.model
A package defining the general form of a model.
scalation.scala3d
A package supporting 3D graphics based on JavaFX 3D (Under development).
scalation.animation
A package supplying a general purpose animation engine.
scalation.calculus
A package for computing derivatives, gradients and Jacobians.
scalation.minima
A package supporting simulation optimization (minimization).
scalation.maxima
A package supporting simulation optimization (maximization).
scalation.analytics
A package supporting analytics, including regression, time series analysis and clustering.
- scalation.analytics.par
A subpackage supporting parallel analytics, including regression, time series analysis and clustering.
- scalation.analytics.classifier
A subpackage supporting analytics, including several types of classifiers.
-- scalation.analytics.classifier.par
A subpackage supporting parallel analytics, including several types of classifiers.
scalation.graphalytics
A package supporting graph analytics, including shotest path, subgraph isomorphism, etc.
- scalation.graphalytics.mutable
A package supporting graph analytics, including shotest path, subgraph isomorphism, etc. using mutable graphs.
scalation.queueingnet
A package supporting queueing network models.
scalation.tableau
A simulation engine for tableau oriented (spreedsheet like) models.
scalation.event
A simulation engine for event oriented models such as Event Scheduling or Event Graphs.
scalation.process
A simulation engine for process oriented models such as Process-Interaction Models.
scalation.dynamics
A simulation engine for systems dynamics (continuous simulation), which includes
general-purpose Ordinary Differential Equation (ODE) solvers.
scalation.dynamics_pde
A simulation engine for systems dynamics (continuous simulation), which includes
category-specific Partial Differential Equation (PDE) solvers.
scalation.physics
A physics engine for simulation based games (Under development).
scalation.activity
A simulation engine for activity oriented models such as Petri Nets.
scalation.state
A simulation engine for state oriented models such as Markov Chains.
APPLICATIONS
apps.activity
Example models for activity oriented models such as Petri Nets.
apps.analytics
Example analytics problems.
apps.dynamics
Example models for systems dynamics (continuous simulation).
apps.event
Example models for event oriented models such as Event Graphs.
apps.game
Example simulation-oriented games.
apps.montecarlo
Example Monte Carlo simulation.
apps.optimization
Example optimization problems.
apps.process
Example models for process oriented models such as Process-Interaction Models.
apps.simopt
Example simulation optimization problems.
apps.state
Example models for state oriented models such as Markov Chains.
apps.tableau
Example models for tableau oriented (spreadheet like) models.
UNIT TESTS
testing.util
Tests for package of utilities needed by other packages.
testing.scala2d
Tests for package supporting 2D graphics based on Java 2D.
testing.math
Tests for package of mathematical objects and operations needed for analytics, simulation and optimization.
testing.linalgebra
Tests for package of implementations for linear algebra (e.g., for vectors and matrices).
Vectors and matrices of real (Double) and complex numbers are supported.
testing.relalgebra
Tests for package of implementations for columnar relational algebra.
testing.plot
Tests for package for displaying basic plots and histograms.
testing.random
Tests for package for random numbers and random variates (Normal distribution, etc.)
testing.stat
Tests for package of statistical objects and operations needed for simulation,
including implementations for summary statitistics and ANOVA.
Code Release Process
Similarly for scalation_modeling and scalation_models.
Currently the .jar files need to be copied (copy_jars.sh) into the lib directory of dependent subprojects.
$ cd scalation_1.3
$ cd scalation_mathstat
$ sbt
> compile
> package
> test
> run-main scalation.util.RunSpellCheck 'package-directory'
> run-main scalation.GenIndexHtml
> clean
> doc
> exit