Quote:
Originally Posted by Tristan Lall
Having said that, I suspect that making it transparently deterministic (except for breaking ties) would be a good idea. There are a limited number of items, and a limited number of teams, so doing the computations in several instant rounds is no big deal. Teams could select items, quantities and preferences (e.g. as preference points expressed as decimal fractions summing to 1). When it's time for the first round, it attempts to allocate teams' highest preferences (in order of most preference points expended). If there are teams who don't get their first preference, the teams' remaining preferences are normalized to fractions summing to 1. (So if you miss out in the first round, your preferences are strengthened in subsequent rounds.) Then the next round instantly takes place, and so on. I haven't thought this through in detail, but it seems to me that even if there are edge cases, they can mostly be rectified by offering teams variable-value PDVs and/or less-than-par fee rebates (proportional to the amount of unfulfilled preference at the end of all allocations). After all, even if you get no parts, it's harder to complain about a discount.
|
As an additional economic refinement, maybe we could offer teams (but not mandate) the option to designate substitute goods for each preference. If you just want
any solenoid valve from FIRST Choice, allocate your preference to your favourite one, and then choose decimal fractions between 0 and 1, inclusive, indicating how much you'd like each other solenoid valve (or each other available item, if you'd like) as a substitute for the favourite one. If you don't get your preferred item, you get the initial preference allocation times this substitute factor, and are re-ranked within the same round.
1
In other words, the preference matrix is an
n ×
n matrix with the
i =
j cells being the preference for the items themselves, and the rest of the cells being the substitutability of item
j for item
i.
The UI for this should be considered in some detail, to make it easy for teams to choose to designate no substitutes, and to understand the form in a clear way.
Also, this is just brainstorming at this point; I haven't analyzed this to see if it works.
1 This substitution would seem to put some ugly upper bounds on the computation time of the algorithm...but despite that, I think it could still work for our small set of teams and items.