Search code examples
anylogic

Does reducing capacity of a resourcePool at a certain time/condition make the unit immediately stop and leave the model?


If I have a condition where a resource pool reduces capacity from 2 to 1 at a certain time of the model OR when the unit interacts with a certain number of different agents, will the unit that is being removed from the model stop what it's doing and leave? Or will it finish all of it's queued tasks? I would like it to finish all of it's queued tasks.

My code for the condition is as follows where Surgeons is the resourcePool and seizedAgents is a collection inside the Surgeon agent type:

if( unit.seizedAgents.stream().distinct().count() >= 17 ) {
  Surgeons.set_capacity(1);;
}

Solution

  • If the capacity is dynamically reduced by calling set_capacity(), and the number of currently seized units exceeds the new capacity, the extra units will only be disposed of after they are released. The rest immediately

    Thus units busy with a task will be disposed of only after completing the current task

    Check the help for more details.