Алгоритм
Сделать емкость зеленого пула больше в 1.2 раза (например), чем нужно для старта.
Т.е. при объёме красного пула в 160 штук, ему нужно 16 зелёных, но пул мы делаем из 20 портов.
Загружаем зелёные во все дырочки.
Для каждой зелёной разблокируем её семью.
При проверке зелёной в вечном цикле выясняем разблокирована ли её семья в симпуле, и если да, то даже при отсутствии их в воздухе зелёную оставляем жить. Если семья заблочена, то выкидываем зелёную.
при таком раскладе у нас сразу попытается загрузиться 200 красных в 160 портов.
И есть вероятность, что при ещё достаточном количестве живых красных, какие-то семьи уже будут заблокированы и зайдёт новая зелёная со своей семьёй.
Кроме того можно считать посчитать сумму всех незаблокированных красных и если она меньше 50% емкости пула, то заблокировать самую маленькую семью из разблокированных. Тогда их зеленая
сделает анлоад и на её место придёт другая.