It seems timely (as we celebrate our tenth anniversary) to reflect on the journey that has led us to introduce the analytical tools that we subsequently applied in various business engagements. The resulting analyses provided our clients with sufficient insights and helped influence business decisions and performance improvements.
It is generally accepted that supply chain management is a complex process, and data analytics helps improve logistics and supply chain management performance. When it comes to optimising the supply chain, we are frequently invited to address complex problems of commercial interest, and these often cover a variety of applications: inventory replenishment and control, supply chain network design (Fig 1), demand forecasting, warehouse layout and design, network transportation, work assignment problems (inc. capacity and scheduling challenges), and so on. This requires us to construct rigorous technical models to determine the most efficient solution(s) to the specific problem.
Nowadays, there are many tools available to the data science practitioner for solving such optimisation problems. These extend from the most widely-used Excel® add-in programme, Solver®, to the popular programming languages, Python®, and R®. Our customer engagements are typically varied and often complex, and this has led us to select the computer algebra system Maple® as our system-of-choice.
However, the choice of utility depends on the complexity of the problem. In all cases, expertise in the domain of the supply chain is essential for identifying the relevant features of the optimisation problem in addition to programming knowledge.
is a Microsoft Excel® add-in and one of the most popular software products available in the data analysis market. It uses functional programming in a visual grid to specify the calculations, along with a dialogue box interface to a tool that defines the model relationships. Basically, the user formally describes the problem and sets up three parameters in the spreadsheet: a list of decision variables, the objective function, and a family of constraints. The user may then call upon Solver® to maximise or minimise certain characteristics of interest.
Three solution methods are supported, and the choice depends on the nature of the problem under investigation; linear problems are treated using the Simplex method while non-linear types are solved using either the GRG or Evolutionary schemes.
was first released in 1991 by van Rossum and has advanced as an open-source programming language. It simplifies operations research using libraries to handle the complexity of the optimisation process; among the most common are: CVXOPT (for convex problems), prodyn (dynamic programming), scipy.optimise (root-seeking), PuLP (linear problems), and pyOpt (nonlinear problems).
Optimisation in Python® also requires the decision variables to be established using data structures, and once the problem is defined, the objective function and constraint lists are then set up. Using these libraries, it is possible to solve linear problems in a few lines of code. For example, PuLP can call on external solvers for added convenience, and following that, Python® commands can be used to manipulate and display the solution.
was first implemented as an open-source command-line language in 1995 by Gentleman and Ihaka and has become popular for its statistical and graphical capabilities. There is an impressive variety of libraries provided so the user can produce publication-quality graphs (both dynamic and interactive).
This is the most recent addition to our data analysis toolbox, and for supply chain problems, inbuilt solution algorithms are implemented; for example, the package ROI can be used for setting-up and solving generic optimisation problems, while for nonlinear problems, we found that nloptr is best-suited.
is a computer algebra system developed by Maplesoft and released in 1982 to become one of the most mature products of its kind on the commercial market. We consider this to be a powerful tool with ample functionality for our computational needs.
Maple’s® main strength lies in its ability to perform symbolic manipulations, and, aside from having several thousand in-built mathematical functions, there are also many highly efficient algorithms available from the NAG® library1 for many of our supply chain optimisation strategies (many of these libraries have, in fact, source codes that can be viewed and even modified by the user).
The user interface enables us to formulate supply chain optimisation problems in traditional mathematical notation. Writing a programme in Maple® is usually straightforward and does not require expert programming skills, and in many cases, procedures can be written to perform complex operations.
We often exploit its symbolic capabilities to obtain optimal solutions in closed form2. In stochastic inventory problems, for instance, both the optimal base-stock policy and backorder costs can be computed explicitly.
Similarly, for many queuing problems, Maple® allows us to find the operating characteristics of (Markovian) bulk systems and transient solutions in closed form.
Where symbolic analysis becomes impossible to use, we can usually extract numerical solutions. For example, continuous review problems with back orders require intensive numerical computations. Similarly, dynamic problems typically involve solving differential equations numerically, and these computations are easily performed by stringing together a few lines of code.
Even though Maple® can be immensely useful in supply chain modelling, of course, this always requires the user to have working technical knowledge of the specific subject matter.
- Despite having a robust computational system, its programming language is sometimes considered rigid
- Maple® (and its ilk3) are not the only languages that can perform symbolic computation
- Provides access to a Python® interpreter and a selection of pre-installed Python® packages
- The licencing locks the user in and can lock collaborators out of their workflow
- While highly regarded as a general purpose language, it is not a data analysis platform; consequently, symbolic computation is not a native feature. However, the library, SymPy, can implement behind-the-scenes symbolic computation along with some other Maple® features
- Certainly, it has more advanced statistical functionality than Python® and Solver®, and in some instances (e.g., statistical analysis), the visualisation capabilities are superior
- Many analysts are fluent in Excel®, and so, for optimisation purposes, it is not necessary that the user possess advanced programming knowledge
- Often, users find that prototyping a model using Solver® is generally easier than in Python®
- The problem size and computational effort must be sufficiently small so that Solver® can be used (the limit is 200 decision variables, whereas under Gurobi Python®, there is no limit)
- Models are generally not as flexible as those created using a programming language
Ultimately, the selection of software will depend on the specific needs of the business, the complexity of the problem, and the technical expertise of the users. Hopefully, this gives you a general insight into the variety of optimisation utilities we use day-to-day to help us find good solutions, even for the most challenging supply chain problems.
- Numerical Algorithms Group, a software library of numerical routines, containing several thousand algorithms
- An equation is said to be a closed-form solution if it solves a given problem in terms of functions and mathematical operations
- MatLab, Mathematica, MathCAD, C++, GNU Octave
Supply Chain Enabled