Jump to content

Search the Community

Showing results for 'remove parent'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Simio Public Forums
    • Welcome and How To Become a Simio Insider
    • Simio News and Announcements
    • Simio Product Details
    • Simio-Related Positions Desired or Positions Available
    • Help Getting Started with Simio
  • Forums for Simio Insiders Only (See Public Forums Welcome topic to sign up)
    • SI General Discussions
    • SI Sprint Releases
    • SI Shared Items
    • SI Ideas and Suggestions
    • SI Known Issues and Workarounds
    • SI Performance Tips
    • SI Non-US Cultures
    • SI Student Competition
    • SI Educational
    • SI Libraries and Objects
    • SI Animation and Visualization
    • SI Distributions, Functions, and Expressions
    • SI Simio Tabs
    • SI Experimentation and Optimization
    • SI Functional Approaches
    • SI Industries / Domains
    • SI Types of Simulation
    • SI Emulation
    • SI API

Categories

  • Files
    • Academic Information
    • Product Information
    • Case Studies

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


First Name


Last Name


Company/University Name


OCCUPATION


ICQ


WEBSITE


YAHOO


AOL


LOCATION


FACEBOOK


GOOGLEPLUS


SKYPE


TWITTER


YOUTUBE

  1. Alright - I am going to try to phrase a previous question differently and see if anyone can help because I am still having difficulty with this... In the attached, simplified version of what I am attempting, I have a Parent Entity created. And for every Parent Entity, Math.Round((Random.Uniform(1,4)) number of Member Entities are created. Please help me if possible, to set an expression for the Batch Size that waits for each of the created members and batches them. I have the logic for how they match, but I can't seem to get the Batch Quantity to change based on how many of the Members were created each time. Any help appreciated! BatchingLogic.spfx
  2. Martin - Thank you for the response! I am definitely diving in head first I have figured out how to make the priority properties align but to your point, the Parent Entity won't wait for all Members of that same priority to arrive so as soon as it sees the first, it takes it. Is there a Batch Quantity expression on the Combiner that someone can recommend / or / a combiner property, that will make it wait for the priority to change of the entities in the queue and then take all before that point. or something similar? Thanks! David
  3. David - Glad to see you are getting your hands dirty with Simio. The problem in your model is that you have the Source 2 set to create between 1 and 4 entities per arrival. Your combiner is set to Batch Qty of 4. So if say only 3 entities are created in Source 2, they (and their matching parent) will never pass through the combiner, since they are waiting for the 4th entity. As a solution I would suggest having either the parent (preferred) or the members carry a reference value to how many batch members are expected. Then use that in the Batch Qty field on the combiner, such that the combiner works with any 1, 2, 3, or 4 batch member sizes. Sincerely, Martin
  4. Hello All, I have a single Sources that makes 3 different types of parent entities. When these entities exit their first Server through the transfer node, 3 other Sources randomly create Uniform(1,4) of a New type of member entities. I have changed the priority of the member entities, with a on exit add on process, to be equal to the event number of this happening which matches up with the parent Entities with the same priority. With in the Combiner, I have the matching rule of 'Match Members and Parents' and both Member and Parent expressions of 'Entity.Priority'. I am still pretty new to Simio but can someone please help with why this might not be working?? Both types of Entities just build up in their respective input queues at the combiner and never combine. Please help, thanks! David
  5. I don't know your objective, but having a timer on every entity seems like an inefficient approach. How about instead having each entity added to a Storage when it enters an area of interest (like a Combiner) and remove it from that storage when it leaves that area of interest. Then at any point in time you could Search through that Storage queue and do what you like with whatever you find there (pick the first, pick the "best", remove them all, ...).
  6. To my problem I don't care about the coordinates (x,y,z). I want to know if the entity is on a specific object of the main model (e.g. Combiner) when the timer it fired. I'm thinking the best approach would be to use a process on the ModelEntity model (triggered whenever the timer is fired) with a decide step with something like: Get(EntityPosition); Decide(EntityPosition== Model.Combiner); Till now I've tried to use the currentNode function and the location.parent on a ModelEntity process but without success... Any help?
  7. Doc1.docx I’m having an issue with creating a ParentID state variable. I have an add-on process that when a person is created at the source, bags also get created based on a distribution. This all works well. I got this from a post I put on the Simio forum last year. What I want to do is match my person to bag later on based on a variable ParentID, but no matching happens. I did a trace and see that the bags have a non-zero ParentID, but all the pax have ParentID=0. I assumed that in the Assign step highlighted in the first picture is assigning a ParentID to my person, no? I tried a few things, but get errors in other places. Hints? Thanks.
  8. Hi! I want to model the loading of containers at a terminal. On each terminal there is a queue with containers. Each container has different properties, like the size in TEU (is equal to 1 or 2) and their destination. I want to batch a vehicle (parent entity) to a group of containers (member entities). When the capacity of the vehicle is for instance 10 TEUs, you have to batch an amount of containers to that vehicle. The problem is that I cannot express the Batch Quantity in containers, but only in TEUs. Per container the size in TEUs is known and the containers (member entities) must all have the same destination. What should be the expression for the Batch Quantity? It is the most optimal when the vehicle with a capacity of 10 TEUs will be loaded fully. So, when the first number of containers in the list that will be loaded on the vehicle has a common size of 9 TEUs, the last spot can only be occupied by a 1 TEU container. When the first container waiting is 2 TEUs, this one must wait, but the first 1 TEU container waiting in the queue can be taken by the vehicle. How to model this? Does someone has an idea to model this problem? Thanks!
  9. Thanks for your reply! Currently I have 2 problems: 1) I'm able to add the entity to a station but I don't think I'm doing it the right way since the only way I was able to do it was using variables to hold the entity I want to transfer... 2) I can't remove it in any way I try I attached a model on which I'm experiencing to see if I manage to do this. So, could you please take a look to see what I'm doing and tell me what I need to change? Thank you very much. solution1.spfx
  10. Hello, I am trying to combine different types of entities (coming from different sources) using a combiner. Layout: 1. One source connected to the parent node of a standard library combiner. 2. Two sources (each with a different entity) connected to the MemberInput of the combiner. I saw the Simbit but I am struggling with the matching logic for this configuration. I tried: - Matching Rule: 'Match Members' - Member Match Expression: ModelEntity.BatchMembers.IndexOfItem( Entity2) && ModelEntity.BatchMembers.IndexOfItem( Entity3) This is a rather simple problem but I would appreciate a quick hint. Larger picture: Assembly of many parts into a product with each part represented as an entity. Thanks, Michael
  11. Hello guys! In the model I'm developing I have a means of transport (lets call it car) that is an entity, another entity that is a driver and a third type of entity that represents the products. The main purpose of the car is to take the driver to a destiny (to get to those destinies he needs to choose between many paths -> selection weight) and then the driver leaves the car, goes into an object I created (channel) takes the products he wants and returns them to the car. Then, if in the same place he is, he wants more products from channels above the one he is on (yy axis), he repeats the process until he is finished. After that he returns to the car and drives to the next set of channels in his "shop list". Until now, I'm modeling this as a batch of a batch (products wanted batched on the driver and driver batched on the car) but I need the products to go to the car whenever the driver returns from a set of channels (so that they don't walk always with the driver) So, I would like to know if anyone has any suggestions as how to do this. I though of something similar to Simbit "UsingAStorageQueue" but instead of using the batch step I wanted to add the products to a queue of the object that represents the car. I tried to create a Station in the car object and I put the driver there through the Transfer step but i can't remove it from that station So, can somebody please give me some advice on what would be the best approach to model this problem? Or, if you think I'm proceeding correctly, can you please tell me what I need to do to remove the driver from the station of the car? Thanks
  12. Thank you. My first try was to do something like that, but I couldn't find the Parent.BatchMembers.FirstItem.Member.State on the "State Variable Name" options, so I assumed it was not possible... Not sure if it's possible to do this, but I think it would be a good idea to make this field an expression editor like the "New value" is, since it's not the first time this happens to me and I'm sure it happens to other users too. Nevertheless, once again, thank you for your help!
  13. You can reference the member via the parent, like ModelEntity.BatchMembers.FirstItem.ModelEntity.Priority so you can transfer values directly.
  14. Hello! I have one doubt that I would like to clarify: I have 2 entities that travel grouped (1 is the member and the other the parent). There is one point at my model on which I want to separate them and at the same time copy an array of values from the parent to the member. At the momemt I'm doing this by using a state to hold the information from the parent when he enter the separate and when the member leaves it I copy the values from the state to the member. Untill now everything's fine but I'm a little affraid that it can result in some conflicts when many entities pass through the Separate at the same time... So I would like to know if anybody has any suggestions of how to pass the values directly without a temporarilly state? Just to be clear I'm trying to do something like this: Member.ArrayOfValues[index]=Parent.ArrayOfValues[index] which obviously doesn't work since this process is being executed by a token of the Parent... Thanks!
  15. There are multiple ways to deal with this issue, so I’ll go over my thought process and show you one way that I think will do what you need. You created several object definitions, which is key in Simio’s object oriented paradigm. However, the difficulty comes in interfacing objects with data and processes in the parent model where the objects are instantiated. One indicator that the full object-orientedness is not being used is the creation of multiple processes at the parent model level that do exactly the same thing, only they refer to different object instances in the model. This indicates that either the process is inherent to the object, and so should be included in the object definition or that the process can be generalized at the parent model level and use states/properties of the object instances. Your model has exactly this scenario with the “ChannelCommunication” processes—they are all exactly the same but just pointing at different Channel instances. Your idea of using the API to place the channels is reasonable, but you run into the issue of not being able to create instance-specific processes, as you’ve found. In your case, you make use of a global state array, so I kept the ChannelCommunication logic at the parent level. This allows us to refer to that state array directly. The approach is to reduce all those processes into one process that can take information about each channel instance to update the appropriate state in the array. I noticed you already have a property called “Position” defined on the Channel object, so we have that data available. Now we need a way to run that process from within the Channel object, so I created a process property on the Channel object called "ProcessProperty1". In the Channel’s process “AssignmentToProduct” I added an “Execute” step before “Fire2” with the value of “ProcessProperty1”. Now, in the parent model, we need to delete all but one of the ProcessXX in the ChannelCommunication group—rename that remaining process ChannelCommunicationUpdate for clarity. Next, we need to generalize the values in that assignment step and remove the triggering event name (we are using the execute step in the Channel definition, so we don’t need a specific event to trigger the process anymore). This is a little messy—there might be a better way to do this. My approach is to make use of the location.parent property available on each object. Through trial and error, I found that the object executing the ChannelCommunicationUpdate process is a Product entity in a combiner object in the Channel object. That means we can access the relevant properties on a Channel via the following expression: Product.Location.Parent.Combiner.Location.Parent.Channel Thus on the assignment step the fields become: Row: Math.If(MODE==0,Product.Location.Parent.Combiner.Location.Parent.Channel.Position,Product.Location.Parent.Combiner.Location.Parent.Channel.ProductCreated) Column: Product.Location.Parent.Combiner.Location.Parent.Channel.Position New Value: Math.If(MODE == 0, PlaceOfREF[Product.Location.Parent.Combiner.Location.Parent.Channel.Position, Product.Location.Parent.Combiner.Location.Parent.Channel.Position] + 1, PlaceOfREF[Product.Location.Parent.Combiner.Location.Parent.Channel.ProductCreated, Product.Location.Parent.Combiner.Location.Parent.Channel.Position] + 1) Now, the ProcessProperty1 on each channel instance needs to be set to that ChannelCommunicationUpdate process. For future “builds” of the model, you can either set ProcessProperty1’s default value to be ChannelCommuncationUpdate or set the property value when placing the object. I think that will give you the ability to create an arbitrary number of channel instances via the API and have the logic apply to each instance. Hope it helps -Adam
  16. I appreciate the quick response. The idea is, ideally, to use one single source object which releases hundreds of different types of entities, each with their own corresponding supply distribution. These different entities would then be combined to a few parent entities for further processing (> assembly process). I understand that one source object can be used to release different entities as I would like (e.g. using a product mix table) but I did not find a way to specify interarrival times between the same type of entity (opposed to interarrival times between different random entities). If I understand it correctly, I would instead create hundred+ sources each connected with the corresponding entities and connect all sources with one single combiner. I was not sure if there was a more intelligent way to do this (e.g. import all entities + corresponding distributions into a table). I hope this explanation helps. Thank you.
  17. Hello, I have been building a model for a good amount of time now and I have a couple questions about separators and combiners that the SimBits and currents discussions do not cover. My model is one where I have entities being created through processes logic, not sources, so I have them being created already batched. I have five different entities being created with five different batch quantities and when each entity is created I have the model also create a member so the batch will process correctly. I would like to be able to have each entity go into different separators and have them separate the previously established batch quantity. So far I have only been testing this on one entity but it is not working properly. When my entity enters the separator it does not output multiple parents like I would like, instead it outputs the same exact entity that went in. Here is what I would like to do after this process, if it helps. After the entity gets separated I would like to be able to combine each parent with the parents of other separated entities. I welcome and appreciate any help. Thank you
  18. Hi, Dave from the picture it tells us we could combine entities from different routes( more than 2 ) into 1 entity. and the batch quantity of each route can vary.... so for example, we can get 1A,2B,3C,1D,etc..............and combine into 1 X and the batch quantity can also use Expression, not necessarily a constant. the quantity of combing routes can be changed if you pull the black rectangel below.... Sometimes we don't want "box in box" concept, we only need to batching different quantities of entity type into 1. and then separate at some point just as when they are batched together... current construct of Cominer can only bacth two routes, due to its parent/member logic..
  19. I always fall back to looking at how the real system operates. Exactly who makes the decision on when to allow a small batch and on what information is the decision based. Once you determine that I expect that you can represent that behavior in Simio. For example: Does the last batch member have some sort of indicator on it? Is there only a fixed amount of time that a partial batch will wait to be completed? You could possibly hold the parent just outside the combiner until the last member of its batch is determined, then tell it (the parent) what batch size to use.
  20. The batch quantity is an expression evaluated in the context of the parent entity. So if the parent entity can recognize this situation, then the expression could cause that to happen. To take a simple example... I have 10 members coming down the line and I want (ideally) to batch them in groups of 4. If the 3 parents coming in had a state named MyBatchSize, that was set to 4, 4, and 2, respectively, then the BatchQuantity expression would simply be MyBatchSize. Although I recognize that most situations would be more complex, perhaps this can give you some ideas.
  21. Define a statevariable for modelentity. For example, modelentity.orderID. Assign it to OrderNumber from your table (i.e., modelEntity.OrderID=arrivaltable.OrderNumber) after creating the entity. again, you can either define an individual add-on process or add some extra steps to your previously defined process for seizing worker. I prefer to add some extra steps to an existing one for convenience. 1) before seizing worker object or after seizing it (i.e., I mean the appropriate place of the new step is up to your logic) you should assign the orderID to a state variable probably a string type while the "model" object is selected at the navigation window. Let it be IDOrder and assign IDOrder=bathcedmaterials.name. I assume that the material name equals to your order name. Here you should note that, this assignment should be made at the time of the worker's coming to take "batchedmaterials" to input@sink2. batchedmaterial name (i.e., IDOrder) and orderID should be matched. any time delay can cause IDorder's value to change and wrong entity will be removed from parkingstations.allocation queue. 2) define a search step---> be sure queuestatename of this should be: parkingstations.AllocationQueue, match condition: candidate.modelentity.orderID==IDOrder. 3) at the found branch of search step define a remove step. set queuestatename=parkingstations.AllocationQueue. 4) at removed branch define a transfer step. from : currentstation, to: node, node name: input@sink2. note: ***if you have not other purposes*** you should not increase the material.quantityavailable, simio automatically updates this quantity. you should fill in the details... that's it...
  22. there may be many ways for performing this. If your model is not very complex the logic may be: you should track the length of outputbuffer length of source (source@outputbuffer.contents) by using two monitor elements (monitor type, CrossStateChange)...set the InitialThresholdValue for 5 for each one, define two separate processes for each monitor's triggering events; one for above 5 (In this case you should set CrossingDirection positive) and the other for below 5 (and in this case you should set CrossingDirection negative). 1) Create a new process that would be triggered by "above 5 monitör" you should seize worker 2... (source@outputbuffer.contents>5 ---> seize worker 2) 2) And by the same logic Create a new process that would be triggered by "below 5 monitör" you should release worker 2...(source@outputbuffer.contents<5 --->release worker 2...) this is not the end of the story but it is like this.... For example, you should add a storage queue and each time you need to seize worker 2 you have to search storage queue and remove the first entity waiting for a worker (this time worker 2) etc... The second way: In summary, the above logic requires some additional modeling components. Let's try the uploaded file which Works for your purpose with only one process, three steps and a node list. This one is quite easy. But, be sure both will work... and that's it... BottleLine .spfx
  23. Mark, just an FYI that in Sprint 102, the following objects in the Flow Libary: Tank ItemToFlowConverter FlowToItemConverter Have all been enhanced to provide new 'Purge Contents Triggers' functionality. For the Tank object, the 'Purge Contents Triggers' feature will allow you to specify conditional event-driven triggers that will immediately remove and dispose of any contents held in the tank, putting the tank into an empty state. This will easily allow you for example to clear residual flow contents in a tank due to round-off errors, by having the tank perform a conditional check when some specified event occurs (e.g., each time a filled container exits a Filler that the Tank is supplying, then purge the tank if the remaining contents is smaller than some epsilon quantity). A 'Purge Contents' trigger might also be defined to purge/flush/clear the Tank for any other sort of reasons, to reset the flow line back to an empty state. For the ItemToFlowConverter object, the 'Purge Contents Triggers' feature will allow you to specify conditional event-driven triggers that will immediately remove and dispose of any generated flow waiting to exit the converter object, putting the converter's flow container into an empty state and cancelling any further outflow for the discrete item entity whose conversion was in-process. For the FlowToItemConverter object, the 'Purge Contents Triggers' feature will allow you to specify conditional event-driven triggers that will immediately remove and dispose of any inflow collected by the converter object for creating the next discrete item entity, putting the converter's flow container back into an empty state. In addition to the above features, based on some of the discussion that was going on in this Forum thread regarding the Filler (or Emptier) being more flexible dealing with possible round-off calculations, a new 'Stop Early Event Name' property may be found on those two objects in Sprint 102. The 'Stop Early Event' feature on the Filler & Emptier objects will allow you to define an optional event that will end the filling or emptying operation early (before reaching the desired fill or empty target) if the specified event occurs. If, for example, you have a Tank supplying a Filler, you might specify that the Filler should stop filling the current container entity if the container becomes full OR if the tank becomes empty, whichever event occurs first. This type of logic would ensure that the container entity is always going to finish the filling operation and exit the filler, even if say there is a scenario where the container entity's capacity was 0.2 but the contents in the tank was 0.199999, the tank would go empty and the filling operation would be considered completed. Thanks again for the feedback on this thread. The input on this forum is appreciated, and we often use information here as input into possible new enhancements and design evaluations.
  24. Hi Dave, thanks again for your help. so, i did some test runs on another model to try and figure out where i went wrong with mine, and think i found the problem. basically, i had set-up a node list to direct the entities, which was also the path i assigned a selection weight to. so, when i gave the paths selection weights, i think the node list would over ride the selection weight. but now my problem is that when i remove the node list, the entity randomly goes into any room and i need the entity to go in a specific order...hence why i had the node list set-up. is there a way to keep the entity to go in a particular order and assign a "capacity" selection weight for the same path?
  25. There is some very important thing about these methods. It seams that the life of an element can be longer than the life of the parent object of the element. If an entity gets destroyed, the element can get reused if a new entity is created. It seams that all the member variables of the element, that are not managed by Simio, must be cleared or initialized in the Shutdown()-Method. Otherwhise the model behaves strange and the debugging get's very time-consuming. It's what happened with me.
×
×
  • Create New...