#anylogic
Вопрос:
Изображение для иллюстрации контекста точки замерзания: Создание масштабируемой модели производственной линии для повышения коэффициента оптимизации человеко-машин. Будет масштабироваться модель для оператора (ресурса) для работы на нескольких машинах (одного и того же типа). Во время технологического процесса на станке оператор будет захвачен и освобожден несколько раз для выполнения различных задач.
Проблема: Весь процесс зависает, когда оператор захватывается одновременно в нескольких блоках захвата.
Мысли: Есть ли способ создать список, в который добавляются задачи в случае, если ресурс в данный момент захвачен. Затем ресурс будет работать со списком задач всякий раз, когда он простаивает. Любые другие методы решения этой проблемы также приветствуются!
Ответ №1:
Если это станет сложной моделью, вы можете рассмотреть возможность использования чисто агентного подхода.
На вашем ресурсе есть JobRequest
связанный список агентов, которые создаются и отправляются машинами при необходимости. Они отсортированы по некоторому приоритету.
Затем ресурс просто делает это один JobRequest
за другим.
Никаких ресурсов или Seieze
элементов не требуется.
Это часто более мощный и гибкий подход, поскольку вы больше не привязаны к блокам процессов. Но очевидно, что это нуждается в хорошем контроле и тестировании с вашей стороны 🙂
Комментарии:
1. Есть ли более простой метод для этого или какие-либо примеры из учебника, на которые я могу сослаться? Я довольно новичок в Anylogic, и предлагаемое решение кажется мне не по силам 🙂
Ответ №2:
Проблема: Весь процесс зависает, когда оператор захватывается одновременно в нескольких блоках захвата.
Вам нужно лучше объяснить свою проблему: невозможно «захватить одного и того же оператора одновременно в нескольких блоках захвата» (если только вы не используете условие выбора ресурсов или аналогичное, чтобы попытаться «принудительно» захватить определенный ресурс — даже в этом случае это более точно оформлено как «Я установил условия выбора ресурсов, которые означают, что у меня в конечном итоге нет доступных допустимых ресурсов»).
Что представляет собой ваша модель «замораживания»? Например, это может быть просто естественным следствием отсутствия доступных ресурсов, особенно если у вас длительное время задержки или вы используете блоки задержки с набором «До тех пор, пока не будет вызван stopDelay ()», т. Е. Вы полагаетесь на события в другом месте вашей модели для освобождения агентов (и захваченных ресурсов) из блоков, что при неправильном проектировании модели может означать, что в некоторых обстоятельствах этого никогда не произойдет. (Если ваша модель «замораживается» из-за отсутствия доступных ресурсов, она должна «разморозиться», когда это произойдет.)
Во время технологического процесса на станке оператор будет захвачен и освобожден несколько раз для выполнения различных задач.
Вы можете просто сделать это немного, разбив действия на машине на ряд действий по захвату/задержке/освобождению с различными характеристиками (или поток процесса, который вращается вокруг набора этих действий, управляемых некоторыми данными, если вы хотите, чтобы он был более гибким / управляемым данными).