Transcript for:
Mathematical Optimization Lecture

hello everyone and Welcome to our first session of the day where we answer the question why math optimization and also we're going to take a look at a couple other questions you know uh what is mathematical optimization and how can I identify potential applications so on to the big pressing question so to take a look at why mathematical optimization is a extremely useful tool uh let's first look at what industries and business problems athematic optimization is used so who uses it and what problems does it solve next we're going to look at Predictive Analytics versus prescriptive analytics so what questions does mathematical optimization answer specifically and how does this differ from machine learning then we'll see okay after we compared them a little bit and said this is what they do differently uh uh and kind of what they do similarly uh we're then going to look at machine learning and mathematical optimization and say that hey yeah they can coexist so how can these approaches work together then we're going to go through a quick tour of mathematical optimization so how can I translate a decision problem to an optimization model and what are the key building blocks to do so let's take a look at industries that commonly use mathematical optimization and a uh look at a few of the examples of the business problems that are solved there so uh supply chain analytics is a essentially it's a bread and butter application of of optimization modeling uh where am I opening my next location for my facilities uh how am I routing trucks um where am I putting inventory to make sure that demand is met timely those are common supply chain questions and those questions questions and problems are solved with mathematical optimization uh very frequently uh related to supply chain uh is manufacturing so production planning scheduling workforce planning again uh s of bread and butter uh very common Mach uh mathematical optimization uh applications and the problems that they solve there Airlines for Crew Scheduling and uh flights to aircraft assignment energy is another uh is is an area in which um there's been some a little bit more emerging uh applications uh your typical sort of I guess classical supply and demand making sure that you have enough uh energy um to meet demand is is um it has been happening for a while and it's a it's a classic uh application of optimization but things like um resource planning to meet CO2 emission targets that's a that's a newer problem and that's a difficult problem um to solve and mathematical optimization is is at the Forefront of making sure that that those targets are being met Finance uh is a is another area in which mathematical optimization is is is growing and expanding a little bit um you may think of portfolio optimization as something that could be pretty simple and straightforward like hey I want to buy stocks or I want to sell them if I think a price is going to go up I should probably buy if it's going to go down I should probably sell very simple decision there but when you think about for all the stocks that exist for all the customers you may have it becomes a very complicated problem to make sure that your uh portfolios are are optimized and lastly um sales and marketing so doing things like uh campaign optimization and even allocating sales territory is something that is uh that can be done and typically is done uh with mathematical optimization so uh we looked at so we just talked about some of the industries and business problems but you may be thinking all right well all right give me some give me some names here I I really want to know who uses who uses this technology and and uh what are they getting out of it well uh here's a set of uh customers that we at Kobi have um so we have uh you know companies like Google and Microsoft um the NFL which I'll highlight in a second uh their their application um Starbucks um HP you know Co and and these are companies that are sort of all over the place in terms of what they provide um to their customers um and this is just you know as you see at the bottom this is just a small sample of of of the 2600 plus companies uh that use grobi specifically and again this is just sort of our set and if you want to think of mathematical optimization more broadly you know there are a bunch a lot of other companies that use optimization but maybe not just groy at this point but uh so it's used by everyone um for the most part so uh what problems does it solve uh let's look specifically at the NFL's case um again in the previous slide I talked about how scheduling is a common application of uh mathematical optimization well the the National Football League uses uh grobi as the engine to solve their the what could be one of the hardest Pro hardest scheduling problems that may just exist in in in business today uh is you know uh creating the NFL schedule if you think about how complicated this problem can be there are you know you have your 32 teams playing over now uh 18 weeks um 17 games uh you're looking at different locations not just home and away but games that are being played overseas uh in Europe or in Mexico and and also looking into um uh broadcast rights considering that and trying to make sure that you're getting the most eyes um on on uh the best matchups that's a extremely difficult problem and the uh the NFL uses goobi to to help solve that problem but um a couple other applications um that we have uh on our website um so check out um check out our resources um at gy.com which I'll be don't worry I'll be plugging that uh every so often so make sure that that that you'll get there um but uh optimizing uh sort of scarce resour water resources and um subscription box service optimization are just again a couple uh of the use cases that we have that you can take a look at and again just small examples um or small set of examples uh uh that mathematical optimization um is used for so now that we took a uh quick look at some of the industries that use mathematical optimization and the business problems that they solve let's take a look at uh Predictive Analytics versus prescriptive um these are some terms that you may be familiar with and you also may be familiar with the visualization that similar to what you see here where you have a measure of um and I'm going to air quote um complexity here uh uh on the horizontal axis um with the value it can bring to business on the vertical axis and what we did here was we highlighted uh the typical data science workflow in blue so things like descriptive analytics moving on to diagnostic moving up to the uh which is typically the culminating part of a data science project Predictive Analytics so answering the question of what do we think will happen next um that's all part of the typical machine learning uh process flow typical data science workflow um but what you see on the the vertical axis is planning and executing and that's something that Predictive Analytics just doesn't really do all that well it doesn't give you the action doesn't decide what you should be doing uh with uh with the information that it it's presenting you um it's not really super well suited for that uh type of question and that's where prescriptive analytics comes in you know you may know what the the future may hold but even even if you have in in some questions some problems even if you have perfect information just the the the sheer sort of number of possibilities that you're encountering for some of these problems is so large that again with even perfect information you're not going to be able to make the optimal decisions so that's where a a rigorous tool like mathematical optimization comes into play so um that's uh what prescriptive analytics really tells you is what course of action should I be taking what decisions should I be making in order to best sort of plan and execute for the future and again that's something that that machine learning really doesn't do well um again it'll tell you what can happen next but not what to do and um one thing that I that that I want to highlight about this visualization and ones that are similar is that you don't necessarily need to be uh an expert in Predictive Analytics to move up to prescriptive it's not necessarily a a a Pure Flow of I need to go from descriptive to diagnostic to pres to predictive excuse me all the way up to prescriptive and and that's the only time where I can get there uh you can start the the prescriptive analytics process at any time more or less and that essentially what happens or essentially what you're looking or what's going to happen is when you're when you uh mature you know in in the the sort of the data science aspect of the things in blue your ma your mathematical optimization model is only going to get better but you can build the foundations of an optimization model um at any point they again they uh data science tools machine learning and you know uh uh is a very complimentary tool to mathematical optimization so um moving in the next slide I will talk a little bit more about understanding when mathematical optimization is the right tool so let's hop over to there now so after comparing and contrasting uh you know Predictive Analytics with prescriptive uh you may be thinking okay well since they do sort of un uh answer uh different questions more or less um when is mathematical optimization the right tool well to answer that question let's start with another question uh what is mathematical optimization so let's define sort of the characteristics that you're looking for to identify a mathematical optimization problem so uh mathematical optimization it's it's an approach to solving complex sort of decision problems where you have a few things one is you're trying to find the best course of action among many possibilities and what what many is uh we'll Define that a little bit later but it is a lot um and there are things that the decision maker can set so you actually have control over some of these things it's not just random you know um you can set the price of something you can build a a a facility you can um you know manufacture uh a products you you can these are things that you actually have control over but you have limit ations you can't buy all of the ad ad space that you want um you have budgets things like that you have limitations to your actual uh to your actual decision problem but you have a particular objective in mind so you want to do something like minimize costs or maximize Revenue um but it doesn't have to be something always like that you you know we talked a lot about scheduling earlier on maybe your objective is to create uh a very balanced schedule so um how do you take like a decision problem that has these characteristics and then translate that into an optimization model well you do that with uh algebraic notation and this is what we call um writing a formulation of a of an optimization model so we see some color coding here so let's look at you know the things on the left and how they relate to the formulation on the right so the things that the decision maker set those we call decision variables and these come with a couple different types um we have first what we call a continuous decision variable so it's setting you know an example of it is setting the price of produce um comparing that to an integer decision variable where we're talking about like maybe manufacturing cars uh if your optimal solution is to manufacture 127 and a half cars that half is kind of a big deal so you know there are certain problems in which having integer Solutions is is very important so uh that's something that you can specify for these problems and then uh lastly we have what we call a binary decision variable which helps you understand Alternatives so yes no am I going to build a particular Warehouse in a particular location uh after that um we have our specific limitations which we call constraints in an optimization model so again things like budget um are are common are common constraints you can't U for like a a a workforce planning model you have to think about um uh limitations on the number of days that people can work number of hours that people can work and things like that but uh so the particular objective that is what we call an objective function um and again that's something that you're trying to maximize or minimize so once you have all this together in a nice cool little formulation uh this is where uh grobi comes in because we haven't actually said anything about the optimal solution yet we've just been uh creating creating the formulation of our decision problems we've been translating it from words and text to uh math and algebra uh into symbols groy comes in to actually do the solving so it takes your formulation that is coded up in some like python or C Java R whatever it may be and actually provides the optimal solution so again what grob is actually doing is it's the Special Sauce of of uh finding the actual optimal solution so we talked about um a few different you know uh types of decision variables and things like that um so mathematical optimization isn't just like one type of problem it's has a couple couple classific ifications um so let's sort of go through the common ones um and while we're looking at um our our sort of General formulation that we have from the previous slide so there are a lot of options actually for uh you know types of mathematical optimization problems or or formulations I should say um the first is what we call a linear program and that is a mathematical optimization model that has a linear objective so you're not multiplying decision variables together has linear constraints and the decision variables are continuous next we have an integer linear program and I put linear in Brackets because sometimes you don't say that you don't always say it people will sometimes say just integer program but that has the same uh number one and two from above so linear objective linear constraints but as you can guess from the name is that uh the the decision variables are integer or binary so specifically sort of what that what that may look like is your decision variables X instead of being you know between you know two numbers they may be you know your binary decision variables are zero and one and here's uh our first little bit of math notation that symbol that's comes after the X um that stands for an element of but in our case it's really just read as just the word in um and the curly brackets Define a sets and the things that are in the curly brackets Define the elements of such set so um lastly or not lastly but next we have a mixed integer linear program um or just mixed integer program or MIP for short and it has the same one as two as in an LP so linear objective linear constraints but the decision variables are can be part continuous so you can have a set of decision variables that are continuous in another part another set of decision variables that are integer or binary and this is more or less the most common form of mathematical optimization model that that you see sort of out in industry and out um out in the wild um and this is what we're going to be talking about um we're going to start with a linear program um but then we are going to work our way up to mixed integer actually pretty quickly there are other things like quadratic programs QPS um qcp stands for quadratically constrained so you're um constraints have some quadratic terms um and the Mi is mixed integer so you can sort of see how this all sort of comes together to talk about a bunch of different types of problems um there are also things about convex problems non-convex problems um and things that have to do with uncertainty like stochastic programming and and there's a whole bunch of thing you know I can go down a huge rabbit hole but um you know we're going to stay um with sort of what we have described uh so far um and um I guess to relate to what we talked about before um or what I'm going to talk about in a little bit is we're actually going to I'm actually going to describe a quadratic program um in the next slide so we talked about machine learning and the questions that it kind of answers and then mathematical optimization it answers different sets of questions um you know let's let's talk about predictions versus uh actions and and and decisions how can these things work together well the most common way and let's look at um our generic our general um linear programming formulation is to estimate the parameters of these ma of of a mathematical optimization problem and and a parameter of a mathematical optimization problem is different than a parameter of a machine learning model so keep that in mind um but those values the C Vector a matrix B Vector those are just numbers those are things that can be estimated using data that that you have and and machine learning models to to come up with with forecast so maybe B represents a demand C represents a cost use machine learning to to understand those values better but that's not the only way that that these two things can coexist if you think about what machine learning is at its core it is an optimization problem you're minimizing a loss function whether you're maximizing accuracy you're still there's still a loss function that you're pushing down as much as you can or you're minimizing uh error in like a regression problem but not that's typically done in an unconstrained fashion but it's not always like that um so constrained regression and feature selection those are some ways that that mathematical optimization can actually be used as a machine learning as an approach for a machine learning model so if you're familiar with lasso regression um that is essentially a uh a a form of regression where you put a constraint on the uh on the parameters that you're estimating and if you're not familiar with it um it uses the L1 Norm which is the absolute value and essentially um puts puts a constraint on the sum of the sum of the absolute values of your the parameters that you're estimating in a regression model um thinking about the l0o Norm l0o Norm is the number of nonzero elements that you have in a vector or a set of numbers so when you think about that it's that's feature selection because if your the if your regression parameter that you're estimating is zero then you're not selecting that feature if it is non zero then you are so um using the l0o norm with with regression um in a constrainted regression model then that's essentially saying I want a certain number of features um and then lastly I S of talk about the L Infinity Norm that is the maximum uh that's the max magnitude of of a set of numbers or a vectors so take the absolute value whichever number is highest that's your L Infinity norm and that ties into constraint regression because if you wanted to do something like um uh minimize the the largest um uh parameter value in a regression model that would be minimizing the L Infinity Norm so that's another form of constrainted regression uh and then another uh um uh approach in machine learning that can be done with mathematical optimization is is creating an optimal decision tree and there's a lot of literature and papers that are on that so um that's something that I think would be could be interesting to to look into um if you if if you're interested in that so all right that's how that's how these approaches work together but how can you actually you know how how do you make this happen happen um how do you get machine learning and mathematical optimization to work together sort of in your workplace on your team in your company uh and essentially there's a couple ways to do that number one is see if there is a group of people that already do optimization L that already know mathematical optimization and if there is and there very well could be share information on projects to see if there's potential collaboration you know if you know we talked about you know so five things you're looking for for a decision problem that maybe that may make you think it's a that mathematical optimization is the right tool well let's you know let's you know see if if you have those things in in in your problem and if you do then maybe you can consult with this group in within your company to to sort of uh to work together to help solve that problem and then you know you can always just add mathematical optimization to your skill set so make it part of what you do um and um hopefully that's what this training will will help you uh on on your journey and if you're you know once you get a better understanding and more comfortability and uh and you understand how to how to sort of formulate and and solve mathematical optimization models you can build proof of concept uh models to help show the value of mathematical optimization uh within your organization so now let's take a look at our decision problem and uh this decision problem is going to be the basis of of our uh Hands-On notebook example that's coming up in a little bit so uh pay attention um let's say that you work for a company that makes and distributes widgets I like the term widgets it's fun to say so that's what we're going to make and produce in this example um they're produced in factories and shipped to distribution centers your job uh as a data scientist is to uh create a machine learning model that that forecasts um widget Demand by Distribution Center so we see uh on the map that just popped up the blue dots have a factory in them uh those are our um production facilities the orange dots have a truck in them and they are distribution centers so the company wants to reduce costs for transporting widgets from production facilities to distribution centers additionally each facility has a minimum that it needs to produce because it's up and running um we want to make sure that that um that it's still being used but also has a maximum that it can produce so it needs to somewhere lie somewhere in between there and then each distribution location uh needs to be able to uh satisfy local demand so we need to make sure that we're shipping enough widgets from the uh production facilities to each of the demand uh locations or you see distribution locations to meet demand so from what I just talked about here you know how does this fit uh into the criteria for a mathematical optimization problem hopefully a few things sort of rung a bell while we were going while I was describing this this problem so what we're going to do now is we're going to look at how to translate this decision problem um into what we call a mathematical formulation and then also we're going to start getting our first glimpses into uh grobi Pi which is grob's uh python uh package that helps you know sort of really streamline this process so what we have on the on the the top left here um is we have the actual sort of mathematical formulation for for our problem and it may look like whoa I I see a bunch of uh sigmas and inequalities and things that okay what's going on here don't we're going to go over each of these things sort of bit by bit and um so our goal here is to translate the decision problem to a mathematical formulation and and then also while we're doing that understand the corresponding groy Pi code for each of the pieces that that are highlighted above so um what we see on the top right is essentially you know your first couple lines of any um optimization problem done in groy you know import groy Pi is GP and then from groy PI import grb um and uh what I want to highlight here is that this is actually something you know these little cards that we're going to use to help illustrate this we have a a a mathematical formulation card and a gry pip representation uh we have um actual um PDFs that you can print out if you want to sort of play a little matching game uh on your own so let's start translating and um so what we're going to do is we're going to sort of start popping up bits of of the cards um and and that they're going to represent parts of the formulation and they're also going to represent the corresponding part of groy pie code and then we're going to highlight what part of the math model that that represents so to start off any problem you need to sort of understand that hey we need a model um and in grow we probably need to say all right let's define a model object and that's going to sort of represent everything when everything's said and done but um at this point it's just when you when you use you know the gp. model and you and you store that um as as an object it's just it is just an empty thing we need to add all of these pieces and that's what we're going to start doing um so in grobi pi you know the decision variables constraints objectives all the things we talked about are always associated with a particular model object so we've just defined that we hey we we need a model okay great well what are the what are the parts of that that we need to start defining in order to to build this model well um I didn't read off the individual cities um for production sites and distribution locations but we have them so we have what we call a set of production sites and those consist of the elements of cities of Cleveland Baltimore Little Rock Birmingham and Charleston and then we also have our set of distribution locations which the elements of that set are Columbia Indianapolis Lexington Nashville Richmond and St Louis so we would put our the elements of our set of production sites and we can call that set p and then we would call set D the uh distrib the set of distribution sites which includes those cities and we can sort of see on the right um that the capital P represents the set the lowercase p represents the individual elements of that set and same thing for the capital and lowercase D um remember that symbol in between just means essentially the word in or uh or you can also read it as an element of or elements of um but in typically is the is the way to go and these are again what we call sets and subscripts of a an optimization model and they're important because it helps really uh Define it it helps with readability ility of the model understanding um what's you know what are you uh what are you representing um in your in your model in your system here that that that you're trying to algebraically represent um so it it it may seem like it's a little unnecessary to have this notation and to some extent that's kind of true but it really helps it it helps understanding this notation understanding these bits and pieces here really help uh will help you be able to understand and and sort of read other people's models or or read you know how people have formulated these types of problems because it's it's essentially a universal way of of of representing uh mathematical optimization problems in in an algebraic form so um so the sets and subscripts these things are typically what we have is lists and sets in in Python on and um grobyi has a specific uh thing what we call a tupo list um and we'll be providing links to what that really means so you can uh dive in a little bit more but um you can use lists you can use sets that that you're familiar with in Python but also at the same time that grobi Pi has its own sort of uh um own similar way of of looking at objects and sets so the next bit of of notation that you may be looking at is what is that upside down a all about well that is um essentially just a bit more notation saying it meaning that um you read that symbol AS just for all and essentially what that symbol represents is you can see in the uh grobie Pi um card that's next to the the big for all operator that's on the uh middle left part um it's it's essentially just a for Loop and saying for each element um in this set let's do something or let's define something um so again when you see that that uh that Operator just think of that as a for Loop so uh after that um we you know we're talking about how we uh have a machine learning model that estimates demand so we have a demand forecast for each Distribution Center um this is what we call data Co efficients or or um these values are also known as the parameters of a optimization model so don't get it that mixed up the use of parameters there mixed up with parameters of a machine learning model those are different things and again the the word parameter in machine learning and optimization and the word model in machine learning mean different things and uh that's something that ass's going to talk about in a little bit more detail down the uh uh down the road today but um the data coefficients these are things again that we can estimate with machine learning models although again if you're not a machine learning expert you don't have to use machine learning this could be sort of uh numbers that come from um subject matter experts or or maybe just simple averages or uh you know uh descriptive statistics that's perfectly fine um but again to make your model uh as as uh realistic as possible then machine learning could be the best way to do that but um your data coefficients those can be things that are stored in dictionaries um Panda series um don't use Panda data frames U make sure it's a series um but then also groy pyan has a couple of its own things you know um what we call a tuple dict and a multi- dict um those are dictionaries that have some other properties that are specific to groby piie that help you define uh that can help you really quickly Define um uh uh the data coefficients or parameters of a of an optimization model next let's translate the actual decisions that we want to make and what are what are we actually deciding here and we talked about it you know as mentioned earlier but uh what we want to decide is how many widgets each production facility should make and which distribution location it should Supply so um we're going to denote that by the variable X and I have that in a couple places um sort of in the in the uh General model that we have the the math model it's highlighted uh with the red back and then so again so that x uh decision variable uses the subscripts um P and D which are the elements of our uh of our sets capital P and capital D but um so to get a little bit more concrete of what that's actually saying it's that is for each element in the set so we do have a particular decision variable X sort of sub Cleveland Indianapolis and that is the amount of uh that's the number of widgets that are going to be produced and uh production facility Cleveland that will be then directly sent to Indianapolis and so that's what our decision variables look like and to add that to uh a grobi uh Pi model we use model do addvar for adding a single variable or ad vars if you want to add a set of variables at once so um what I want to really emphasize here because this is a a mistake that I still make um every so often is uh that's you know for decision variables and constraints there are those two different function calls for adding a single um element so adding a single variable or a single constraint which we'll talk about in a minute um or adding a group of them you know making sure that you have your Adar and adars properly uh written up that's important tip um and then also unless specified both in the formulation and in grobi pi um continuous and integer decision variables are assumed to be non- negative it's just a it's a natural uh part of the problem we've translated the decision variable in our decision problem so let's turn our attention to the constraints of of our problem so in the text and and how I described the problem verbally um we mentioned how each production facility has a minimum and Max maximum amount it can produce and each distribution location needs to be able to satisfy a certain local demand a certain amount of demand for widgets so those are our constraints and uh what they look like in the mathematical model is they look like a a sets of inequalities and they can also be equality as as as well um and we'll see um later on uh I'll describe how the in the bottom inequality could actually probably be an e equality if we wanted to and and for certain cases it wouldn't make much difference but um but we have our sets of of constraints which we're going to represent as inequalities and and to add those to our uh mathematical optimization model in grobi pi we just call the model and then add the dot uh add Co and St for a single constraint and Co and St strs for multiple constraints um this is a bit a little bit on the advanced side um but um sort of thinking down the road something to get have in the back of your head um the add constraint command or or function um can add any type of constraint we talked about linear I briefly mentioned quadratic we also have what we call General constraints which is again way down the road but um hopefully one day you'll you'll be able to mess with those they're really cool and make make modeling pretty easy um if you have uh a large spar Matrix um then using add L constraint L Co and St uh can be much faster in certain cases so you know a little food for thought and and even as you progress through uh through these problems and and past this course hopefully and you become a a real exceptional mathematical optimization modeler um these are some things that hopefully you can have in the back of your head as as hey I can always improve things by really taking advantage of a lot of um of groby pies functionality so um so I was talking about how uh we have inequalities here so an important part of translating the decision problem is to uh is to know specifically what type of constraint you have so is it uh less than or equal to is it greater than or equal to or is it a strict inequality um I mentioned how in this case you know in either Roar for the bottom constraint can work between um inequality and inequality that's not always the case sometimes it is very very very important to make sure you understand which type of inequality that you have uh or which type of constraint that you have in order to make sure that your model behaves properly uh so uh one tip and um something that always tricks newcomers a little bit um we're used to be able to write in a qualities in sort of a compact form where you have a center term and then two terms on the outside and it it's saying that you know and actually I had this written you know um in in the formulation before um that you have a you know set a variable that's between two numbers when it comes to actually coding it up in grobi pi uh you can't you you essentially need to break something like what you see here where you have one 1 is less than or equal to X + Y which is less than or equal to 2 you need to break that up into two constraints so x + y is greater than or equal to 1 then also X + Y is less than or equal to 2 into two separate constraints we have defined and translated the our decision variables defined and translated you know uh our constraints so let's look at the last uh major part of of our optimization model which is the objective function and it wasn't explicitly said what what the objective is but but we can infer uh what the objective really really could be so we we said that the company wants to reduce the transportation costs of shipping widgets well if you want to reduce the the transportation costs why not reduce them all the way by minimizing them so that is our objective function want to minimize the transportation cost and that is what that looks like in uh in the math formulation is highlighted on the right where we have a a cost parameter times our decision variable and we're adding all that up um and I'll talk more about the the symbols there in a second um but uh in groby pi it's just model set objective and then we fill in uh the parts there um so a couple things is that linear programs don't accept multiplication between decision variables I mentioned that earlier those are like quadratic or or non-convex problems um but we do groy does offer routines that that work with that you just need to understand what your problem is like so um if you do have that type of scenario you do need to make sure that you're setting parameters right if you don't you will get an error so the last part that I'd like to quickly mentioned is uh summations um we we saw them all over the place and that's what that capital Sigma is um and beneath that capital Sigma is in our case a p or a d and that represents the index that we're summing over um there's other other operations that we may be doing like multiplication or division of things of particularly parameter values uh with relation to to uh decision variables um that's the the summation is typically done done uh in groby pie with we call uh gp. quium um it is uh more or less the preferred way of of of doing it but it isn't the only way of su of summation um in grobi pi and there are other ways to go about it one that I listed here uh in in the tips um is is just another way to go about it and there are advantages in for for each method and we'll discuss those uh as we go so congratulations on making it through our our our first um our first video together um now we're going to be moving on to actually looking at our decision problem in much more detail um through a modeling and coding Hands-On exercises and uh so uh at this point um open up the Jupiter notebook if you've already downloaded it or click on the link uh for the collab notebook to open that up so uh yeah let's get started