 This is Jason Porter with the Red Hat developers program here with Jeffrey Smith. Yes, yes. Very good. All right and Jeffrey works on OptiPlaner and kind of all things, well maybe not all things, but things related to BPM and business process. Yes. Very good. Now for those that may not be familiar, what exactly is OptiPlaner and how do I go about using it? OptiPlaner is a constrained solver. So you basically have a number of goals you want to you want to reach, like for example reduce your costs, have a better, have a lower impact on the environment, have better employee retention, have more, have a better service quality, right. And what you're doing is for example you're delivering items across the country, right, or you're assigning shifts to employees, or you're somehow planning your organization. Now if you have one of those planning problems, you have a number of resources to do that, such as the vehicles, or the buildings, or the rooms, or your employees, right. And those have a limited amount of time and you also have a limited amount of budget. You cannot keep buying vehicles, keep hiring employees. So with those limited amount of resources you want to do that plan as efficiently as possible. But the problem is you have a number of constraints. Constraints are things like a person can only work eight hours a day. So when you put the driver into a vehicle and a vehicle starts driving around the country, he needs to be back at the depot after about eight hours, right. So and this impacts in which order you can visit locations, you know how many items you can drip off, and the more efficiently you do that, the less, the more visit locations you can visit, or the less time you need, or usually the less time you need to drive on the road. So the more you can invest in actually doing something useful, like for example if you're installing cable, you could spend more time at your customers, or you could do the same job with less employees. So it depends of course what you do with the games, right. Okay, very good. Now one of the things that I've got a question, maybe others do as well. Where does OptiPlaner play in with drills? Does it use drills? Does drills use OptiPlaner? What's that relationship? Yeah. So in OptiPlaner you need to define your constraints. For example, you need to say if there is too much, if you're driving nine hours instead of eight, then we want to enforce a penalty, right. And there's different types of penalties. But anyway, when you want to implement that, you have three options. And one of them is drills. So and that that's the best one. Let me explain the other one. The other two are, so the first one is just plain easy Java. The problem with that is that it's from scratch calculation. So if you have a big plan and one little thing moves, it recalculates the entire plan from scratch. This is a huge scalability problem. Right. So basically, if you have a data set of n elements, right, you have 1000 variables, 10,000 variables, you the gain on that is just is usually the number of variables divided by two, if you're not doing that. So easy Java is not really useful for production. It's easy, but it's not all that great. Yeah. Yeah. Okay. So the other one is incremental Java, which is, well, it is the fastest, but it is basically a writing assembly. You have to write your own deltas incremental calculation. It's pretty much insane. And then the third option is drills, which is very very close to that incremental Java, where you write your constraints as drills rules. And the nice thing is they're nicely isolated. So you have one constraint that says, okay, don't go over that limit of eight hours, you have another constraint, which has this particular visit needs to be delivered by a vehicle which has, which is bigger, or has more armament or something like that. Right. And so forth. And so those rules are nicely isolated. And the big thing is, of course, they're also incremental. So but you don't have to write it, you, you don't have to write that, that part may code of updating indexes and maps and all that kind of stuff. Yeah, I can use a drill and all of its UI and whatnot to build things. All right, very good. Very good. Now, where, where do I go to to get started using up the planner? You just go to up the planner.org. There's two buttons on there. The green one is to download it. And then you can just run the examples on your machine and then play with them. And the other one is a blue button that's going to the documentation. So you can start reading. The documentation is pretty big. But there's also another link I would like to point out. That's if you click on the learn thing, there is use cases lists. And in that use cases list, you can see three use cases explained in detail, such as the vehicle routing problem or the employee rostering problem. And there's also a video about very other use cases. So every example that we have has a video. So for example, there's a video on on assigning hospital beds in the hospital. There's one about investment portfolio optimization. So you can choose stocks better that they given an amount of money that they are that you reduce your risk, basically. And there's many more, right? A task assignment is also very nice for where you are signing tasks to employees based on skills and affinities and so forth. So yeah, we have we have like 17 examples now. I can't go through all very good. Now on the on the product side, I believe optiplanner is part of the BPM suite. Is that right? Yes, it's so it's part of BRMS and BPM. Oh, it's both. Yeah. So everything that's been BRMS is also part of BPM suite. But BPM suite is a little bit more expensive than BRMS, of course, right? Right. So if you if you have a drills, a BRMS subscription, you get the drills rule engine and you get opto planner. If you have a BPM suite subscription, you get those two drills and opto planner and Jbpm on top of that. Very good. Very good. Now what what do you find most interesting about being in this in this planning space? I think it's fun. You you you you. Well, the most interesting part is definitely you see a problem, you optimize it. Given some or human planner optimizes, you get an optimization, you see a schedule, and you think, this looks pretty optimal. This this look looks optimal. I can, for example, there's an how to go to a number of locations, right with the vehicle routing problem, right? And you change one location, you change one order, or you start changing things. And you see, you cannot find a better solution. You cannot find a solution, which given the hard constraints that's that you have to do it within eight hours per trip. And and get you cannot find one that that's shorter, that does it in less time, right? But if you then give it to more and better algorithms, right, turns out there are will find something. Yeah. So and if everybody you can be in a room with managers and human experts and everybody and everybody can agree it's optimal. But it's like the whole room is colorblind, right? Because, yeah, if you do have the calculations, you can get there. Yeah. Now, if I've got a problem that I put into opto planner, is it something that I just know I hit the go button and let it run forever until it's complete? Or do I say I've only got half an hour to run this, I'm going to run it for half hour, see what happens? Yeah. So you can specify your time upfront, because it will actually keep running, it will start trying to improve, keep improving it. Usually, if you want, unless you try one that's exhaustive, where you try all the combinations or subset of all the combinations that might lead to the optimal solution. But those, once you start scaling out, takes millions and millions of years. So you're not going to wait that amount of time, right? So what you do instead is you just start it. And if you have five minutes, you're in five minutes, if you have 30 seconds, you're in for 30 seconds. If you have an entire night, why not? Right? What you do see is the first few seconds, it can easily find better and better solutions. As the time goes by, the there's a law of diminishing returns. So the first few seconds, you see that score going up 10%. In the end, it's an hour to go up even half a percent or something. I got it. Now, does it cash those results? So say I've got 30 seconds right now that I want to run it, and then maybe tomorrow I've got another two minutes I can run it. Can I pick back up from where I left off? Yeah. And you can even change the problem meanwhile. So you can do warm starts. But so for example, you've calculated for eight hours, you have your optimal schedule, right? Or near optimal schedule, right? And you're going to put that in production. And just before that trick is about to go out the door, there's a customer who calls and says, can you pick up something for me too? Oh, right. So then we've got to add that in there. Okay. And it warm starts on the previous solution. And it doesn't have to restart from scratch, right? So it's faster. Oh, very good. Very good. And again, if you're interested in getting started with OptiPlaner, that's OptiPlaner.org. Correct. Yes, very good. With an AI OptiPlaner. All right, very good. That'll do it for us today. Thanks for being with us, Jeffrey. Thanks. Take care.