If we take a step back, a complete functioning mathematical programming model consists of three parts:
- Some kind of input functionality (e.g. a GUI, a spreadsheet), where a user can input his/her parameters.
- A computational part. Here is where the mathematical model is “solved” where I view solving in a broad way (including data manipulation steps, calibration etc.).
- Finally presentation of results (e.g. through visualization).
As a modeler the middle part has the most emphasis. This is where a model builder puts most of the intellectual effort. However for many users the “algorithm” is just a somewhat of black a box (it just should work quickly and reliably), and they typically are much more engaged with respect to the input and output pieces. Often users have more more demands and feedback about these parts (“place that button here”, “this color should change”, “use a display with 2 decimal digits”).
In a slide I used in a recent talk I depicted this as follows: