[Applause] hi uh good afternoon my name is Bruno and as Ugo said before I'm manager at LTB labs and I'm going to present you here um a use case that we develop with a car rental company um I'm proposing first to start a bit about the context and the goals of this project then we're going to take a a small deep dive on our technical approach get some some Implement implementation details and and then um go to the key results as well uh since Galo at the stage for for optimization my my life will be
much more easier now than before just for for a quick context about about the problem itself it is a cental company that works mainly here in Portugal or at least in our um subject of of analysis it's just for the the Portuguese Market but in this situation the car companies is in the top 10 of of Europe and the world I guess location is is Portugal uh here they have 14 40 stations that are aggregated in pools like for example in Porto we might have a station that is next to the airport and also a
station that is uh downtown in in Portal uh they have 52 vehicle groups like The based on their size and characteristics and our key goal was to set the price and also the fleet rotation between stations and based on optimization as I as I mentioned before just a quick overview of what is happening before the project before the project uh this technical decision and operational decisions were not integrated with each other it was based on manual uh price changes and manual Fleet rotation the the price is imper ially uh defined based on their own rules
and rules that they craft manually based on some uh basic statistic analysis uh the price the fleet allocation and price were not integrated was two separate decisions and here we H to uh take a look at this and build a a a strategic model in this case what we call an analytic Revenue management PL platform that integrates both the fleet decision like changes in ch changing cars between different stations and also optimizing the price along the way like setting the the the price um the the the optimal the optimal set point for uh increasing revenue
and profit in the near future so the project itself aims to get a better uh predictive capability of on Rand get a dynamic and more granular pricing decision uh by Dynamic I mean doing this in the daily basis not not only when uh people people are around and can change the prices have a synchronization between the price and the fleet and the operation strategy and get a better coordination between um between um all the the the decisions that the company itself um wants to wants to make so and how did we do it first we
need to divide two separate worlds one is the monthly review so it's a more t iCal U tactical decisions that we need to make like what what will be the monthly Target and the price strategy for that particular month and then we move to the to the Daily operation and the daily decisions on The Daily decision what will be the the key focus of this presentation we want to change prices daily and and also change the fleet uh size of each of each station by by moving cars around and with a with a with a
goal of um setting setting the profitability in the highest point possible like take into consideration the revenue and also the cost of operational cost and also moving around cars between uh different stations so in in a more detailed way we we we divided this into three different streams the first one is on rent forecasting forecasting module what we have here we have to get a forecast an unconstrained forecast of the demand for a given um a given day based on uh a specific set of parameters what I mean with that okay when we think about
demand and um and offer we are focused on the demand part of of the problem like we want to get a forecast that uh can uh predict what will be the demand for a given pical group in a given station for a given day for a given duration based on a set of conditions that can be uh intrinsic or extrinsic of of in in in this case for the the given um car company then we have an optimization module that will use the that demand that we calculate before to understand on the offer part okay
what cars do I have available what what will be the best set of prices that I need to make in order to maximize the profit in the end of the day and then we have a repositioning model that I want to tell here because it's more operational and uh less less interesting to to present let's say focusing on on the on the on the forecasting module uh we average uh variables like comp price of the competition the current state of on rents like the rents that are have already on the on the wallet of the
company we also take into consideration uh intrisic factors like the number of available of of um of different cars that are available in the market and if there is any external event like Easter or Christmas that typically increase the the the demand of of the cars with the aim of getting a demand forecast for a given date a given a given um Vehicle Group for a given station then we use this as I said before for our optimization model just for for a quick context we know the price elasticity curve uh what but in the
end of the day this is very difficult to to to get and it changes all the time when the competition change prices or uh for example uh if there is an external event going on so for this uh for this curve we Leverage The forecasting module that I presented before that tries to uh somehow um instead of of trying to address the curve setting multiple points and make this from a continuous decision to a discrete decision okay we know based on their operation that not all prices are available they have like this price Lether okay
they might have a price per de of20 but there isn't any price that is 20.10 cents the next price step will be 22 or 25 EUR so the decision is discrete despite the the the price elasticity curve is continuous in that sense so we disc criticize the this continuous uh distribution into into at least 10 um discrete price points that the the the car can can have in a given time then we have another problem okay we are trying to address the demand for a given day but this is the reservation day and right now
I might have reservations for two or three weeks ahead so we need this ABT curve which is the advanced booking time okay that that tries to mimic and this is specific for each vehicle group product car or or even a station that tries to mimic the behavior of our our customers over time for example if I if I if I was eight weeks in advance so I expect to have an OCC an occupancy rate of for example 30% based on on my target so I'm expecting to have more 70% of of um of uh rtings
until uh the the the pickup date which is the date that that all the cars will be delivered to the customers so the the key idea here is to combine this curve with our Target that is provided by the forecasting module so here if I have for example an expected demand of 100 cars and right now I'm in the eight weeks in advance and the eight weeks and my occupany my occupancy Target is 30% I expect to have if I have if I have um for example 50 cars I expect to have more 7 %
based on those 50 carve that I have right now so I'm a little above the Target or below the target for a given day and based on this two um two two decisions or two or two factors uh we want to make two decisions and the two decisions uh is quite simple car transfers between stations and price optimization for example I have here an uh station station a to station f for example on station a I will need more 153 cars based on the current Pro projection of of U of um of on rents but
on station F I'll be I will have a very a huge lack of cars if I keep going this way so I can make two decision here I can transfer car from station F to station a without changing prices or I can increase the price of station a and decrease the price of station f to rebalance my my my model and the key idea is not to doing one or or the other but doing both at the same time and optimizing the profit in the end of the day so we have two different decisions we
have one objective function which is maximizing The Profit Revenue minus costs and and this is not a simple problem because in the end of the day we have a lot of constraints to to have here first we have targets that we need to meet in in each at each station we have a minimum and maximum price that we need to comply with this is operational restrictions we have the relations between prices we cannot have a a price that is higher for a more premium car for a less premium car so we need uh to to
maintain these price leers we have a minimum and maximum um Fleet at each station because the stations have their sizes so despite the airport station is very is very attractive We cannot put all the cars there we need to get this balance done we have also the operational capacity and we have cost of repositioning Vehicles so we need to take everything into consideration one thing that makes this problem not daily dependent is is actually the dependence that we have between days every time that we have a reservation we might have a reservation of one or
two days or one or two weeks and that will be different uh regarding the availability of cars at each point in time so we need to take everything into consideration uh that's why for example for this day two we need to take into consideration uh the the third line and also the almost the last line where we have a length of 30 days but it was that that specific um the specific rent will only happen will only start on day two so taking everything into consideration uh I have here some some um print screens of
of the model that that we use if you want to to to catch further um information I'll provide it to you I I'll be here and you can you can address me all the questions um first objective function as I said before our key goal is to um is tox maximizing the expected profit take into consideration not only the operational cost but also the the repositioning cost between pools and between stations then we have a lot of constraints like one price step per per vcle group we have fleit constraints like the total Fleet size the
minimum Fleet size of of each station of each pool and the transfers we have the the the mask the maximum transfer between stations as between pools because there is some limitation in terms of of op operational capacities we have the the price order and the daily operational capacity also also is something that take into consideration in the end of the day so this is somehow uh the problem that we address it let me just take take take some notes about the implementation details uh to uh to put everything in order we use uh G Obby
as as the the main inine for our optimization module we also use uh pulp as the open library to craft this model one thing that I want to notice is that this specific mod this specific um this specific optimization model was crafted specific for for this problem because the the constraints and and the objective function only works uh based on this on this specific on the specific problems and these specific circumstances uh we also use kubernets and automated triggers to set everything and to really um fed uh this car company with with the price decision
and and Fleet recommendation Fleet movement recommendations for for the future because uh the the problem is is really large we need to take this problem into into chunks uh and we use a methodology a famous methodology that is relax and fix to do this so we we optimize this in a rolling Windows just to uh minimize the number of variables that we are considering and also uh take take take a model uh take small small models that uh the the server that we are using is able to uh to get a true answer otherwise it
will be difficult for us to to put everything into place due to the number of variables that we have the calculation is very simple if you multiply uh the 10 price steps by 40 stations by 52 price groups uh by 10 steps by X numbers of of of on rent duration will end up with more than 1 million 1 million one 1,000 sorry 100,000 um um variables that that is too much to to to run at uh every time so the key results uh we potentially generate more than 1.5 million prices per day uh one
thing that I want to to to highlight here is that we are more controlled between the Tactical level and the operational level we have more um faster and semi automatic reaction to the prices and how is the current uh on rent occupancy at each time the current projection based on on the testing pilot that we do uh points to from two to eight uh percent of Revenue increase which is a lot in this in this type of of um of projects and in this type of of companies as well and and so we change at
least uh try to change the parading of of the team that is behind this this project as well thanks a lot hello again so if you still have any doubts for for please U drop in the app while we wait we probably time for to two three questions so I will try to to question one that I'm curious that this is this is a big beast of of decisions and constraints um and then to really apply the algorithm in the different stages as you present but from your point of view what is what is the
more complex part trying to find this solution where where is the biggest um the biggest the biggest challenges to really put a solution like this in place the the biggest challenge if I present one at least one I would say the the the number of variables that we need to manage um in the end of the day we are making decisions that one decision impact the other so the number of variables that we end up um to to decide uh it's more than 100 million as I said so uh we need to trim down the
number of other of variables in order to be able to get a solution and an optimal solution so uh we are we have a 4 Hour Windows to generate prices for uh for the day and we we need we cannot is that for our windows so we need to work hard on on the duration of of our of our execution in order to be able to uh get prices and and fleit recommendation during that time windows so I'll will put that as as as as the key difficulty great I think someone is challenging you about
the metor ristics that that was presented before if it will help uh dealing with the in and complexity and stability of the problem itself what what are your thoughts on that yeah we use some metalistics some of them are already built in the the groy inine so the groy have metor meristics behind that we can use to Leverage The the initial the initial uh solution and we use those I didn't present that because uh of the time that do the time that we have to to present the the use case but we use those and
those help us to get at least a good initial solution but then we have the optimization part and we cannot disregard that part because that part uh is also very important to get a not a good solution but but an optimal solution which is our our key goal great um someone questions you about um the need to optimize for competitor price and availability if you are Happ or you did you did this for the competitor prices and availability in the competitors if it's something that you take into account or you are planning to no we
take that definitely we take that into consideration because it's a very competitive market to begin with um so this that part specific was on the demand part so the forecasting part where we want to um to check what is the the the true demand for that vcle group for a given station during that period we we use those kind of variables like the competitor price on hour uh forecasting module in order to find- tune what what will be the the outlook for for for the demand demand of the the car rental company that that we
try to help um during that period so that that was in that part of of the project where we we average um the competitor price to to catch