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.