Okay? So what we are going to do here is to look at some optimization tools and some kind of philosophy of what you can use inside of the class. So for the various assignments. So we give you a lot of freedom, right? So you can do whatever you want. You can, you know start coding everything in assembly if you want. You can code in ruby if you are interested in that. You, you, you can do whatever you want. You can even use, you know general purpose optimization tools if you want. And it may be a good idea in, in some of these assignments, okay? So you don't need to reinvent the wheel. You can if you want, okay? So once again this class is about giving you as much freedom as you can. Okay? So if you use a general optimization tools there will be a number of advantages. They are generally very, you know designed so that you can very quickly design these model. Okay? And get a quick solution. They are going to be generally, you know efficient in, in the kinds of, of technology that they are implementing. That doesn't mean that your model is going to run fast because your model may be terrible, okay? Or the problem is so hard that, you know no model is very good. Okay? But typically these tools include, you know years of, years of research. And, you know they spend a lot of time optimizing the algorithm that they're providing, okay? Now in, in, in, the disadvantage of using these tools is that you will have to learn them and sometimes learning them is not so easy, okay? there may be limitation of what they are allowing you to do and how you can extend them if you need to have, you know more capabilities. They are always slower than, you know a dedicated algorithm if you would spend just the same amount of energy to solve a particular problem. Okay? Now in practice that may not be cost effective, right? So you developing the same kind of quality as the system would take you much longer than just using them. But you, know you can also find a way to do better, okay? you know just recording some of these stuff and specialize in them for instance. Okay? but, but this is a trader that you need to deal with and then they may sometimes appear to do strange things. Most of the systems these days are using randomization. They may not even give you the same solution, you know if you run them twice in a raw. So and it's always they will do all kinds of transformations as well. So it may be that you have a good formulation or bad formulation you won't see a difference because this system are clever enough to actually reformulate the problem. They recognize that, you know you had a bad molar and they can reformulate it. So these things, you know there are a lot of things that you need to take into account when you use various tools. Okay? So the type of tools that you can use are CP solvers, MIP solvers, Roco solvers. There are many of them. Okay? So one of the things that in this class we won't do is recommend a particular, you know set of tools. We give you a list. You can choose from that list for instance. There are other solvers that are not mentioned int he list. We are not trying to be exhaustive.Okay. Some of them are open source. You can use them, you know you can use them, look at the code if you want. Some of them are free for non-commercial use. Okay. Some of them are free for students. Okay? So, so once again, you know for some of them you will need an account in a university to be able to solve them. Okay? So you have to find the right tools for the right circumstances in which you are working on, working on. But there are a lot of tools that are available and you have to take them into account. Okay? So so, let, let, you know let, let me give you an example of the kind of stuff that you, you want to see. You, you may want to try out and, and then you will want to see the soluable supporting things like this. So this is a very, you know the Queens example that we saw many times. And you have a lot of these binary constraints, inequalities, dis-equalities between the various the various variables. Okay? You may say ooh, but this is like all different so I can read. We formulate as a set of different constraints. And maybe you know your system is going to support these two formulations or maybe not. Okay? So but, but you may try these two models and see how they behave. Okay? So in a sense if your solver, you know if your solver doesn't support this. Okay? Then you may decide to recode, you know all different yourself. This is what I mentioned there. Or you can say, you can look for a CP solver which is actually, you know supporting all different, most of the CP solvers these days would. Okay? so so let me give you an example of the second option here. So this is, you know the N-Queens problem in the Comet programming languages and system, okay? So this is the first model, it's very close to the kinds of models that we have used inside the slides, so you can stick that model that way. If you want to change it to the old different formulation you just remove these constraints and replace them by those and you can test these two models. Okay? So what this is showing you is a different, you know different, you know different tools with actually a different functionalists but they will allow you to very rapidly prototype different types of solutions. Okay? so when you see the little box, okay? Most of the assignments they are typically implemented using dedicated algorithms, they are not using you know black box solvers in general. but you know that doesn't mean that, you know you can get close to the solution using, you know general purpose solvers in general, you can. Okay? we don't recommend any solver technology in the class as I told you before. Okay? So we don't, you know we, so one of the, one of the things that this class is trying to communicate to you is that different problems will be amenable to different types of solutions. And some of them may be more appropriate for different kinds of problems, okay? So, so you can try all the various technology and all the various solvers that you want. And all the different techniques. Or you can implement all the various techniques on every one of the problems. Okay? we want, when, when the class is running, we want basically to answer, you know specific questions on all the solvers. At first we don't know them all, okay? And then, you know this is something that for you actually to figure out, okay? I've used the insider forum and so on you can ask question you can get reccomendation from your friends and so on and that's completely fine. Just don't except us to actually answer questions on dedicated solvers and what they do and why do they certain things and so on. Because that would kind of a exponentially many variables to optimize with many constraints, okay? So thank you very much.