Yope
Yope

Reputation: 87

Is it possible to dynamically update if functions in anylogic?

I'm using a state chart in combination with a schedule in Anylogic (see picture). The output of the schedule is equal to 1 during working hours and 0 otherwise. Now I want the transition from state1 to state2 to happen when the schedule is turning to 1 or is equal to 1(so otherwise wait until the working hours).

I have tried using an if statement

   if( main.plannerSchedule()==1 )(<perform action>) 

However, by this method, the state transition only happens if the statement is true but doesn't wait for it to become true. Is there a way to constantly update the state transition or is there a "wait until" function that can solve this problem?

State chart

Upvotes: 0

Views: 160

Answers (1)

Benjamin
Benjamin

Reputation: 12640

Best let the schedule send a message to your statechart when it switches. This assumes that the statechart lives on the same agent type as the schedule. Write this code in the action code box of the schedule:

if (value==1) {
    statechart.fireEvent("go to state 2");
} 

Obviously, your message transition needs to await the "go to state 2" message.

Note the value keyword. See https://www.benjamin-schumann.com/blog/2016/2/4/the-magic-lightbulb-and-how-it-can-help-your-anylogic-modelling for more info on that

Upvotes: 1

Related Questions