Предположим, что у вас есть набор узлов. Некоторые узлы - производители, некоторые - потребители, а некоторые - маршрутизаторы. Каждый узел имеет максимальную пропускную способность, которая определяет максимальное количество единиц, которые он может принимать в день, а также максимальное количество единиц, которое он может отправлять в день (в этом случае принимаемые и отправляемые не мешают друг другу). Каждый узел также имеет емкость для блоков, что позволяет им иметь дело с изменениями в потоке. Кроме того, каждый узел может быть только подключен к 8 соседним узлам (на плоскости), и тот же предел применяется к соединениям.Что такое хорошая локальная эвристика для управления динамическим дискретным узлом?
У меня уже есть эвристика, которая, учитывая график, перечисляет узлы и делает достаточно хорошее задание, нажимая единицы на следующие узлы. Он перечисляет каждый узел, отправляя на каждый целевой узел max (ceil (оставшиеся отправители-единицы/оставшиеся-следующие-узлы), оставшиеся-receivable-units-at-receiver).
Теперь мне нужен способ автоматического поиска узла и определения топологии графа для обеспечения достаточного потока. Моя основная идея заключалась в том, чтобы назначить «ответственность» каждому узлу, изначально эквивалентную количеству единиц, которые они потребляли. Тогда добавление ребра из n1 в n2 даст некоторую ответственность n2 за n1. Но я быстро обнаружил, что разница между суммой, которую может потреблять узел, и суммой, которую может принять узел, запутал алгоритм и повел меня по кругу.
Редактировать Сумма, потребляемая каждым производителем/потребителем, может меняться со временем (ниже некоторого максимума), а узлы могут быть добавлены или удалены.
Любые простые идеи?
Решение с устойчивым состоянием, вероятно, даст хорошее приближение, но причина, по которой я сказал «динамический», заключается в том, что количество потребляемых потребителями может меняться изо дня в день (до некоторого максимума).То же самое для производителей. Кроме того, узлы добавляются и удаляются относительно часто. –
OK. В этом случае существует ли какая-либо причина не просто загружать каждый узел в полную емкость хранилища, когда это возможно? –
Это было бы эквивалентно отсутствию хранения в первую очередь. Узлы будут опущены, когда потребление повысится и заполнится, когда оно уменьшится. Но общая идея о том, что заполнение узла лучше, чем ничего, - это правильно. –