Events 触发任意逻辑的条件事件

Events 触发任意逻辑的条件事件,events,anylogic,parking,Events,Anylogic,Parking,是否有其他方法使用条件事件来监控停车位?最终目标是在事件输出日志中查看车辆何时停在何处。我创建了一个事件,它调用一个函数,在每个停车位上运行一个循环,并在拍摄的地点返回true。我想在汽车停车时触发此事件,但循环导致模拟冻结 Function(){ for(int i = 0; i<29; i++) //29 = number of parking spaces { if(parkingLot2.getCarOnSpace(i) != null) //if spot

是否有其他方法使用条件事件来监控停车位?最终目标是在事件输出日志中查看车辆何时停在何处。我创建了一个事件,它调用一个函数,在每个停车位上运行一个循环,并在拍摄的地点返回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();
Function(){
对于(int i=0;i因此,首先,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;

for(int i=0;使用事件的意义在于它有自己的输出日志(Database->events\u log)。因此,我认为数据库只需读取事件日志,就可以更容易地找出汽车停在何时何地。这意味着我必须使用事件来找到那一刻。在“on exit”上调用函数会怎么样在CarMoveTo中?它将返回而不执行任何操作。函数用于触发条件。有没有办法在“退出时”操作中放置一个触发器以返回事件为真?您可以做一些事情,比如让一个名为usedParkings的变量最初为0,事件的条件为parkingLot.nCars()!=usedParkings,动作为userParkings=parkingLot.nCars();