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.5 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.5, ScalaTion consists of 4 subprojects: scalation_mathstat, scalation_database, scalation_modeling and scalation_models
Please read the LICENSE file (an MIT style license).
$ tar xvfz scalation_1.5.tar.gz
OR
$ unzip scalation_1.5.zip
$ cd scalation_1.5
$ cd scalation_models
$ sbt
> compile
> runMain apps.process.Bank
> runMain scalation.analytics.RegressionTest
> exit
ScalaTion 1.5 is set up to use the Simple Build Tool sbt.
ScalaTion 1.5 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.
Papers/Documentation
Online supplement
Source Packages (doc)
Package
Description
MATH AND STAT
The scalation_mathstat module provides foundational packages for mathematics and statistics needed for modeling.
scalation.linalgebra
The `linalgebra` package contains classes, traits and objects for linear algebra, including vectors and matrices for real and complex numbers.
- scalation.linalgebra.bld
The `bld` package contains traits and objects for generating source code for vector classes, matrix traits and matrix classes.
- scalation.linalgebra.gen
The `gen` package contains generic classes, traits and objects for linear algebra, including vectors and matrices for types implementing `Numeric`. Tend to run more slowly than the specialized versions in `linalgebra`.
- scalation.linalgebra.mem_mapped
The `mem_mapped` package contains classes, traits and objects for out-of-core linear algebra, including vectors and matrices for real and complex numbers.
- - scalation.linalgebra.mem_mapped.bld
The `bld` package contains traits and objects for generating source code for out-of-core vector classes, matrix traits and matrix classes.
- scalation.linalgebra.par
The `par` package contains classes, traits and objects for parallel linear algebra, including vectors and matrices for real and complex numbers.
scalation.math
The `math` package contains classes, traits and objects for common mathematical operations. Its package object defines exponentiation, logarithmic, trigonometric, etc. operators and functions.
scalation.par
The `par` package contains classes, traits and objects for parallel processing techniques such as Map-Reduce.
scalation.plot
The `plot` package contains classes, traits and objects for simple plotting of x-y data.
scalation.random
The `random` package contains classes, traits and objects for the generation of random numbers.
scalation.scala2d
The `scala2d` package contains classes, traits and objects for for simple 2D graphics in scala, based upon `java.swing`, `java.awt` and `java_awt_geom`.
scalation.stat
The `stat` package contains classes, traits and objects for basic statistical functions and analyses. The package object itself defines an implicit conversion from `scalation.linalgebra.VectorD` to `StatVector`.
scalation.tenalgebra
The `tenalgebra` package contains classes, traits and objects for tensor algebra.
scalation.util
The `util` package contains classes, traits and objects for basic utility functions.
- scalation.util.bld
The `bld` package contains traits and objects for generating source code for memory mapped arrays.
DATABASE
The scalation_database module provides packages for efficient data management in support of analytics.
scalation.columnar_db
The `columar_db` package contains classes, traits and objects for columnar relational databases where columns are vectors from the `linalgebra` package.
scalation.graphalytics
The `graphalytics` package contains classes, traits and objects for graph analytics (especially graph pattern matching) on Trees, 'DAG's and Directed Graphs.
scalation.graph_db
The `graph_db` package contains classes, traits and objects for graph databases.
- scalation.graph_db.graph_algebra
The `graph_algebra` package provide graph algebra operators for graph databases.
- scalation.graph_db.pattern_matching
The `pattern_matching` package contains classes, traits and objects for graph pattern matching such as graph simulation and subgraph isomorphism
suitable for interfacing with graph databases.
- - scalation.graph_db.pattern_matching.test
The `test` package contains classes for testing graph pattern matching algorithms.
scalation.image
The `image` package contains classes, traits and objects for image processing and computer vision.
scalation.scala3d
The `scala3d` package contains classes, traits and objects for simple 3D graphics in scala, based upon javafx. Its package object contains type aliases for 'javafx.geometry.Point3D' and all subclasses of 'javafx.scene.shape.Shape3D'.
scalation.spatial
The `spatial` package contains classes, traits and objects for spatial coordinates.
MODELING
The scalation_modeling module provides packages with modeling techniques for analytics, mathematical and simulation models.
scalation.activity
The `activity` package contains classes, traits and objects for activity-oriented simulation models (for example, Petri Nets).
scalation.analytics
The `analytics` package contains classes, traits and objects for predictive analytics.
- scalation.analytics.classifier
The `classifier` package contains classes, traits and objects for analytics focused on classification.
- - scalation.analytics.classifier.par
The `par` package contains classes, traits and objects for analytics focused on classification with parallel implementations.
- scalation.analytics.clusterer
The `clusterer` package contains classes, traits and objects for clustering algorithms.
- scalation.analytics.fda
The `fda` package contains classes, traits and objects for Functional Data Analysis (FDA).
- scalation.analytics.forecaster
The `forecaster` package contains classes, traits and objects for Forescasting and Time Series Analysis.
- scalation.analytics.par
The `par` package contains classes, traits and objects for predictive analytics with parallel implementations.
- scalation.analytics.recommender
The `recommender` package contains classes, traits and objects of recommendation systems.
scalation.animation
The `animation` package contains classes, traits and objects for 2D animation of simulation objects.
scalation.calculus
The `calculus` package contains classes with methods for computing derivatives, gradient vectors, Jacobian matrices, integrals and basic operators in Functional Analysis.
scalation.dynamics
The `dynamics` package contains classes, traits and objects for system dynamics simulations using Ordinary Differential Equations (ODEs).
scalation.dynamics_pde
The `dynamics_pde` package contains classes, traits and objects for system dynamics simulations using Partial Differential Equations 'PDE's.
scalation.event
The `event` package contains classes, traits and objects for event oriented simulation models (for example, event scheduling or event graphs).
scalation.maxima
The `maxima` package contains classes, traits and objects for optimization to find maxima.
scalation.minima
The `minima` package contains classes, traits and objects for optimization to find minima.
scalation.model
The `model` package contains a trait giving a template for models to follow.
scalation.queueingnet
The `queueingnet` package contains classes, traits and objects for solving simple queueing network problems.
scalation.physics
The `physics` package contains classes, traits and objects for for simulation oriented games. It utilizes ODE and PDE solvers from the scalation package to move objects in either 2D or 3D canvases/scene graphs. @see buildnewgames.com/gamephysics/
scalation.process
The `process` package contains classes, traits and objects for process-oriented simulation models (for example, process-interaction).
scalation.state
The `state` package contains classes, traits and objects for state-oriented simulation models (for example, Markov Chains).
scalation.tableau
The `tableau` package contains classes for tableau oriented simulation models (similar to spreadsheet simulations).
MODELS
The scalation_models module provides packages demonstrating various modeling applications.
apps.activity
The `activity` package contains example applications for activity oriented simulation models.
apps.analytics
The `analytics` package contains example applications for analytics: prediction, classification or clustering.
apps.database
The `database` package contains applications of databases.
apps.dynamics
The `dynamics` package contains example applications for continuous simulation models based on Ordinary Differential Equations 'ODE's or Partial Differential Equations 'PDE's.
apps.event
The `event` package contains example applications for event oriented simulation models.
apps.game
The `game` package contains example applications for simulation oriented games.
apps.montecarlo
The `montecarlo` package contains example applications for Monte Carlo Simulation.
apps.optimization
The `optimization` package contains example applications for finding solutions (minima or maxima) to optimization problems.
apps.process
The `process` package contains example applications for process oriented simulation models.
apps.simopt
The `simopt` package contains example applications for simulation optimization.
apps.state
The `state` package contains example applications for state oriented simulation models.
apps.tableau
The `tableau` package contains example applications for tableau oriented simulation models.
Source Packages (src)
Package
Description
MATH AND STAT
The scalation_mathstat module provides foundational packages for mathematics and statistics needed for modeling.
scalation.linalgebra
The `linalgebra` package contains classes, traits and objects for linear algebra, including vectors and matrices for real and complex numbers.
- scalation.linalgebra.bld
The `bld` package contains traits and objects for generating source code for vector classes, matrix traits and matrix classes.
- scalation.linalgebra.gen
The `gen` package contains generic classes, traits and objects for linear algebra, including vectors and matrices for types implementing `Numeric`. Tend to run more slowly than the specialized versions in `linalgebra`.
- scalation.linalgebra.mem_mapped
The `mem_mapped` package contains classes, traits and objects for out-of-core linear algebra, including vectors and matrices for real and complex numbers.
- - scalation.linalgebra.mem_mapped.bld
The `bld` package contains traits and objects for generating source code for out-of-core vector classes, matrix traits and matrix classes.
- scalation.linalgebra.par
The `par` package contains classes, traits and objects for parallel linear algebra, including vectors and matrices for real and complex numbers.
scalation.math
The `math` package contains classes, traits and objects for common mathematical operations. Its package object defines exponentiation, logarithmic, trigonometric, etc. operators and functions.
scalation.par
The `par` package contains classes, traits and objects for parallel processing techniques such as Map-Reduce.
scalation.plot
The `plot` package contains classes, traits and objects for simple plotting of x-y data.
scalation.random
The `random` package contains classes, traits and objects for the generation of random numbers.
scalation.scala2d
The `scala2d` package contains classes, traits and objects for for simple 2D graphics in scala, based upon `java.swing`, `java.awt` and `java_awt_geom`.
scalation.stat
The `stat` package contains classes, traits and objects for basic statistical functions and analyses. The package object itself defines an implicit conversion from `scalation.linalgebra.VectorD` to `StatVector`.
scalation.tenalgebra
The `tenalgebra` package contains classes, traits and objects for tensor algebra.
scalation.util
The `util` package contains classes, traits and objects for basic utility functions.
- scalation.util.bld
The `bld` package contains traits and objects for generating source code for memory mapped arrays.
DATABASE
The scalation_database module provides packages for efficient data management in support of analytics.
scalation.columnar_db
The `columar_db` package contains classes, traits and objects for columnar relational algebra, where columns are vectors from the `linalgebra` package.
scalation.graphalytics
The `graphalytics` package contains classes, traits and objects for graph analytics on Trees, 'DAG's and Directed Graphs. It provides an implicit conversion when needed for converting doubles to vectors.
scalation.graph_db
The `graph_db` package contains classes, traits and objects for graph analytics on Trees, 'DAG's and Directed Graphs. It provides an implicit conversion when needed for converting doubles to vectors.
- scalation.graph_db.graph_algebra
The `graph_algebra` package provide graph algebra operators.
- scalation.graph_db.pattern_matching
The `pattern_matching` package contains classes, traits and objects for graph pattern matching such as graph simulation and subgraph isomorphism.
- - scalation.graph_db.pattern_matching.test
The `test` package contains classes for testing graph pattern matching algorithms.
scalation.image
The `image` package contains classes, traits and objects for image processing and computer vision.
scalation.scala3d
The `scala3d` package contains classes, traits and objects for simple 3D graphics in scala, based upon javafx. Its package object contains type aliases for 'javafx.geometry.Point3D' and all subclasses of 'javafx.scene.shape.Shape3D'.
scalation.spatial
The `spatial` package contains classes, traits and objects for spatial coordinates.
MODELING
The scalation_modeling module provides packages with modeling techniques for analytics, mathematical and simulation models.
scalation.activity
The `activity` package contains classes, traits and objects for activity-oriented simulation models (for example, Petri Nets).
scalation.analytics
The `analytics` package contains classes, traits and objects for predictive analytics.
- scalation.analytics.classifier
The `classifier` package contains classes, traits and objects for analytics focused on classification.
- - scalation.analytics.classifier.par
The `par` package contains classes, traits and objects for analytics focused on classification with parallel implementations.
- scalation.analytics.clusterer
The `clusterer` package contains classes, traits and objects for clustering algorithms.
- scalation.analytics.fda
The `fda` package contains classes, traits and objects for Functional Data Analysis (FDA).
- scalation.analytics.forecaster
The `forecaster` package contains classes, traits and objects for Forecasting and Time Series Analysis.
- scalation.analytics.par
The `par` package contains classes, traits and objects for parallel analytics including clustering and prediction.
- scalation.analytics.recommender
The `recommender` package contains classes, traits and objects of recommendation systems.
scalation.animation
The `animation` package contains classes, traits and objects for 2D animation of simulation objects.
scalation.calculus
The `calculus` package contains classes with methods for computing derivatives, gradient vectors, Jacobian matrices, integrals and basic operators in Functional Analysis.
scalation.dynamics
The `dynamics` package contains classes, traits and objects for system dynamics simulations using Ordinary Differential Equations (ODEs).
scalation.dynamics_pde
The `dynamics_pde` package contains classes, traits and objects for system dynamics simulations using Partial Differential Equations 'PDE's.
scalation.event
The `event` package contains classes, traits and objects for event oriented simulation models (for example, event scheduling or event graphs).
scalation.maxima
The `maxima` package contains classes, traits and objects for optimization to find maxima.
scalation.minima
The `minima` package contains classes, traits and objects for optimization to find minima.
scalation.model
The `model` package contains a trait giving a template for models to follow.
scalation.queueingnet
The `queueingnet` package contains classes, traits and objects for solving simple queueing network problems.
scalation.physics
The `physics` package contains classes, traits and objects for for simulation oriented games. It utilizes ODE and PDE solvers from the scalation package to move objects in either 2D or 3D canvases/scene graphs. @see buildnewgames.com/gamephysics/
scalation.process
The `process` package contains classes, traits and objects for process-oriented simulation models (for example, process-interaction).
scalation.state
The `state` package contains classes, traits and objects for state-oriented simulation models (for example, Markov Chains).
scalation.tableau
The `tableau` package contains classes for tableau oriented simulation models (similar to spreadsheet simulations).
MODELS
The scalation_models module provides packages demonstrating various modeling applications.
apps.activity
The `activity` package contains example applications for activity oriented simulation models.
apps.analytics
The `analytics` package contains example applications for analytics: prediction, classification or clustering.
apps.database
The `database` package contains applications of databases.
apps.dynamics
The `dynamics` package contains example applications for continuous simulation models based on Ordinary Differential Equations 'ODE's or Partial Differential Equations 'PDE's.
apps.event
The `event` package contains example applications for event oriented simulation models.
apps.game
The `game` package contains example applications for simulation oriented games.
apps.montecarlo
The `montecarlo` package contains example applications for Monte Carlo Simulation.
apps.optimization
The `optimization` package contains example applications for finding solutions (minima or maxima) to optimization problems.
apps.process
The `process` package contains example applications for process oriented simulation models.
apps.simopt
The `simopt` package contains example applications for simulation optimization.
apps.state
The `state` package contains example applications for state oriented simulation models.
apps.tableau
The `tableau` package contains example applications for tableau oriented simulation models.
MATH AND STAT UNIT TESTS
Unit Tests for the scalation_mathstat module
testing.linalgebra
Unit tests for the `linalgebra` package.
testing.stat
Unit tests for the `stat` package.
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.5
$ cd scalation_mathstat
$ sbt
> compile
> package
> test
> runMain scalation.util.RunSpellCheck 'package-directory'
> runMain scalation.GenIndexHtml
> clean
> doc
> exit