Шпаргалка по anylogic

Получить статистику по очереди в блоке seize

seize.queue.statsSize.mean()

Циклы

do {
x = uniform( main.spaceWidth() );
y = uniform( main.spaceHeight() );
rnew.jumpTo( x, y );
d = infinity;
for( Restaurant r : chain )
if( r != rnew && rnew.distanceTo( r ) < d ) d = rnew.distanceTo( r ); icount++; if( icount > 1000 )
error( «Cannot find a place for a new restaurant» );
} while( d < 75 );

Работа с временем в модели

Сравнивать время и выводить соответствующее сообщение

(time(HOUR)%24 > 10 && time(HOUR)%24 <20) ? «открыто» : «закрыто»

Размещение ресурсов по пространству

Если надо много ресурсов автоматически распределить по расставленным узлам при запуске модели. Свойство «Базовое местоположение» не поможет.

int i =0;
for(Seat item:seats){
item.jumpTo(seats_collection.get(i));
i++;
}

Диаграммы состояний

agent.ClientStateChart.fireEvent(«seatdown»); -отправить сообщение в диаграмму

обратиться к агенту сообщения

Консоль

System.out.println(main.clients.waitMenuID()); — вывести информацию в консоль

Агенты

agent.stop();-движение агента остановить

обратиться к захваченному ресурсу внутри блока seize

((Offici_ant)unit).OfficiantStateChart.fireEvent(agent);
agent.officiantId = ((Offici_ant)unit).id;

переместить агента за заданное время

this.moveToInTime(main.officiantWaitZones.get(uniform_discr(0,max)),5);

мгновенно переместить агенту в точку пространства

item.jumpTo(seats_collection.get(i));

Таймеры,события

restourantClose.restart(600);-взвести таймер на 600ед.времени

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *