The list of mathematical modeling software is huge. One can find free and commercial software for all kind of problems. Searching the Internet under “mathematial modeling”, “mathematical software”, “optimization software”, “mathematics learning”, “mathematical tools” exposes many links. Wikipedia and other sites list various categories, many other links exist, the field is very dynamic and new approaches appear all the time:
Modeling Languages lists modeling languages not only mathematical once.
What is math. modeling? gives a definition and also presents a serie of videos on mathematical modeling.
www.mathscareers.org.uk/ is another page that give some explanation what modeling is.
Optimization Software list a number of mathematical optimization software (unfortunately some newer are missing).
Wikipedia’s list of optimization software (somewhat outdated) contains a large list of modeling software.
Wikipedia’s mathematics software contains further links.
Comparison of optimization software gives a limited list where several packages are compared.
Optimization Software is a large list of systems composed by Prof. Neumaier.
10 great languages for mathematics are presented – a subjective but relevant choice in my opinion.
Decision tree for optimization software lists a large number of systems.
Coin|OR is an open source project for the operations research community. The mission of the COIN-OR Foundation, Inc., is to create and disseminate knowledge related to all aspects of computational operations research.
A lot of material and models in many languages can be found on hakank’s Home Page.
In this paper, I present a limited number of systems, hopefully some of the most relevant once, by implementing a simple example for each tool to get a flavor and a first impression of them. I give my personal comments in the light of the following criteria for a – what I think is a “good” – mathematical modeling system. In my opinion, a mathematical modeling system should fulfill the following requirements:
A modeling system should be based in a formal language. Like a programming language, which is based on a written text and a formal syntax, a modeling system should be based on an executable language.
The modeling language syntax should be as close as possible to a common mathematical notation used to specify a model.
In addition, the modeling language should be a complete programming language, that is, rich enough to implement any algorithm (Turing complete), and it should contain features of a modern programming language.
An important part of the syntax should be its (sparse) index capability in order to be able to formulate large models in a concise way.
It should be possible to formulate within the language all kinds of model paradigms: linear, non-linear, permutations, containing logical constraints, constraint programming (CP), differential systems, etc.
In the language it should be possible to modularize an model into sub-modules, in order to encapsulate entities and objects, similar to a modern programming language that contains classes (objects), modules, procedures, functions, etc.
The model formulation should be independent of a solution method (solver). From the structure of the model, it should be possible to infer automatically what solver is apt to solve the model.
The model should be independent from the data instances. A model structure should be executable without data. The data could be part of the code, but it is not necessary and normally would be separated from the model structure.
On the base of the language, visual representations, like A-C graphs or others, and “visual” editors to build, manipulate and to modify the model could be built, as alternatives to editing and viewing the textual code – a modeling framework.
Likewise programming languages, documenting a model is an important part in modeling – I guess it is even more important in modeling to understand its semantic.
In my opinion, mathematical modeling should not be just an “addon” package within a common programming language, this would always be somewhat artificial. Modeling is too important to be a supplement or an annex of an (existing) programming language. I know this is not the actual trend, a lot of packages have been developed for Python, Julia, and other languages that allow a modeler to code mathematical models. It is said that this has some advantages: One must learn only one language; a language like Python contains thousands of packages for all kinds of tasks: manipulating, reading/writing data, generating graphics and others; implementing efficient algorithms. However, the modeling language that I have in mind (which has not been found by now in my opinion) is also a complete programming language with all its interfaces to libraries, other software and own extensions with packages.