Select date in calendarSelect date in calendar

Pages: 1
Hold не выпускает ресурсы даже по recalculateConditions()
Похоже, вот в чём проблема: в документации про Условие выбора ресурса написано "Если нет доступных ресурсов, подходящих под условие (условие возвращает false), блок Service будет ожидать первый доступный ресурс, для которого выполняется условие."
Т.е. уже "забракованные" ресурсы не проверяются вновь
Получается задавать ограничение на суммарное число задач в анализе и готовых к разработке с помощью "Условие выбора ресурса" некорректно. Поставил дополнительные Hold-ы чтобы контролировать этот лимит, а в Условие выбора ресурса оставил то что действительно относится к ресурсу
Edited: Денис Тучин - 22.09.2015 12:30:23
Hold не выпускает ресурсы даже по recalculateConditions()
Приветствую, коллеги!
Сначала расскажу предпосылки:
Есть задача создать очередь заявок, максимальный размер данной очереди нужно уметь менять во время работы модели. Задачу эту решил использовав Hold (соответствующее обсуждение http://www.anylogic.ru/forum?PAGE_NAME=read&FID=2&TID=121)

Если ничего не менять, то всё работает как часы, но вот ни задача при определённых условиях Hold перестаёт освобождать ресурсы.
Такая история:
  1. В модели идёт Hold с названием queueCondition, который моделирует очередь с переменной вместимостью, за ним следует Service по имени analysis (см. картинку)
  2. у Hold стоит Режим = "Условие"
    Условие блокировки: queueOccupiedSlots >= queueSize.getIntValue(),
    Где queueOccupiedSlots счётчик обновляемый в сервисе analysis (далее описано как)
    queueSize - текстовое поле, задающее максимальный размер очереди
  3. В Service следующие свойства:
    Максимальная вместимость: true
    Задать выбор ресурса: true
    Условие выбора ресурса: (analysisOccupiedSlots < analysisLimit.getIntValue()) && (analysisInterchangeability || (!analysisInterchangeability && unit instanceof Analyst)),
    где analysisOccupiedSlots счётчик увеличивающийся при захвате ресурса этим сервисом, и уменьшающийся при захвате следующим ресурсом.
    analysisLimit - текстовое поле, задающее максимальное суммарное число ресурсов, которые могут находится на обработке в этом сервисе и в очереди следующего сервиса
    analysisInterchangeability - для простоты скажем, что этот константа, которая может быть true или false.
    При входе:
    Code
    queueOccupiedSlots++;
    
    При захвате ресурса:
    Code
    analysisOccupiedSlots++;
    queueOccupiedSlots--;
    queueCondition.recalculateConditions();
    

  4. Так вот проблема возникает только в том случае, если:
    - analysisInterchangeability = false
    - Hold блокирует поступление новых заявок
    - Уменьшаем значение текстового поля analysisLimit
    Не воспроизводится, если хотя бы одно из этих условий не выполнено (например analysisLimit увеличен, а не уменьшен)
Симптомы: После уменьшения значения в поле analysisLimit сервис analysis постепенно покидают все заявки, а новые в него больше не поступают

Вероятно, я что-то делаю не так, но документация не даёт мне понять, что именно. Подскажите, пожалуйста, как исправить или переделать эту модель, чтобы работало, как мне нужно.
Edited: Денис Тучин - 21.09.2015 14:13:34
[Проблема] При работе модели 2D отображения агентов крутятся независимо от аттракторов, Можно как-то настроить, чтобы всегда правильно поворачивались, или это баг AnyLogic?
Не знаю, воркэраунд это или просто невнятная документация, но проблему удалось решить сняв у агентов галочку "Поворачивать анимацию согласно направлению движения"
[Проблема] При работе модели 2D отображения агентов крутятся независимо от аттракторов, Можно как-то настроить, чтобы всегда правильно поворачивались, или это баг AnyLogic?
Есть значит ResourcePool-ы, у них задано базовые местоположения с аттракторами (количество соответствует размеру пула):


При запуске модели, ресурсы повернуты нормально:


Но после того как модель из заберёт на время и вернёт в пул, они переворачиваются в хаотичном порядке:



Можно как-то настроить, чтобы всегда правильно поворачивались, или это баг AnyLogic?
PS: Проблема не только с ResourcePool-ами, но и с объектами типа Queue и Service.

AnyLogic 7 Personal Learning Edition 7.1.2
Билд: 7.1.2.201502051939 x64
Воспроизводится на Win 7 и Win 8
Возможно ли смоделировать очередь, где условие входа в очередь задаётся логическим выражением?
Всё гениальное просто: добавил Hold с этим условием. Одно замечание: при выходе агента из очереди нужно вызывать hold.recalculateConditions();Прошу прощения за беспокойство :)
Возможно ли смоделировать очередь, где условие входа в очередь задаётся логическим выражением?
C сервисом как-то совсем криво, нужны же ещё ресурсы какие-то фейковые (
Возможно ли смоделировать очередь, где условие входа в очередь задаётся логическим выражением?
Доброго всем дня!
Моделирую Lean/Kanban, есть такое требование: пользователь должен иметь возможность менять размер очереди (от этого меняются статистические данные и графики в реальном времени).
Проблема в том, что если в очереди 10 агентов, то при уменьшении вместимости (capacity) очереди до 5, все лишние агенты из неё выбрасываются. В Канбан логика несколько иная: агенты должны остаться в очереди, но и новые агенты не должны в очередь попадать, пока там не появится место. Вопрос, как это наиболее оптимально организовать?
Первая идея была сделать очередь с максимальной вместимостью, но задать Условие выбора ресурса, как это можно сделать у Service или у Seize типа queueOccupiedSlots < eueSize.getIntValue().
Пока в голову приходит только сделать костыль, поставив Service перед очередью с 0-й задержкой. Может есть более изящные решения?
Edited: Денис Тучин - 06.05.2015 08:30:12
Pages: 1