How to maximise system performance with state-of-the-art technology

Depending on your business, system performance can be measured with range of different metrics. Here are some examples:

Maximising the yield for food or bio-based materials
Minimising the total time it takes to get people or goods from A to B
Maximising the well-being of residents
Protecting as many people, species or resources as you can

Surprisingly, the solutions for maximising system performance are often the same, regardless of the type of systems or the metrics used to measure their performance. Many of these solutions are provided by or at least supported by software. We will explore some of these in more detail.

Traditional optimisation algorithms

Algorithms that follow a strict, predefined logic are often neglected these days. Algorithms based on Machine Learning (ML) often make traditional optimisation algorithms not look sexy enough. However, these algorithms typically require a much lower amount of computational resources compared to ML solutions. Also the total cost of development can be much lower than for a good ML model and strict logic is usually more predictable than learned behaviour.

On the other hand, strict, predefined logic requires good knowledge about all the factors that influence a system. In complex systems it is often hard to predict all possible states. If a certain state has not been considered in the algorithm, inappropriate behaviour can lead to catastrophic outcomes.

Machine Learning

Approaches like Deep Reinforcement Learning can provide great performance where knowledge about the system and its environment is limited. The system can learn from previous experience and adjust its behaviour as it encounters new situations. One of the biggest advantages of ML is that it can learn from existing data and its own experience with little or no human interference. This can dramatically reduce development time.

However, Machine Learning can also cause extremely high costs for training and inference (operation in production) while not necessarily reaching the required performance or reliability. While the algorithms themselves can often be used in a wide range of applications, each application still requires significant input from experts to find the best architecture for Artificial Neural Networks (the “program” or “brain”) and for the infrastructure to train and run these Artificial Neural Networks on. They also need to find effective strategies for collecting, labelling, storing and transferring relevant data.

Evolutionary algorithms

Evolutionary algorithms are algorithms that compare the performance of different configurations (a “population”) and select new configurations for future behaviour (new “generations”) based on certain criteria. Evolutionary algorithms are often extremely easy to implement and very versatile. They work for virtually any optimisation problem.

However, evolutionary algorithms do require multiple equivalent systems. The more the better. Some (many) configurations will show very poor performance. Many systems with poor performance can often mean extremely high costs and risk. Therefore, evolutionary algorithms are usually best suited where a configuration can be tested quickly and cheaply – ideally in an simulation.

If applied intelligently, evolutionary algorithms can still be of significant value where processes are slow and costly.

Efficient protocols and payloads

When system components talk with each other, what they talk about and how they talk can hugely influence overall system performance. Some protocols are faster but possibly less reliable. Some payloads are smaller but possibly take more time to process. Sometimes the order of messages matters, sometimes not. Sometimes it’s better when a message can be easily decoded by humans and/or machines, sometimes protection of the message content is the highest priority.

Simply changing the communication between components without changing any of the actual behaviour of the components themselves can mean the difference between a system that performs well versus one that doesn’t.

Efficient storage

Storing data efficiently does not start with choosing the right technology and location to store the data. Before thinking about the storage itself, it must be clear what is required to operate and optimise a system and where the data is required when. Is consistency important? Is it necessary to keep certain data? For how long?

Neither of the optimisation algorithms above can work effectively if the data it uses is incomplete, incorrect, inaccessible or otherwise inappropriate. Different algorithms can handle different levels of quality, but ultimately a solution will only be as good as the quality of the data that is used to develop it.

Efficient architecture

The best algorithms, protocols and storage solutions are of little value if they are not combined effectively. Code must run on platforms that are best suited for it. If not necessary, no communication is better than super-fast and super-reliable communication. Can a component or code be reused without major additional work? Can a system or one of its components be upgraded without breaking anything?

The solution architecture – the selection of components and how they are integrated – is what ultimately determines the performance of a system and therefore the success of a business or society.

Combination of optimisation techniques

Taking advantage of any of the techniques mentioned above can already lead to significant performance improvements. Combining them in intelligent ways is even more powerful and can unleash potential that others can only dream of.

We have extensive experience in maximising the performance of systems using the techniques discussed here. If you want to bring the performance of your systems to the next level, contact us now.