An Operational Research Consultant (ORC) is a professional dedicated to analysing and solving optimisation problems arising from the need to improve existing processes in practice.
One of the key features of an ORC is his/her analytic capacity and the ability to create data models, mathematical models and IT processes representing existing processes. The goal of an ORC is to model processes for subsequent automation and optimisation.
It should be noted that the profile defined here is not that of a business organisation consultant. An ORC’s tasks consist of modelling processes and using optimisation and statistical techniques to find the best ways to operate.
This description makes no reference whatsoever to particular fields, industries or processes and this is due to the fact that an ORC is not an expert in one or more specific areas. An ORC knows algorithms and optimisation techniques and is very skilled in drawing up models and defining processes, serving as the liaison between those who are experts in the field and the technicians entrusted with developing the solution.
Common Tasks
To establish the knowledge and experience needed by an ORC, let’s identify the most common tasks they perform.
When facing an operational research project it is necessary to take into account that, as the name says, the project involves some research. Every project, problem and process has specific peculiarities, and any experienced ORC knows that OR solutions can be very sensitive to small changes.
An OR solution is associated to one or several optimisation problems, and this problem in turn is associated to mathematical models, solution algorithms and/or solution searches. In general, algorithms are very sensitive to model structures and a small change can mean solving a model in days instead of in seconds. This «volatility» in the model-algorithm combination is what makes it essential for an ORC to have experience, whether acquired on the field or through the literature, to identify the most appropriate models and algorithms for each situation.
In other words, an ORC must be able to identify optimisation models and algorithms capable of solving the problem in question, for which they must have extensive knowledge of techniques, models, peculiarities of the algorithms, references of successful applications, and sometimes more importantly, references of models and algorithms that have failed.
Models
During the definition of an OR solution, it is necessary to correctly identify the model required for the environment in question. An ORC should be able to identify whether it is necessary to have a solution with optimal results, or one improving existing results, one that proposes a way of obtaining results for an unresolved problem, etc. Each alternative is found with different solution models and algorithms, and an ORC should be able to associate the end user’s needs with the solution techniques and models available in the existing software libraries.
Simulation and Redesign
A common error among professionals is to confuse prediction tools with OR tools. Operating research can be used to conduct simulations of possible scenarios, which are set up changing the fact base of the problems to be solved and on which algorithms are based to find solutions. Simulations are not prediction tools of possible situations, in OR, prediction tool results are used as an entry or fact base to conduct simulations.
As mentioned above, an ORC is not a specialist in business organisation and process design, but the results of the simulations in different scenarios are key to designing new processes or to redesigning current processes.
The architect’s role
In general, the algorithms used in OR are costly as far as computer resources are concerned, primarily CPU and memory. The ORC must be able to define the necessary architecture to support running and implementing the solution, and this requires having the necessary software knowledge, as well as references and the ability to estimate the hardware required for the solution to be designed.
The programmer’s role
As any good technical consultant, the ORC must have knowledge and expertise in software development and everything that it entails: project management, system administration, programming languages, version control, task management tools, etc.
Skills
These are the skills an ORC should have:
- Programming languages. Extensive knowledge is required of a programming language, in particular C++ or Java as most libraries are written in these languages. It is also necessary to have sufficient knowledge to develop, or at least lead, developments in popular programming languages such as Python and C#.
- Software libraries. The ORC should be able to recommend the algorithm and the library that best meets the specific needs of each solution. This is why they should have extensive knowledge of some of the main software libraries and be up to date with algorithms and modelling techniques for secondary libraries.
- Problem modelling languages. Optimisation algorithm library producers generally build languages specifically oriented to OR problem modelling, and the ORC should be able to develop models in practically any of these.
- IT knowledge. Even though ORCs have a profile that is more similar to that of a researcher, it is essential that they have extensive information technology knowledge. An ORC should know at least the basics of most software development and integration technologies since, without this, the solution might not be supported by the architecture and/or technology selected by the technical team.
- Optimisation Techniques. ORCs should be familiar, although not necessarily in great detail, with the following optimisation areas, as well as know about the various libraries implementing each technique. Occasionally it will be the ORC’s task to develop some of the algorithms of the areas below:
- Linear Programming
- Integer Programming
- Integer Mixed Programming
- Convex and Quadratic
- Programming
- Semidefinite Programming
- Nonlinear Programming
- Stochastic Programming
- Graph Algorithms
- Network Flows
- Decomposition methods
- Dynamic Programming
- Combinatorial Optimisation
- Constraint Satisfaction
- Constraint Programming
- Local search and heuristics
- Genetic Algorithms
- Probabilistic Algorithms
- Multi-Target Optimisation
- Software Development. An ORC should have a basic understanding of the following aspects:
- Version Control
- Automatic Compilation
- Quality Control (Q&A)
- Debugging
- Object-oriented Programming
- Unit Testing
- XML Databases and SQL
- Client-server programming and design
- Security
- Software development and project methodology
- Collaboration tools
- Parallel Programming
- Distributed Programming
Some members of our team have these skills and more and we invest in training and development to make sure the rest of the team attain them.