Pages: 1
Нестандартный тип агента
Поясните, пожалуйста, как правильно создать и использовать нестандартный тип агента. По справке - не получается.
Задача. В качестве заявок из Source должны выходить партии молока с определенной массой. В дальнейшем от массы партии будет зависеть
время задержки в Service

Создал новый тип агента MilkBatch с параметром Weight. В Soruce выбрал его в качестве нового типа.

А как присвоить значение weigth?

Если устанавливаю в Source в поле "При выходе" выражение Agent.weight = 5000

То при компиляции модели выдает ошибку weight невозможно разрешить или это не поле
Юрий, загляните в справку ещё разочек: agent написано с маленькой буквы. Java чувстительна к регистру. Правильный вариант такой:
Code
agent.weight = 5000;
Кстати, лучше использовать поле "При подходе к выходу", а не "При выходе".


Рекомендую также прочитать Соглашение о наименовании, это позволит гораздо легче ориентироваться в коде, и вы будете писать его грамотнее (а те, кто анализирует ваши модели, не будут желать вас убить :)).

Ну а чтобы не ошибаться при написании кода и научиться самостоятельно избавляться от 80% ошибок при компиляции, используйте автоматическую подстановку кода и познайте параметры используемых вами объектов.

Чтобы поставить время задержки в зависимость от массы партии, можно использовать этот условный оператор.

Успехов!
Я разобрался.
В последней версии (скачал PLE) обращение идет через agent (как в справке), а в более ранней через entity.
Кстати в новой книге Боева таже ситуация. Он пользовался более ранней версией. В модели сервера (самая первая)
он создает новый тип агента Inquiry и обращается к нему через entity.

Но в версии 7.1.2 это не работает. Выдает ошибку. Обращаться к переменным нужно через agent. :)

Еще вопрос:
Как в новом дизайте объекта queue определить визуально какой порт для выхода по таймауту, а какой по вытеснению?
Ну если не глядеть на изображение в более старых версиях дизайна:)
При чтении книги Боева возник еще один вопрос:
В книге при создании нового типа заявки сначала создается новый Java класс (стр.72-73), в котором описываются все переменные нового типа.
Потом Java класс преобразуется в тип агента.
По-моему, можно сразу создавать новый тип агента, минуя создание Java класса.
Или я что-то не так понимаю?
Боев писал свою книгу по AnyLogic 7.0, где вместо локальной переменной agent используется entity. История этого имени (entity) уходит корнями к AnyLogic 6, где в диаграмме процесса агенты участовать не могли. Для этого необходимо было создать свой Java-класс, унаследованный от встроенного класса Entity. В AnyLogic 7.0 произошло полное объединение: Заявка = Тип Агента, но локальная переменная entity осталась. Это было исправлено в версии 7.1.0.
В AnyLogic 7 конвертация Java-класса в тип агента действительно не требуется, если речь идёт о новом типе агента – его можно создать напрямую. Однако если вы будете преобразовывать модели из AnyLogic 6, этот опыт может вам пригодиться.

Что касается очереди, то таймаут и вытеснение — продвинутые фичи, и пользователь, прежде чем начнёт их использовать, обратится к справке, где эта информация есть. А в графическом редакторе это мусор, он засоряет диаграмму процесса и усложняет её чтение.
Pages: 1
Users browsing this topic (4 guests, 0 registered, 0 hidden)