О2_Routing_МенеджерРесурсов.Добавить
Регистрирует ресурс модели — счётчик, накапливающийся вдоль маршрута. Прирост значения ресурса при переходе по дуге задаётся транзитом — единым для всех ТС или индивидуальным (массивом транзитов по числу ТС). Ёмкость может быть единой или per-vehicle. Метод вызывается на менеджере: Модель.Ресурсы().Добавить(...).
Синтаксис
Модель.Ресурсы().Добавить(
Транзит,
МаксимальныйРезерв = 0,
Емкость = Неопределено,
НакапливатьСНуля = Истина,
Имя = Неопределено
)
Параметры
- Транзит — ФиксированнаяСтруктура, Строка, Число — транзит-источник прироста: объект транзита, имя или индекс (с нуля).
- Транзит — Массив — массив транзитов длины, равной числу транспортных средств модели. Каждое ТС использует свой транзит.
- МаксимальныйРезерв — Число — максимальное значение резерва (slack) на точке маршрута. Резерв позволяет учитывать ожидание или простой между прибытием и обслуживанием (например, ожидание начала временного окна). По умолчанию —
0. - Емкость — Число, Неопределено — единая ёмкость для всех транспортных средств. Если не указана — верхней границы значения ресурса нет.
- Емкость — Массив из Число — массив ёмкостей по числу ТС, индивидуальный для каждого транспортного средства.
- НакапливатьСНуля — Булево — признак фиксации стартового значения ресурса в ноль. По умолчанию —
Истина. - Имя — Строка, Неопределено — уникальное имя ресурса. Если не указано, генерируется автоматически как
_<индекс>.
Возвращаемое значение
- ФиксированнаяСтруктура — объект ресурса.
Описание
Единый метод регистрации ресурсов. Через комбинацию параметров покрывает все варианты, которые ранее задавались отдельными перегрузками: единая ёмкость и общий транзит, индивидуальная ёмкость на каждое ТС, индивидуальный транзит для каждого ТС, источник-константа, источник-вектор. Конкретная форма определяется типом аргументов:
Транзит— структура/имя/индекс → один транзит-источник для всех ТС;Транзит— массив → индивидуальный транзит для каждого ТС;Емкость— число → единая ёмкость для всех ТС;Емкость— массив → индивидуальная ёмкость для каждого ТС.
Пример
Грузоподъёмность с единой ёмкостью:
ВекторСпрос = О2.Утилиты().Массив(0, 1, 1, 1, 1);
Модель.Транзиты().ДобавитьВектор(ВекторСпрос, "спрос");
Модель.Ресурсы().Добавить("спрос", 0, 2, Истина, "груз");
Per-vehicle ёмкости (3 ТС с разной грузоподъёмностью):
ЕмкостиТС = О2.Утилиты().Массив(5, 3, 2);
Модель.Ресурсы().Добавить("спрос", 0, ЕмкостиТС, Истина, "груз");
Per-vehicle транзиты (грузовик и велокурьер ездят с разной скоростью):
Модель.Транзиты().ДобавитьМатрицу(ВремяГрузовика, "время_грузовик");
Модель.Транзиты().ДобавитьМатрицу(ВремяВелосипеда, "время_велосипед");
ТранзитыПоТС = О2.Утилиты().Массив("время_грузовик", "время_велосипед");
Модель.Ресурсы().Добавить(ТранзитыПоТС, 0, 600, Истина, "Время");
См. также
- Получить
- Транзиты
- Целевая функция (мягкие границы, балансировка, коэффициент ресурса)
- Ограничения (жёсткие границы значения ресурса в точке маршрута)