
gocken
Members-
Posts
369 -
Joined
-
Last visited
-
Days Won
32
Content Type
Profiles
Forums
Events
Gallery
Downloads
Everything posted by gocken
-
There are a few ways to achieve part/path matching. You can see the simplest one in the model I shared via the link below. https://drive.google.com/file/d/1Uoi6Lt1vdw095tHWTwTd6Azk_95fXmu_/view?usp=sharing If you have many entities and paths you should use data tables approach.
-
Routing Decision based on server waiting time
gocken replied to vishakhvijayan88's topic in SI General Discussions
I can not upload the file. Try this link: https://drive.google.com/open?id=1D548lj3OsccGzFRn77m7J_UZ9dueG_TE -
Routing Decision based on server waiting time
gocken replied to vishakhvijayan88's topic in SI General Discussions
I hope the attached model works for you. It seems there is problem while uploading. I will try again later. -
Routing Decision based on server waiting time
gocken replied to vishakhvijayan88's topic in SI General Discussions
Could u share your model? -
Jeff's solution is elegant and enough. Still, I liked the way you handled the problem via processes. You need not to define Stopcreatingentities event to fire. I revised your logic and attached its revised form as a png file (can not saved my changes due to having a different version of simio).
-
Dave had shared a post which, I think, can be a solution or at least a starting point to your problem.
-
How to set server quantity after set work schedule in experiment
gocken replied to Sean's topic in SI General Discussions
To the best of my knowledge, optquest has no capability of optimizing string or boolen type controls. In the case of automatic optimization (which you want) it does not work! (i.e., It works automatically with only numerical values.). I do not understand why it can not but this is the way it optimizes so far. If you want to optimize string type controls you have to code your optimization routines (i.e., usually via metaheuristics) and integrate them with simio. For this to happen you should be somewhat an advanced user. If not you should ask for further help.- 5 replies
-
- server quantity
- work schedule
-
(and 2 more)
Tagged with:
-
Node depending Crane's Load/Unload Time
gocken replied to MauricioBiolato's topic in SI General Discussions
Subclass a transfer node then define two properties: LoadTime and UnloadTime. Then use these subclassed nodes in your model and set the values of LoadTime and UnloadTime properties appropriately for each subclassed transfer nodes. Also, define two properties on modelentity: you can name them as LoadTime and UnloadTime. Then, define an entered add-on process for each subclassed transfer nodes where you should assign ModelEntity.LoadTime=LoadTime and ModelEntity.UnloadTime=UnloadTime. Now, by setting loadtime and unloadtime properties of crane object as ModelEntity.UnloadTime and ModelEntity.LoadTime you can get different times for load and unload times at different points. -
If arrival rates at sources and processing rates at servers are all same there should not be any difference between these two systems. Check 1) Are the processing times of all server objects are same? 2) Are the interarrival times of source objects all same? the conveyor speeds does not affect the queue length. It does affect only finishing time of processing parts.
-
Rate Tables vs Manual Arrival Rate Changes
gocken replied to akramnajjar's topic in SI General Discussions
from exponential distribution you can get varying numbers in a very very wide range (for example, if you are using exponential distribution for generating interarrival times in one draw (random number generation) you can get 1 (say hour) and in another draw you can get 100 hours). The authors emphasizes that this situation can cause improper results in simulations due to discrete event simulation time advancement mechanism. Assume that you have periods each length is 20 hours. Note that, in discrete event simulation, i.e., the first event plans the next event. So, assume that in the first period (within the first 20 hour) the first event will be created at exactly time 1 (hour) (say an arrival event). After its creation, this entity plans the next arrival (thus an interarrival time will be generated from an exponential dist), i.e., the second entity will arrive to the system at time 101 (hour, 1+100). this means that you will have only one arrival in the first period and no arrivals in 2th,3th,4th and 5th periods. the authors says that this is an inconvenience and arrival should be planned in each period, seperately. By this way, in each period you will have at least one arrival. For this to happen you can use rate tables. -
You're welcome. It is great that your model works!. and ok, your logic seems complex and requires an add-on process.
-
These are extra works. Note that in the last figure we seize the worker as the secondary resource before processing. This is enough for your purposes. Thus, the processes you defined are not necessary for now. Defining a worker as a secondary resource before processing means that whenever a batching process is to be done a worker is required for this to happen (The worker will be seized before the processing for executing the batching.), i.e., if the worker is not available the batching can not begin.
-
1) The model seems working as you intended. The animation seems the logic is not working but in fact the animation is delayed (in the animation the modelentity is at output node of server2 i.e., seems behind the scheule but if you examine trace window the modelentity is just at combiner memberinput buffer.) 2) I think the process logics are not required if you will not use them for further modeling purposes. I mean If you set appropriate parent match expression and member match expression at combiner1 object, the object itself will combine them automatically (it will perform all the operations you performed in your processes). Try not to use them?
-
Note: set selection weight of the path's (from source to picking object's parent input node) selection weight property as modelentity.ParentTrue==True and the path's (from source to picking object's member input node) selection weight property as modelentity.ParentTrue==False.
-
It seems that you can employ the same logic by using combiner (named picking) and seperator (name it as filling, I have forgotten) objects from standard library. This simplifies your model development efforts. Since using a different version I can not save the model I developed. But, attached some screenshots as a guidline.
-
Did not understand the purpose but you can use ctrl+f and then "CA123".
-
Batch Members and Parents Routing
gocken replied to Luu Khanh Minh's topic in SI General Discussions
You should place a seperator just after the combiner object. After seperating them all send five of them to node A and the other to node B. There exist many different ways to perform this. -
Assign different states to members of a batch
gocken replied to Luu Khanh Minh's topic in SI General Discussions
If I were you I made these assignments before sending modelentities to combiner object. Then combine them all... Sometimes "think different" works for simulation -
Create arrival of source on event
gocken replied to Luu Khanh Minh's topic in SI General Discussions
why do you use source? In Workstation 1_exited step you can just increase the currentrownumber by one using an assign step and use a create step just after this assign step, set its properties using any table (and also currentrownumber state variable). and transfer this entity to the appropriate place. you do not need to use source step? -
Create arrival of source on event
gocken replied to Luu Khanh Minh's topic in SI General Discussions
where and how did you use the currentrownumber state variable? is it a model based state variable or modelentity based? -
Issue with attach status label to model entity
gocken replied to Luu Khanh Minh's topic in SI General Discussions
you can and should use dynamic label text instead of status labels. first choose the modelentity then set dynamic label text property as the expression you want (under the animation section of properties window). -
Only routing to server if second resource seized
gocken replied to MasterMind's topic in SI General Discussions
examine AddAndRemoveServerCapacity simbit. you will find a similar logic but you have to extend the logic by including worker object. -
1) You can find what the save index value means by trial and error. Assign this value to a state variable and place a breakpoint onto the search step. Then, when simulation stops at that breakpoint check the state variable's value. 2) you can use match conditons sequential by using "&&" and "||" mathematical operators. For example, a) match condition with "&&": candidate.modelentity.color="red"&& candidate.modelentity.timecreated<500. The search step will found a modelentity when the expression written for match condition evaluated to "true". Fot match condition to be "true" both conditions have to be "true" (the value of candidate.modelentity.color="red" must equal to 1 and the value of candidate.modelentity.timecreated<500 must equal to 1). If not then the match condition will be "false". The search step can not found any modelentity. b) match condition with "||": candidate.modelentity.color="red"|| candidate.modelentity.timecreated<500. The search step will found a modelentity when the expression written for match condition evaluated to "true". Fot match condition to be "true" one of the conditions have to be "true" (the value of candidate.modelentity.color="red" must equal to 1 OR the value of candidate.modelentity.timecreated<500 must equal to 1). If not then the match condition will be "false". The search step can not found any modelentity.
-
Assign different states to members of a batch
gocken replied to Luu Khanh Minh's topic in SI General Discussions
you can use a search step in an appropriate process (you can create a new process or use an add-on process where needed). In the search step you should search the queustate of modelentity.batchmember. Here you can set a match condition if required. If you do not want to set a match condition the search step will search the first 9 entities in the batch (I assume that the batch quantity is 30. If it is a different value Math.Ceiling(Combiner.BatchQuantity*0.3) expression will be evaluated and will be round up the next integer. (You can use math.floor function as well.) Then in the assign step set the required statevariable of modelentity to the new value.