Discussion on existing data:
For a more accurate project, we had to look for real data and test our code on it. To get data, we have contacted the main blood bank in the emirate, which is Abu Dhabi Blood bank. They have provided us with all the variables data needed, and we had done some estimates based on qualitative data provided.
Our contact ensured that they were not allowed to impose specific tariffs on hospitals. The costs, that are inventory costs plus testing costs, are predefined by the Ministry of Health, and are set at 800 AED for blood packets of 450ml which are the ones mainly traded.
According to the blood bank, they had to satisfy a weekly demand of 700 blood units while maintaining exactly 100 units in inventory as part of safety stock planning. That 700 could be split as follows per blood type: 219 blood units for O-, 52 for O+, 97 for A-, 97 for A+, 87 for B-, 87 for B+, 52 for AB+, and 9 for AB-.
As generally known, the universal donor is O-, and the blood bank makes sure it has enough packets in case of shortage in other blood types’ units. Therefore, the blood bank ensures having at least 25 units of O- blood packets, daily. In general, the minimum inventory level for all blood types is set as the following: 6 bloods units for O+, 11 for A- and A+ each, 10 for B- and B+ each, 1 for AB- since there are few people with AB- blood type, and 6 for AB+.
As tackled earlier, blood donations can be in three main forms: regular donors, walk-ins, and blood campaigns. In our case, we have considered regular donors only since we know that these people must donate blood each week; as the recovery for each blood donor is set for a week.
According to the blood bank, the frequency of people donating blood is different from one day of the week to the other. In their words, more people donate on Sundays and little less on Wednesday, Monday and Tuesday are quite the same along with Thursday; whereas in Saturday they welcome the least number of donors, and little bit more on Friday. To quantify that, we have set some percentages for each day, which the blood bank approved, and these are: 33% of blood units are collected on Sunday, 10% on Monday, Tuesday, and Thursday, 30% on Wednesday, 5% on Friday, and 2% on Saturday.
The main purpose of this project is to come up with a defined number of units that the blood center should collect in order to meet their demand, and avoid waste. As per the representative, keeping a waste level of 1% was among their KPIs. Since it takes 35 days for blood units to perish, we have aimed to work on a 35 days inventory plan; therefore, we have prepared excel files for each blood type assuming our initial inventory is 0 for all blood types; as if the blood bank just started operating.
 
Code in Gurobi (Anaconda)
For our project, and as part of the course requirement, we have used Gurobi to optimize our problem. This being said, and since we are dealing with 8 excel sheets (1 per blood type), we had to call the following libraries: