MATLAB Answers

What does this code mean?

4 views (last 30 days)
Navya Anand
Navya Anand on 30 May 2018
Answered: Krishna Akella on 10 Dec 2018
I'm trying to build a SimEvents model, where entities are assigned attributes that will determine whether they pass through a second loop in the model, or are terminated immediately.
I have the following code (See below) from my supervisor, but can't understand what it means. Any help is appreciated!
___
Found in Entity Generator (Entity Generation tab):
% Pattern: Repeating Sequence
persistent SEQ;
persistent idx;
if isempty(SEQ)
SEQ = [1 1 1 1 inf];
idx = 1;
end
%if idx > numel(SEQ)
% idx = 6;
%end
x = SEQ(idx);
idx = idx + 1;
dt=x;
___
Found in Entity Generator (Event Actions tab):
% Pattern: Repeating Sequence
persistent SEQ;
persistent idx;
if isempty(SEQ)
SEQ = [2 2 2 2 2];
idx = 1;
end
if idx > numel(SEQ)
idx = 1;
end
entity.Route = SEQ(idx);
idx = idx + 1;
Thank you!
  2 Comments
Navya Anand
Navya Anand on 1 Jun 2018
Ah ok, thank you. Would you be able to explain how I can enter a code such that the nth entity generated has a specific attribute? e.g. 60% attributes proceed down Path1, whilst 40% proceed down Path2 (to be split later on in the model)?
Thank you, Navya

Sign in to comment.

Answers (2)

Jan
Jan on 31 May 2018
Edited: Jan on 31 May 2018
The first code replies a dt=1 for the first 4 calls and dt=inf for the fifth call.
The second code sets the variable entity.Route to 2 in all 5 calls.
  3 Comments
Navya Anand
Navya Anand on 7 Jun 2018
Yes I can see that - thank you for your help! :)

Sign in to comment.


Krishna Akella
Krishna Akella on 10 Dec 2018
Hi Navya,
In the Entity Generator, Entity Generation tab, dt is the amount of time the generator has to wait before it generates the next entity. So it is the delta time to next entity. Or the inter-generation time.
If I understand correctly, you want 60% entities to go down path 1 and 40% to go down path 2. Assuming entity.Route is what is deciding the route later on in your model, you can draw a uniform random number between 0 and 1. If the value is less than or equal to 0.6, then set entity.Route = 1. Else, set entity.Route = 2.
- Krishna

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by