withayk
withayk

Reputation: 146

Define agent with parameter (%) and delay time in main is based of it. (Anylogic)

I have a simple model which has a separate Agent called 'Passenger'. Inside the Passenger I have a parameters called 'WITH_CHILDREN' which it's default value is randomTrue(0.5).

In my main process, I would like the Passenger that results TRUE for 'WITH_CHILDREN' to take longer at a specific delay process.

I thought it would be something like (inside the on enter action of the delay):

if(passenger.WITH_CHILDREN == true){

    delayTime = triangular(1,5,15);
else{
    delayTime = triangular(0,1,1.5);
}

However there are many errors with this :( I would like to link it from the Agent as oppose to setting the percentage in the delay as I have future percentages parameters that will be used on other delays.... If that makes sense.

Upvotes: 0

Views: 1107

Answers (1)

Felipe
Felipe

Reputation: 9431

You can define this directly in the delay time of the delay block using the following code:

agent.WITH_CHILDREN ?  triangular(1,5,15) : triangular(0,1,1.5)

And because an image is better than 1000 words (I made a mistake in the image... it's agent. not passenger. delay time magic

when you use delayTime in the actions, it's only a readable variable, you can't change it.

And learn about the ? and : operators in java in here: http://www.cafeaulait.org/course/week2/43.html

Upvotes: 1

Related Questions