Reduce Waste and Increase Efficiency with Process Optimization - MATLAB
Video Player is loading.
Current Time 0:00
Duration 46:55
Loaded: 0.08%
Stream Type LIVE
Remaining Time 46:55
 
1x
  • Chapters
  • descriptions off, selected
  • captions off, selected
      Video length is 46:55

      Reduce Waste and Increase Efficiency with Process Optimization

      Overview

      Do you spend a lot of time manually planning your production schedule, optimizing process recipes or minimizing energy consumption and waste?

      These tasks are not only tedious and occupy a significant amount of time, but are often impossible to solve optimally for humans. This can lead to large losses in efficiency and flexibility as well as wasted material.

      Sarah Drewes, senior team lead consultant at MathWorks, will present how she worked together with engineers from Huber+Suhner to automate a complex scheduling task that led to significant savings of time and material. Additionally, Chris Lee will discuss two industry use cases from STIWA and HKM Steel, and show how these customers have achieved a significant ROI (Return on Investment) in their projects with support from MathWorks optimization experts.

      Furthermore, Chyannie Fahdzyana will present an overview of how to formulate and solve several types of optimization problems in MATLAB®, and how to integrate optimization algorithms into a production environment.

      Highlights

      • Automate difficult decision-making tasks and save considerable time and money
      • Realize your projects with support from MathWorks experts
      • Learn about successes in industry projects

      About the Presenters

      Chyannie joined MathWorks this year as an application engineer and supports customers on language of technical computing. She received her PhD degree in Mechanical Engineering from the Eindhoven University of Technology (TU/e). Prior to joining Mathworks, she worked previously at 2getthere, a company that develops automated shuttle vehicles as a Control Software Engineer. Her interests include, but are not limited to, the intersection of optimization and control, AI, and intelligent systems.

      Chris is the product manager for Optimization at MathWorks.  He works with customers, field engineers, and the software development team to define new optimization capabilities and applications to serve the diverse industries where optimization is used, including aerospace and defense, automotive, energy, and manufacturing.  Prior to MathWorks, Chris worked at Dassault Systèmes as a product manager for aerodynamic design optimization.  He holds a Masters in Aerospace Engineering degree from the University of Toronto.

      Sarah leads a team of consultants helping customers from various industries to get the maximum benefit from our MATLAB products family, focusing on analytics and optimization, as well as application design and software development. Sarah holds a diploma in Mathematics from Technical University Munich and a PhD from Technical University Darmstadt, specializing in mixed-integer optimization. Prior to joining MathWorks, she did research in operations research at the University of California, Berkeley, and then worked on network optimization for T-Systems GmbH.

      Recorded: 1 Mar 2023

      Welcome to this MathWorks webinar. My name is Chris Lee. And I'm the Product Manager for Optimization. I have a background in design optimization. And I'm really happy to be joined by Chyannie Fahdzyana from our application engineering team, And she has a background in optimization and controls. We also have Sarah Drewes from our consulting team. And she has a background in operations research and mixed integer optimization. And together, we're excited to talk to you about how you can reduce waste and increase efficiency with process optimization.

      But first, I just realized, it's morning time here in the US and I didn't have time to eat breakfast. So if you'll bear with me for a moment, I just need to figure out what I'm going to order from the cafe down the street. So I'm going to use MATLAB to figure this out.

      OK, this is the menu. It's a very simple cafe. They've only got a few items. And this is the nutritional information and the cost of each item; And I'm not in a programming mood right now. So I'm going to use this visual interface, called the Optimize Live Editor Task, to set up an optimization problem to help me figure this out. And what I'm trying to do is figure out how many of each item I'm going to order.

      So I obviously need to have more than zero. And I'll start with one item of each. But my goal is to spend the least amount of money possible while still having a relatively nutritious breakfast. And so I would like to have at least 10 grams of protein in this breakfast. Also, I'm trying to not have too much calories. So let's say that I'll have less than 500 calories from this meal. And I'd like to have at least some fiber. So let's go with 2 grams of fiber-- at least 2 grams of fiber. And let's see what we get.

      So according to this optimization, I need to actually get 2 0 0 1. So that translates to two eggs and one apple. All right, two eggs in one apple is what I'm going to get. It's going to cost me just $3. That doesn't seem too bad. So great, now I know exactly what I'm going to get after this webinar is over.

      All right, so now that that's out of the way, let's get into the webinar. This is our agenda for today. So I'm going to give a quick introduction. And then we're going to talk about a couple of customer stories of how they use process optimization.

      And then Chyannie is going to bring us through this really nice demo showing how you can use MATLAB to set up and solve a production planning problem. And then Sarah is going to take us through a deep-dive customer case study of some great work that she did for a customer called HUBER+SUHNER. I'll have a few other comments about deployment and parallel computing. And then we'll finish off with some conclusions.

      So across different industries, manufacturing and production processes face some tough common business challenges. The processes are cost-intensive and profit margins can be thin. And so highly efficient use of raw materials, of machinery in operations is really critical. Efficiency is also important to shorten the time to market. And so processes must scale to meet changing market demand and adapt to different change and constraints. And then, finally, you're usually looking to optimize or maximize the amount of yield all the while minimizing defects, emissions, and waste.

      And because of these business challenges, organizations have to address some pretty complex decision-making problems. And these involve dealing with questions like, what should the manufacturing schedule be to meet today's customers demand, what's the most efficient way to coordinate the robotic components or all the different kinds of machinery that we have on the shop floor, or how much of each of our products should we make to maximize the profits given what we see in the market, or how do we make the most efficient use of the raw materials that we have during our production process.

      And so these types of questions and these kinds of decision-making problems are often challenging to solve. And this is because there are often many variables that affect the KPI that define the process. And sometimes the variables have a non-linear effect on the KPIs of the process. At times, you're limited to discrete choices for certain variables, which makes things more challenging. And there's often competing requirements between what you're trying to optimize and the different constraints that you have.

      These decision-making problems are also often time consuming to solve. With all the different variables at play, there are often way too many possibilities to evaluate with a brute force approach. But then, on the other hand, taking a manual approach of just trying to figure it out on your own can take a long time and often leads to suboptimal results and often doesn't satisfy all the constraints.

      Also, these decision-making problems are often addressed in the production environments by staff with limited programming and mathematical background. And so, for example, the operators on the shop floor, they're focused on production operations, not on developing mathematical models. And so they need to be able to use the models for the decision-making without needing to understand the details of what's going on with frequently changing requirements and data as well.

      And so what we're here to talk about today is how process optimization can address these challenges. So we saw that the decision-making problems are challenging to solve. But with process optimization, you can make better and optimal decisions. The MATLAB optimization products provide a wide range of scalable solvers to address a really wide range of problem complexities, including nonlinearities, mixed integer constraints, global optimization problems, and multi-objective problems.

      We saw that the decision-making problems are also time consuming to solve. But with process optimization, you can figure out solutions faster and with an automated approach. And again, this is because the solvers themselves provide an automated and iterative search towards optimal solutions that satisfy all the constraints at the same time. And on top of that, in certain situations, you can leverage parallel computing resources to get even faster turnaround time.

      And then we also saw how decision-making problems are addressed often by staff with limited math or programming background, while process optimization can take the form of deployable solutions. And what I mean by that is once you have an optimization model that you've built, you can then build a nice, easy-to-use app that provides an easy-to-use interface for solving that problem and then take advantage of the wide range of deployment options so that other people can easily and regularly use it.

      Process optimization often fits in a broader process engineering workflow. And so in this workflow, process engineers use modeling simulation and optimization to determine how to maximize, for example, the process efficiency. And then these methods can be used directly for the control of the plant. And of course, in the process, this can generate a lot of data that's collected from the plant to refine the plant model and provide new conditions for new simulation and optimization. And at MathWorks, we provide a really comprehensive set of software tools for this whole workflow. But today, we'll be focusing primarily on the optimization part of this workflow.

      MATLAB as a whole provides a platform for optimization. There are many toolboxes in different areas, such as signal processing, AI, and finance, that customers often use to build models for tightly integrated optimization workflows, with the solvers provided in our optimization tool boxes. But then a key part of using these workflows to achieve real return on investment involves scaling up and deploying for production use. And so we provide tools that help you take advantage of parallel computing resources as well as to build optimization-based applications, which you can then deploy royalty-free.

      And then another deployment option is you can generate a portable C or C++ code for certain optimization solvers to embed on a variety of hardware platforms. And leading use cases for this would be controls and online parameter estimation. Again, you can do this royalty-free.

      So what can you do with optimization? There's too many possibilities for us to talk about today. But here's a few examples of what our customers have done. They've done things like optimize manufacturing schedules and trajectories, reduced cost, waste and energy consumption, they've planned production of different processes and optimized designs. And today, we'll be looking more closely at the stories involved with the top three customers.

      So at that, let's take a look at a couple of these customer stories. So HKM is a steel producer based in Germany producing 5 million tons of steel annually. The steel production process is a complex process with more than 150 discrete steps and numerous constraints. And in HKM's previous process, dispatchers managed scheduling for the entire plant manually, which couldn't fully account for the delivery schedule imposed by their customers and was also really dependent on the extensive knowledge of the few dispatchers that they had. And so to mitigate the risk, they needed an automated system capable of maximizing plant production and meeting the delivery schedule.

      And so using MATLAB, HKM used a genetic algorithm to search for global solutions that would maximize plant efficiency based on their customers requirements, as well as on time, temperature, and equipment usage restrictions. And then to accelerate the process, HKM executed their optimization on a computing cluster. They also created a Java class from the MATLAB code, which was then deployed as a Java component in their existing scheduling application.

      So as a result, HKM completed a working version of the optimization workflow in just 20 days. And they estimated that they were able to develop their solution in MATLAB 10 times faster than implementing something comparable in Java. They initially had the optimization tool running.

      It took them, initially, an hour to run. But with minimal code changes, they set up the application to run on their cluster, and now they get results in just five minutes. And then, finally, the automated system enabled them to improve their process and reduce risk. And so now their customers are more satisfied because they get their material exactly at the time that they requested.

      Our second story is from STIWA Automation. And they are an industry leader in high-performance automation based in Austria. They provide their customers with automated feeding, packaging, and transport systems, as well as assembly and process modules. A typical STIWA system collects large amounts of raw production data that captures noise, torque, and other machine measurements. And this data is filtered and processed to identify appropriate tolerances, compute time-optimized tracks for robots, or flexible transfer systems, or make other modifications to the process.

      And in the past, STIWA engineers wrote data analysis algorithms in low-level languages for PLCs. But this approach is slow and it became unworkable as the algorithms grew more and more complex. And so the engineers decided to develop algorithms in MATLAB to automate data analysis and plan time-optimal trajectories for robotic components. The algorithms invoke optimization functions to calculate these optimal trajectories based on defined constraints, including velocity and space limitations.

      The team sped up the trajectory calculations by executing the optimization using parallel computing on workstations and then packaged their completed algorithms as .net components. As a result, the time-optimal trajectory planning enabled them to reduce the total cycle time for their machining process by 30%. And this resulted in a significant increase in their production output. The algorithms analyzed a huge amount of data in near real time. But they were able to run their trajectory optimizations on multiple cores to really speed things up. And by integrating their MATLAB algorithms into a .net production system, they can easily deploy the algorithm to several machines.

      So these were just a couple of examples of how customers have achieved some great results using process optimization with MATLAB. We will hear about a third one from Sarah in a moment. But before we do that, Chyannie, would you mind showing us a live demo of how you can use MATLAB to set up a typical production planning problem?

      No problem, Chris. Hello, my name is Chyannie. And today, I would like to show you a demo on solving a production planning problem in MATLAB. For this specific example, we are looking at production of fertilizer blend. So a little bit of background on this demo, suppose you have a factory and you would like to schedule the production of fertilizer blends over time. You want to maximize your profit. And a fertilizer is made of a number of raw materials with different nutrient content.

      As you can see in this table, you have six different raw materials and each has different levels of NPK nutrients. Using these raw materials, you would like to produce two types of fertilizers, balance as well as high-end. It is subject to quality, production capacity, and inventory constraints. In order to do this, we assume that you know the market demand and cost of buying these raw materials and selling these fertilizers well in advance.

      We are going to solve this problem using MATLAB and with our problem-based framework. So the problem-based framework allows you to symbolically solve an optimization problem. More on that will be shown during the demo. Additionally, I would also like to show you how you can interactively share your work with other people using an application that we create in MATLAB.

      So this is an illustration of your optimization problem. So at the start, you have a certain level of inventory. And at the end, you have a target of how much you want to store. And in between, you want to know how much you ideally should store. And that depends on how much you make and how much you sell. All of this should be within the maximum capacity that you can store, as well as the maximum that you can produce.

      To summarize, you can write it down as an optimization problem. So here, we want to maximize our profit. And we would like to find our optimization variables, that is the amount of raw materials we use, the amount that we sell, and the amount that we make. It is subject to a set of different constraints, such as the inventory constraints, the production capacity constraints, the blend quality constraints that ensures you have the right amount of percentage of the nutrients, as well as the inventory progression over time.

      In this case, we are going to solve this as a linear programming problem. So you want to minimize or maximize a certain linear cost function f subject to a set of inequality and equality constraints. Let me show you something.

      What you see right now is a web app that we designed in MATLAB based on the optimization problem that I have just explained to you earlier. Let me first navigate through this app. So what I'm going to do now is I'm going to load our input data that is the file containing the market demands, the selling price, and also the nutrient content. Now we wait for the app to validate our input data to see if it's in the correct format and so on. OK, it's green. And then I'm going to click on this button where it will run the simulation of this optimization problem behind this app.

      These are the results recommended by our algorithm. So here, you can see the amount that you should make, sell, and store each month for a year. And you can also see the maximum amount of profit that you could get if you follow this schedule. It looks good, right? But how do we get here? Let me show you how we can do this in MATLAB.

      What you see right now is Live Script. Live Script is an interactive documentation where you can have both your code parts as well as your text parts together in one interface. This allows your code to be more readable as well as organized. What I'm going to do is to run this whole script. And then I'm going to walk you through each section and explain how we can get to this optimization formulation.

      OK, let's start. So the first thing I want to do is to load my input data, and that is stored in the file called fertilizer. Here, I am also assigning those input data to some workspace variables. You can see in this table the required nutrient content for the balanced and high-end blends. And here, you can see the amount of nutrient content in each raw materials.

      Here is our market demand for the next 12 months. You can see that it differs per month as well as per type of fertilizer blend. And here is the chosen selling price for our problem. And for this, we assume the selling price of the fertilizer stays constant. And here is the price of buying the raw materials. It can be seen that the price of buying the raw materials depends on time as well as the raw materials itself. We also consider the storage costs in this optimization problem. The storage cost represents the cost for storing blended fertilizers per ton and time period.

      In our problem, we have the maximum amount of inventory that we can store each time and also the maximum amount that we can produce each time.

      Now that we have all of our input data loaded, let's start to formulate our optimization problem. To do this using the problem-based approach, what you want to do is first create your optimization object using the command optimproblem. And here, we can already specify whether you want to minimize or maximize your optimization problem. We assign this to a workspace variable called the inventoryProblem.

      Next, we define our optimization variables. In this problem, those are the number of fertilizers we need to make, sell, as well as the amount of raw materials that we use. To do this, we can use the command optimvar, and here, you can already specify the size as well as the lower and upper bounds of each optimization variable. Additionally, we also want to create a variable that represents the inventory at each time.

      Now let's start formulating our objective. Our objective is to maximize the profit, and the profit is essentially the amount of money we make from selling minus the amount of money we spend on making these products. So to do this, we first start calculating the revenue-- that is the selling price times the amount that we sell.

      And then we also calculate the ingredient cost or the amount of money that we spend buying the raw materials to make the fertilizers. So for this, we can calculate it by the cost of buying the raw materials times the amount that we use. Additionally, we also have storage costs, and for that, we can do that by multiplying the inventory cost factor and the total of inventory that we have.

      Now that we have all of the components of our objective, we can place it into our inventoryProblem object right now. So you see the objective is the revenue minus the ingredient cost minus the storage cost.

      Now that we have defined our objective, let's formulate our constraints. We have several constraints in this specific example. So I'm going to walk you through one by one. First, I'm going to explain the inventory progression. So the inventory at each time depends on how much you make and how much you sell. So we can say that the inventory for this time equals the inventory at the previous time plus the amount that we make minus the amount that we sell. Here, we express it as equality constraint, as you can see.

      Next, we define our final state constraint, and that is the goal at the end of the period of how much you want to store. Here, we also implement it as an equality constraint. And now we are implementing the inventory and production capacity constraints in our problem as linear inequality constraints. This ensures that each time the total inventory and the reduced amount is bounded

      Additionally, you want to ensure that the amount of fertilizer you make to be the same as the amount of raw materials that you use. To do so, we write this as an equality constraint, that the amount that we make equals the amount that we use. Then, we have the quality constraints. We want to ensure that the produce blends have the required quality level.

      As you have seen earlier, each raw material has a different nutrient content. And there are also different nutrient requirements for each plant type. So for each nutrient, we impose that the total percentage of such nutrients in the raw materials used times the amount that we used is equal to the multiplication of the required plant nutrients and the amount that we make.

      Now that we have all of our constraints defined, we can place them into the problem similarly as before. Our problem formulation is now complete. Let's solve the problem. You can do this using the command solve and then pass the name of your optimization object.

      So from this summary, you see that we found our optimal solution and that we solved this problem using linprog. Linprog is our linear programming optimization solver. So with the problem-based approach, you can see that MATLAB automatically finds the right solver for your optimization problem. Here, you can also see that the results are stored in the structure called sol, and you also see the exit flag that says it's an optimal solution. And you can also have other parameters displayed here, like the type of solver algorithm and so on.

      Additionally, you can also visualize your results in the form of a table or as a bar plot, in this case. But actually, let me go back to the app because it has better visualization in this case.

      All right, so what you see right now is, then, the summary of the recommended amount of the fertilizers you need to make, sell, and store each time. You see that it differs per type of fertilizers depending on the market demand. Here, you can also see the amount that you should sell. And lastly, you have the recommendation for your inventory. So, interestingly, you see that, at the start, you are recommended to store a lot of the balanced type, and then, at some point, you store nothing at all. So this is suggested by our algorithm, considering we have a storage cost that we don't want to spend too much money on.

      All right, that's the end of my presentation. Thank you so much for watching. I hope you find it interesting. And if you have any questions, just feel free to ask me. In the meantime, I would like to hand over the rest of this presentation to Sarah.

      Thanks a lot, Chyannie, for this nice introduction into the technology with this demo that is quite similar to the workflow I used in this customer case that I would like to present.

      So the customer we had been working with is a Swiss company that produces electrical and optical connectivity solutions for industrial and communication and also transportation customers. And we came in into the following situation.

      So they use a multistep process to build cables for customer specifications. So that means they gather the copper, they strand the cable, then they extrude the insulation and build the connectors. And one problem that they face in production is that the stranding process results often in an uneven length of remaining material, and some of this material then has to be discarded as waste and cannot be used in future assemblies.

      For that reason, they are very careful in how they actually plan their production each day. So when we started that project, the process engineer reported that they spent about two to three hours a day to plan their production of the stranding process. And still, they produced quite a significant amount of waste. And the problem was because they did a manual planning process based on Excel sheets, they couldn't say how good the production plans had been. So that means they couldn't actually evaluate if waste could have been avoided if there was a better solution or not.

      So that actually then defined the goals for our joint projects. So we were supposed to automate the plant planning process itself to just reduce the high cost and time for planning. In addition, we're supposed to optimize the production plans to actually improve the waste. That means the solutions would have less waste than the manual process they used. And for each solution, it would be great if we would actually be able to quantify how good the solution is. And whatever tool we created, we were really targeting to make that available to the planners who used to manually plan that process before so they could really use this easily every day in their planning process.

      So let's have a closer look at the process itself. So here, you can see a planetary stranding machine. A planetary stranding machine has several spools of strands sitting on top of it. And from those spools come here, down, the different strands that are then combined into a cable where the number of strands and the types of strands are actually specified by the customer who orders the cable. And then each time one of those spools is empty-- so that means one of those strands end-- the cable is cut. And then that spool is replaced by the next spool of the specified type.

      Let's have a closer look. So we have here between usually 5 and 10 different strands that must be put together to a cable. If I cut the cable because one of the spools is empty, it's possible that other spools still contain material, but some of those spools might contain material that is too short to use in a further cable. So the cables to be produced usually have a minimal length. So every remaining material on the spools that is shorter than that length must be discarded as waste.

      So the planning task that the planners had been facing every day was really to determine the optimal combination of spools to put-- like the order in which they put those spools into the machine to minimize the remaining leftover material.

      Let's have a look at this in a little bit more of a smaller example and a little bit more abstract to understand what's going on. So first of all, we have, every day, an inventory. So that means here, we have, for example, three different types of strength-- type 1, type 2, and type 3. And we have four different spools of type 1, two different spools of type 2, and two different spools of type 3. Here, you can see that almost all of them have a different length.

      So if I would just take those spools into production as they're lying in the inventory, it would look like this. So I would start with the first spool of each strand type, and then I have to cut, after the first spool is ending, after 450 meters. Then I would put in the next spool, and I would again cut when that is empty after 890 meters. Here, I actually have already produced some waste because when the first spool ends for the first time, the third spool then has the leftover material that is too short to reuse. So that's the waste that I have produced.

      So that means I exchange the first and the third spool, and then I have the third cut after 1,050 meters. I don't have any leftover material here, but then after the fourth cut, if I cut for the last time, I have left over material for the first and the third type again, and so I have a total waste production of 640 meters. And now the planners, of course, they also wanted to minimize the waste material, so as few as possible leftover materials below a certain length. And they also wanted to really use as much stock as possible, or all of the inventory if possible.

      So how can I do that? This is actually a mixed integer programming problem. So that means I can model that as a mathematical optimization problem and then try to solve this with MATLAB.

      So how do I go about that? So, first of all, when I'm the mathematician on the project, then I would, of course, set up the mathematical model. To give you a glimpse, don't try to read that. I just want to give an impression-- this is how it looks like. So I actually put together, with LaTeX or another formal editorial in my mathematical formulas. I work, usually, with a lot of indices if it's this kind of combinatorial problem at hand. And so I have to be very careful that all the formulas that I write are correct and the model works out as it should.

      Once I've done that, I can easily implement those in MATLAB, as you've just seen in Chyannie's demo. And it's really the workflow I did. So I use a live script to define those formulas, and then how I come to implement that is basically for one line of math, I write one line of MATLAB code, roughly. Perhaps I have a few loops around it, but that's all my effort. So I can really put all my effort into the mathematical model, and I don't have a lot of effort to implement that into my MATLAB environment.

      And, as you have just seen, that's easy. Once I have set up the problem in the right way, then I just have to call solve. It will select the appropriate solver, and we also have a solver for these types of problems. So in linprog solve, this mixed integer linear programming problems in the MATLAB optimization toolbox.

      Great, so now I have my first mathematical model. And in reality, unfortunately, then I'm not done because I might have understood the problem pretty well, but usually something is missing, or my results are not really fitting the reality of the planets or the process engineers. So usually this is really an iterative process. So that means I try to understand the problem together with process engineers and planners. Then I come up with a model, and then I will discuss the results with the planners or, in this case, directly with the process engineer who was my main counterpart at the customer. And then we iterate until we are happy.

      And once we are happy with this, I can actually start to try to bring it to the people, to the planners, and I will use again the same workflow that Chyannie showed. I will create an app with MATLAB to do so. But also, for this iterative process, it's usually really not so straight ahead because I usually have to consider a lot of variations and parameters for my model and my solvers. And for that, I really have the step where I also use different tools to tune my model and solver parameters.

      So just to give you an impression here, you can see just one snapshot of one experiment I made. So here, you can see where varied two model parameters. The max spool changes-- that means if I put a spool into this machine, I cannot take it out and later put it back in again. That would drive the planners crazy. So I have to kind of restrict this explicitly in my optimization problem or I say, OK, let's see if I allow this process to happen, does that really add value to the optimal solution or not? And here, I will also define the number of maximum cuts that I'm allowed to do in the process.

      And I have here a nice overview of how much waste I produced and how much leftover material I had. And here, I can also see what was actually the solution. Was it an optimal solution or, here, was it just a feasible solution? And here, in the last row, we have also what they were requiring in terms of quality.

      So here, you can really see what we call the optimization gap. That is the maximum distance the solution you see here has to a potential optimal solution. So that means, yeah, I'm less than 1% away from the optimal solution. Or perhaps, I even have the optimal solution. So that's why, here, we exited optimal. And here, I have a solution where I'm still 55%, perhaps, away from the optimal solution, but then, so therefore, I have a quality criteria. So in the first few lines, I cannot really do better, but even if I get a solution that's not optimal, I know how far I am from a potential optimal.

      And once we tuned everything and everyone was happy, we started to create an app with the MATLAB App Designer. And it's much simpler, even as what Chyannie just showed us. It's really that the planners can select between two different kinds of models depending on the planning at task. So there's the situation where they want to use all the material, all the spools that they have in inventory, or the other model-- they sometimes have a specification of a length of the cable they want to produce. So that they can select here in a dropdown menu. They can load their data.

      And then they are able to define model parameters themselves so they can, for example, define the maximum number of production steps. They can set tolerances and even how long they are willing to wait for an optimal solution. And they can also see here, with the gap, how good the solution they produced is. And everything is written automatically to an Excel, and they can also open that from the app. So now the plan is really-- with very little effort, we could make that optimization model available to the actual planners on the floor, and they actually started using it pretty fast.

      What were the results? So we actually managed to reduce those two to three hours a day by 75% So that means that they really need usually less than 15 minutes a day to planning the same things that they before used two to three hours for. And we were able to cut the waste by 10% to 20% using this mathematical model. And there are examples where they really see reductions of 50% on the waste. And that's also important for them to reduce their carbon footprint.

      So apart from the mathematical model and the tools that you have already seen in the demo and also in the short introduction of Chris, I want to also point out what other resources we have at MathWorks to help you solve your critical optimization planning problems.

      So in addition to the great products that we have that you see make it really easy to solve these kind of problems, we also offer training to get you up to speed with those as fast and best as possible. And, in addition, as you've seen in my presentation, we have a consulting department who can help you fill some of the gaps or accelerate the projects that you want to conduct yourself.

      In training here, we summarize some of the training offerings that might be fitting in these kind of contexts. Of course, we have a dedicated training offering for optimization techniques in MATLAB. But also, if you say I'm fine with optimization, but I also want to build apps, then you can go to the interactive applications in MATLAB training that helps you learn that very fast and easily.

      And last but not least, sometimes these optimization problems are, of course, not solved in a few seconds or even minutes. And then you might want to look into accelerating and paralyzing your MATLAB code in one of those trainings. So we really see the benefits of getting more proficient and productive with trainings in many of our customers.

      And the other is, with consulting, as you've seen, we can further improve the productivity that you gain from our products by really reducing risk on a project because we are really there with you. We have industry professionals in our consulting team with an average of more than 20 years of experience. We help, really, you to do your project faster, and then really transfer the knowledge and the capabilities so you can then continue on your own, continuing with those projects.

      And with that, I would like Chris to tell you a little bit more about how you can easily deploy and scale up your optimization algorithms or models.

      All right, thanks a lot, Sarah. That was really interesting work that you did for the customer-- challenging problem that you had to solve that sounds like, at the end, the result was really great and offered a great solution for them in the form of that app. And so it seems like a common thread both with the work that you did as well as the demo that Chyannie did. A key part of getting the most value out of process optimization is being able to deploy the solution. And we also saw, with the customer stories that I presented earlier, that scaling up using parallel computing is also really important. So let's talk a little bit more about each of those areas.

      So yeah, both with Chyannie's example and Sarah's project that she did for the customer that, at the end, there was an app produced that other people could easily use to solve the optimization problem. And there are multiple ways to actually share an app once you've built it. And so let's talk about a few of those ways.

      The simplest way to share an app is to share the App Designer files directly with other MATLAB users, and then they can then run it in MATLAB. But you can also share an App Designer app as a packaged app, which others can install, and this installation would include all the other supporting code and data files that they would need. You can also create a standalone desktop app by compiling the app as an executable. And the key advantage here is that this would allow someone without a MATLAB license to still run the app.

      And, alternatively, you can package it as a web app and then host it on a web server. And, again, this would provide access to a broader set of users through a browser this time. And then, finally, you can build software components for integration with other programming languages. We saw this with our customer stories, where HKM created a Java class and STIWA packaged their solution as a .NET component. And there are other approaches that you can take to integrate into your production system.

      In terms of scaling up and parallel computing, many of our solvers can take advantage of parallel computing resources to enable faster overall turnaround time. A lot of the solvers that we offer in the Global Optimization Toolbox evaluates multiple points at the same time to define each iteration, and so these points can be evaluated in parallel at each iteration if you have the resources for that. And similarly, with Optimization Toolbox, you can use parallel evaluations of the objective and constraint functions for the finite difference approximations of the gradient.

      And so, at MathWorks, we offer two parallel computing solutions, depending on the resources that you're looking to use. With parallel computing on the desktop, you can be more productive with your multicore processors by utilizing headless MATLAB sessions called workers to use the full potential of your hardware and speed up your workflow. And the details of using multiple sessions in the background are taken care of automatically, enabling the computations to execute in parallel.

      But then, when you need to scale up beyond the desktop, you can scale up to clusters in clouds. And you can use parallel resources on the cluster in the same way you did on the desktop, without needing to recode your algorithms. So the transition is really smooth. Your programs and simulations are run as scheduled applications on the cluster, and all the cluster-side licensing is handled automatically.

      All right, so with that, let's just finish off with a few key takeaways. And so, hopefully, what you've seen today is that you could find better and faster solutions to important decision-making problems in manufacturing and production industries using process optimization.

      We saw multiple examples of organizations that achieved great results using MATLAB optimization for their process problems, and we also saw a great demo showing how you can use MATLAB optimization in the form of an accessible workflow that involves modeling, solving, and deploying process optimization applications. And, finally, with consulting and training, these can help you make the best use and get the most value out of the technology that we offer. And so our consulting and training services are eager to help.

      We do have a lot of resources available for getting started, learning the basics of different kinds of optimization problems, and really practical how-to videos, as well as really great examples that you can build off of for your problems. And pretty much all of this is publicly available material that's available online. I do want to highlight that we also have this optimization onramp. This is a 1 to 2 hour hands-on self-paced course for getting started, and it's completely free. So this is a great thing to try to get familiar with our tools, and we have one for optimization, but also other products as well.

      And then Sarah also talks about the Optimization Techniques course in MATLAB, which is a one-day instructor-led training course with plenty of hands-on exercises to learn in a very interactive way. Of course, again, reach out to us if you have any problems that you'd like our help with from the consulting side, and we'd be happy to discuss that with you. So with that, I'll finish things up, and thank you very much for joining this webinar.