Выяснил, что балансировка не работает как надо из-за того, что в функции dowork (где процессится добыча в шахте) для шахты снимается dbt. И вот тогда getbalres для завода возвращает use, а для шахты dbt уже сброшен. В итоге балансировщик выдаёт неверный результат.