 Hi guys, welcome to another OptaPlaner video. In this one, I'm going to show you how a conference organizer can use OptaPlaner to schedule his or her conference, right? So this was actually used by Davos Belgium, Red Hat Summit, and Vox Zürich. So here's, you can actually see the schedule of Vox Zürich, which is coming up in March. And what you can see there is that what OptaPlan actually did is for each of these talks that you see here, decided which room and which time slot it should be, based on a number of constraints, such as speaker availability, conflicts between two talks that are handling the same topic or in the same track and should not be scheduled at the same time, and things like that, right? So let's see how we can quickly get this schedule with OptaPlaner by using the REST API integration. So the first thing we do is we go to OptaPlaner itself, so the OptaPlaner org itself. You can actually just go to the URL, OptaPlaner.org, and then you click on the big green button here to download the zip file. And I'm just going to skip that for you, but once you've downloaded the zip file, you'll actually get to, and you unzip it, this is what you'll see, right? So this is the zip distribution. If you open examples there, you can just click on run examples as age, and I'm just going to run that now. You need Java, of course, and when that starts up, you'll get to see this basically, right? So this is the OptaPlaner examples UI, and of course, we're only interested in the conferencing example, because that's the one you actually use to scale these conferences. So I'm going to go ahead and open that one. Okay, yeah, here it goes. Here, you can see a number of things. On the left, we have some data sets as examples, which is great if you're not a conference organizer of Davox, of work Zurich, because you can use those as inspiration and start from those. However, in the latter case, in the Davox Zurich case, you can simply import from the CFP, so you don't have to input the speaker names and talks and so forth yourself, which is much, much faster. So as you can see here, it asks us for the CFP REST URL, right? So how do we find out the CFP REST URL? Well, let's take a look. So this is the, here over here, we have the call for papers app for Vox Zurich, right? So this is actually the start of the URL. And if we then simply take this URL and we attach API.conferences behind it, right? So we get this URL and we call for that. This is the request that we got, so we'll just refresh it. You'll see this is the response that I get. And from here, we can actually know the name of our conference. So this is actually 19 edition, so we'll just take this URL, going to copy that, and we're going to put that into the URL here. Okay, let me just paste that in there. I'm going to show you also what it does in the terminal, just so you can see what it's doing. I'm gonna click okay. As you can see, it's now importing from that. So instead of typing all those speakers, I now get them, right? So let's take a look at that. So let's take a look at what it's currently loaded in memory of this application, right? So this is actually what it loaded. And you can see we have all the time slots here. We have the rooms here. So make sure before you do this, you have to find your time slots correctly in a DevFox CFP app as well as your rooms, or this will not show up as well. We have these, you can see some rooms are unavailable at certain times. We have the speakers here, right? Do note, so do note that here, you can also fill in speaker availability. Like for example, this person might not be available on Tuesday morning, but that's not available in this DevFox CFP app. So if you wanna add that, you'll have to add that in a minute, manually yourself, right? So you can just simply copy paste, for example, the cell, right? And you can just say, okay, this particular person is now unavailable before noon, right? Because the speaker is not available then, right? You'll have to save that and reopen that file, of course. So I'm just going to ignore this for now. And then we have the talks. You can see all the talks here. You can see we have the speakers in there. We have the team tracks. So we have all information there already. And of course, we can start editing things if we want to have specific extra constraints on top of the basic ones, right? I'll just leave that for now. And I'm just going to ignore these changes. I'll just solve it. So you can see once we're solving it, we can run it as long as we want. But the longer we run it, the better score we have. And the score is actually what you see here at the bottom. It means how many constraints that we're breaking. And you can see we are not breaking any hard constraints. It means that we're not expecting a speaker to be at two places at the same time. We also make sure that every speaker has 30 minutes between any two talks. And we also make sure that if a speaker isn't available, that he's not having any talks at that specific time. Okay, I think it's stabilized. Let's take a look at what we get. We reopen it. This is a good time to save it probably. Here at the bottom, we have a whole bunch of yellow tabs. The last one is probably the most interesting one. That gives you a nice view per day on how it, who's scheduling when, right? Who's scheduled when? You see now we haven't actually put it any other extra constraints. So it might be a little bit different than what we saw in the original schedule. Although it ends up pretty the same. Okay, that's interesting. At least for my talk. So what can we now do? How can we customize this? Let's say, okay, this is a good schedule, but some speakers, they attract more people than other speakers and we want them to be in the bigger room, right? So we can actually accommodate for that. So if you actually go into the, oh, that's not, if you actually go into the talks, right? So one of the things we can do is we can, for example, write down that, let's say this particular speaker, let's pick Mario for now. This, he should be in a big room. So we're going to say, okay, he needs a big room. So we're going to create a room tag here, a big room. All right, all right. And then of course we're going to go to the rooms and we're going to make sure that we mark which rooms are big. And so apparently this one is big. So we can just say big room here, all right. Now that's one way of doing it. But another way of doing it is actually just saying, okay, there's actually constraint. If you just say how many Twitter followers every talk, the speakers of every talk have, I know how many favorite votes the talk has, which is in here, you can also do it that way. If you fill it in here, they will also try to put those into a bigger room. And then you don't even have to do tags on the rooms. So similarly you can do tags on the time slots. You can say, okay, this one is prime time, prime time. All right, so this particular time slot is prime time. Let's say these really just do ones and the ones just before lunch are prime time. And if you wanna do that, you can then go to the speakers and say, okay, Aaron Gupta of course, we want him to speak at prime time, right? So that's a required time slot tag. Or you could make it a preferred one. If you say we'd like to have that happen, but we don't require it. And of course, when you then need to do is you need to save this preferably in the same directory. And then you need to open it from the application to make sure that those constraints are loaded in. So that's basically it. That's how simple it is. So if you wanna get started, simply go to autoplanet.org and click the green button. Thank you for listening.