Я разрабатываю агентную модель, имитирующую рост клеточной культуры in vitro.
Я использую библиотеку MASON (Java), но полагаю, что вопрос может быть применим к различным реализациям.
По сути, мои агенты запрограммированы на деление каждые 12 +/- 2 временных шагов после их создания. Каждый раз, когда агент разделяется, к моделированию добавляется новый.
Это приводит к очень быстрому росту сложности проблемы, что быстро делает моделирование особенно медленным.
Чтобы решить эту проблему, я решил, что агенты должны «умереть» по прошествии t временных шагов от создания.
Однако расписание MASON построено на BinaryHeap, который не позволяет легко удалять объекты (агенты) после того, как они были добавлены. Мое решение заключалось в установке логического флага:
dead = false;
Для которого устанавливается значение true после t временных шагов.
So
if(t == 50)
dead = true;
Затем я начинаю свой пошаговый метод, то есть метод, вызываемый каждый раз, когда агент выполняет пошаговое действие, следующим образом:
if(dead)
return;
Однако я понимаю, что простого доступа к объекту в расписании достаточно, чтобы замедлить моделирование.
Есть ли у кого-нибудь предложения относительно того, как я могу отключить агента или предотвратить его вызов?
Спасибо, Дарио
But you can also add and remove agents, or replace all the agents while the simulation is running
- person Vyncent   schedule 20.03.2015