I am new to optimization, not sure if the problem described below is trivial. Any guidance on solution or nudge in the right direction would be very helpful.
Problem:
There are two groups – clients and service providers. Let’s represent clients as $u=1,2,\cdots,n$ and service providers as $v=1,2,\cdots,m$ where $n > m$. The task is to recommend each client the top 3 service-providers based on the propensity score $P$ (which is an $n\times m$ matrix).
The propensity score $p_{ij}$ denotes the propensity of a the client $u_i$ accepting a service provider $v_j$. Ideally, we want to recommend top 3 service providers to a client which have the highest propensity of acceptance. Each service provider has a capacity constraint such that number of clients recommended for one service-provider should be between a certain fixed range: $|\mu^{-1}(v)|\le q_v\,\forall v$ where $\mu$ is the assignment and $q_v$ is the limit to number of assignments for the $v$th service provider.
The solution needs to be practically feasible. We are dealing with few millions clients and few thousands service provider.
I also want to make sure the recommendations don’t change drastically. If propensity scores don't change over time, then we should be recommending more or less same service providers to the same client. If possible, there could be some variation although – say, changing one of the top 3 service providers every now and then will not be a terrible idea.
What kind of techniques are usually used to solve such problems – After doing a bit of research, I found there are techniques such as Linear Programing, Bipartite Graphs to handle similar problems. But I can’t wrap my head around the best course of solution that should be employed in this case.