The SMS++ Project

A Structured Modeling System for mathematical models

Get started →


SMS++ is based on the concept of Block, a (part of a) mathematical model with a clear semantic identity for which specialised Solvers can be devised. A Block can contain inner Blocks, recursively, making models inherently modular. A Block can be represented via Constraints and Variables that allow to both use general-purpose Solvers and to implement generic solution algorithms.


SMS++ is written in the latest C++-17 and makes use of many advanced facilities of the language, such as variadic templates, factories, smart pointers, atomics, mutexes, futures, and many others. We aim at following the latest development guidelines to ensure the highest degree of stability and maintainability.


SMS++ is written with performance in mind, providing in-memory interface between the model and the solution algorithms. Re-optimization is baked-in the system via Modifications, that forward changes in the Blocks to all the interested Solvers to allow them to re-use as much as possible previous solution information. SMS++ also supports seamless implementation of parallel solution approaches.