As part of a project, I'm attempting to write an algorithm that will optimize the allocation of inventory between different locations. Basically, I'm attempting to optimize equipment allotments based on donor and recipient fitness levels. In other words, move excess inventory from locations with the most to give to the locations with the most need. Each location has up to two types of items in it's inventory with one taking up twice the space as the other. Each type accomplishes the same thing. However, the larger and less efficient type is more plentiful and cheaper than the more efficient one.
I already have the criteria to judge the fitness of donors and recipients that will result in a numeric score. The higher the score, the more fit the candidate is. Although I do know that I need to come up with a way to encode possible solutions, I'm not sure on how to proceed after I have identified potential donors and recipients along with their respective fitness scores.
Each location has a fixed amount of room. Donors and recipients can exchange one type of equipment for another so the relationship between them can be bi-directional. Once a donor and recipient have "mated" the donor and recipient move on to the next round if and only if they have remaining inventory or need, respectively. Therefore, there needs to be some sort of "memory" to remember the remaining need levels of recipients and the remaining excess inventory levels of donors. Additionally, each pairing that led to the optimized result should be logged in the order that it occurred so that a "family tree" of sorts is generated.
Given the requirements, should I be pursuing a genetic algorithm? If not, what methods should I use? If so, what do I need to do next? When answering, please bear in mind that I haven't had specific training in algorithms or optimization.
Thanks in advance for any assistance you can provide.
This is the article I read that got me started on this idea: