Точная проблема
Я обнаружил, что если у меня есть эти две части кодов, написанных друг за другом в одном месте, т.е. одной кнопкой, функции, связанные с блоком wait
(то есть wait.get()
и wait.size()
) не сработает.Однако, если у меня каждая часть в отдельной кнопке, все работает отлично.
ЧАСТЬ 1
1- Направляющие агенты households
до enter
блок-схема
for (Agent i: households){
enter.take(i);}
traceln("this is 1");
(enter
здесь связан непосредственно с wait
), затем..
traceln("this is the current wait size: " + wait.size());
На этом этапе агенты предположительно находятся в ожидании.Однако wait.size()
возвращает this is the current wait size: 0
.Хотя агенты отображаются в ожидании в окне просмотра , которое выглядит так .Эти агенты недоступны с помощью таких функций, как wait.get () или wait.size ()
PART 2
Поэтому эта часть, которая должна выполняться после части 1, не работает
for (int i =0 ; i<wait.size() ; i++){
collection_main_households.add(wait.get(i).getIndex());
}
wait.freeAll();
Короче говоря, эти коды будут работать только в отдельных кнопках, но я хочу, чтобы они работали, если они написаны друг за другом.
дополнительная информация о модели
В основном, модель предназначена для мобильности населения в некоторых районах.На этапе stratup
в main
я создаю и связываю каждую семью, основываясь на таблице, содержащей количество членов и их возраст.
Способ построения этих семейств основан на household
агенте, который используется в качестве ядра для linking
и перемещает членов его семейства (father
, mother
и children
).Таким образом, если я переместил household
из A в B, message
будет отправлено его членам с указанием переместить их из A в B.
Код вверх только для первых двух шагов после домохозяйствполностью сформированы и готовы к размещению в своих первоначальных местах.Процесс выглядит следующим образом:
- Я использую
enter
, чтобы включить домохозяйства в блок-схему - Затем все собрались во временном статусе
wait
, прежде чем они выйдут на свободу. - С помощью команды
wait.free(this)
я использую selectOutPut(IN/Out)
, чтобы распределить эти households
в их исходные местоположения. - Когда
household
входит в его местоположение (в данном случае новый * 1063)*) Я send a message
всем своим подключенным членам просим их отправиться в одно и то же место назначения, используя те же команды enterID.take(this)
и waitID.free(this)
.На этом этапе все эти компоненты (household
и его члены father
, mother
и children
) должны быть в одном и том же node
. - Я повторяю процесс в случае с
household
хочет изменить свое местоположение.
Я использовал collections
, чтобы обойти проблему динамического изменения и доступа к Hash Lists
, сгенерированному с помощью wait.waitingEntities
.Имеет значение то, что если wait
брать одновременно с enter
, как это решить?
снимок экрана
Заранее спасибо.