Модель А64 Anylogic журнала для протоколирования операций.
Задание.
1.Задача моделирования в среде Anylogic.
На участок поступает заказ на изготовление партии в 1000 изделий.
Исходные материалы – готовый крой и аксессуары.
Необходимо смоделировать работу участка по выполнению этого заказа.
2.Технологический процесс изготовления
Очередность операций и их продолжительность

3. В созданной модели modelSewing необходимо сделать вывод результатов работы по завершению изготовления 100 шт изделий.
- Вывод результатов работы необходим примерно в таком виде.
NrРаботника | Времянач | Времяокон | N опер | К-во |
701 | 08:15 | 08:30 | 2 | 100 |
701 | 08:30 | 09:15 | 1 | 80 |
701 | 09:15 | 10:00 | 0 | 0 |
Время начала след строчки = времени окончания предыдущей.
Если у работника был простой- т.е. он не был востребован то номер операции=0 (простой).
Количество имеется в виду, что если работник выполняет одну и ту же операцию непрерывно,
то все это выражается одной суммарной строчкой.
Ответы на вопросы к модели
1. Для чего функция write?
для записи текущей операции в журнал

Protocol note=null; | Задать переменную с типом Protocol . Начальным значением является null, т.е в ней пусто и она ни на что не ссылаетсяя | |
Ветка№1 | if(protocols.size()>0) note = protocols.get(protocols.size()-1); | Если уже есть записи в журнале, то в note записываем ссылку на последнюю из них |
Ветка№2 | if(note!=null&¬e.Nworker==unit.number&¬e.Noper==noperation){ | Если ветка№1 была выполнена, а также протоколируемые сейчас оператор и номер операции совпадают с данными последней записи |
note.amount++; note.endtime=time(); } | То увеличиваем количество в последней записи и фиксируем конечное время | |
Ветка3 | else { if(unit.endtime<startime) | Если ветка2 не была выполнена, то проверяем факт простоя оператора до момента начала текущей операции |
add_protocols(unit.number,unit.endtime,startime-unit.endtime,0,1); | Если условие ветки3 истинно, то Добавляем в журнал новую запись по началу и окончанию простоя оператора | |
add_protocols(unit.number,startime,time(),noperation,1); | Добавляем ещё одну запись для протоколирования текущей операции | |
Используемые переменные и структуры данных
Protocol | Тип агента для имитации записи отчета(журнала) |
protocols | Популяция агентов с типом Protocol для имитации всего журнала записей |
note.Nworker | Параметр Protocol для хранения номера оператора |
note.Noper | Параметр Protocol для хранения номера операции |
note.amount | Параметр Protocol для хранения количества операции |
note.endtime | Параметр Protocol для хранения конечного времени операции |
noperation | Аргумент функции write– для передачи номера протоколируемой операции |
unit | Аргумент функции write содержит ссылку на оператора текущей операции |
unit.number | Параметр Operator – для хранения номера оператора текущей операции |
unit.endtime | Параметр Operator – для хранения времени завершения операции оператором |
startime | Аргумент функции write содержит время начала текущей операции |
2.Насколько я понял, unit – обозначается ресурс (?) И можно обратиться к параметрам number и endtime изнутри агента Operator (в Resourcepool) в виде unit.numberиunit.endtime. Потом, я увидел, что из функции write вы тоже так обращаетесь к этим параметрам в таком же виде. И я попробовал обратиться к ним из блока Операции (Service) и там выдала ошибку.
В блоке service можно напрямую обратиться к unit только в действии «При захвате ресурса».

В других действиях я обращаюсь к нему опосредовано через параметр агента service(это самописный тип Task).

С этой целью я в тип Task добавил параметр unit.

Во время выше упомянутого действия «захват ресурсов» я сохраняю в данный параметр ссылку на захваченный ресурс
3. Что означает всё же выражения unit.number, unit.endtime?
Это обращение к параметрам number endtime по ссылке на агент оператора, который описывается типом Operator |
4.Каковы области, в которых их можно применять?
Ответил в первом вопросе. Т.е. используете в действиях resourcepool и service, которые не приводят к ошибкам компиляции
5.Какое руководство/документацию по Anylogic можете посоветовать?
https://drive.google.com/drive/folders/1dH97In8_iIJCzKZ9iO65pRpRLYdRwonW?usp=sharing