Условное событие, запускающее Anylogic

Есть ли другой способ использовать условное событие для мониторинга парковочных мест? Конечная цель состоит в том, чтобы увидеть в журнале результатов событий, когда автомобиль припаркован и где. Я сделал событие, которое вызывает функцию, которая запускает цикл через каждое парковочное место и возвращает true в выбранном месте. Я хотел вызвать это событие всякий раз, когда машина припарковалась, но зацикливание вызывает остановку симуляции.

Function(){
for(int i = 0; i<29; i++) //29 = number of parking spaces
    {
        if(parkingLot2.getCarOnSpace(i) != null) //if spot i taken
        {
            return true; 
            //true sent back to event, is then triggered
        }       
    }
return false;
}

Event
condition: Function();
Action: event.restart();

1 ответ

Поэтому сначала функция event.restart() применяется только в том случае, если событие имеет тип триггера: timeout и mode: user control, в противном случае ваша функция event.restart() ничего не делает...

Во-вторых, вам нужно вызывать вашу функцию не в условном событии, а в момент парковки... Это можно сделать с помощью действия "на выходе" блока carMoveTo.

И вашу функцию можно сделать лучше, используя nSpaces вместо 29:

for(int i = 0; i<parkingLot2.nSpaces(); i++)
    {
        if(parkingLot2.getCarOnSpace(i) != null)
        {
            return true; 
        }       
    }
return false;

Вы можете использовать аналогичную функцию, чтобы узнать, в каком месте припаркован автомобиль, но вам нужно иметь отдельный массив, собирающий информацию о том, какие места свободны или нет, так как объект parkingLot не имеет этой функции. Представьте, что у вас есть массив с размером parkingLot2.nSpaces() и логические элементы, начинающиеся с false, поскольку все парковочные места свободны. Всякий раз, когда ваш автомобиль въезжает на парковочное место, вы используете ту же функцию, но вместо "вернуть истину" вы устанавливаете для массива значение true в этом конкретном индексе. И вы должны установить массив в false, когда машина выходит.

Другие вопросы по тегам