Jump to content

Search the Community

Showing results for 'combiner 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. My objective is to have entities wait on an input node of a combiner for an event. When the event is fired, the corresponding entity to that event enters the Combiner and does something. That's why I think I need an event for each entity, because each entity is supposed to enter the combiner at different times. Yet, sometimes when the event is fired the entity isn't on the input node of the Combiner (the entity is late) and that is why I need to access (on the ModelEntity) the object where the entity is located (object of the Model). At first I had a global event and entities entered the input node one at a time, but that didn't work because there are situations on which the first entity has to wait and another has to go. I hope I have explained myself correctly :/
  2. 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, ...).
  3. 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?
  4. 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.
  5. 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!
  6. The Member Match Expression is an expression that gets evaluated for each entity in the member input buffer. The combiner will batch all members that evaluate that expression to the same value into a batch size set in the “Batch Quantity” property. So in your case, you would like to construct an expression that will match one each of two types of member entities. We also need to clarify what you mean by entity types. In Simio, you create object definitions that you can then place, or instantiate, in the model’s facility view. A default entity definition called “ModelEntity” is already created for you. If you would like entities with completely different definitions, you must create new object definitions with all the corresponding properties, logic, and states. However, in your case (and many cases) I think you are interested in different instances of the same entity type. So, we can place three entity instances of the object “ModelEntity” in the facility view and name them Entity1, Entity2, and Entity3. Importantly, these entity instances are all the same type of entity… namely, ModelEntities. However, each instance can (and usually will) have different property settings (the most obvious one being the name). Now, we need to find a way to match the member entities. Again, that is done by way of an expression that will evaluate to the same value for the members we want to batch together. I’ll make the assumption that we want to batch one of each member entity in a first in first out (by entity instance) fashion. One way to do so is to create a state variable on the ModelEntity object definition that we can use to count the number of entities created at each source. Then, we can just match member entities that have the same count value. 1. Create the integer state variable in the ModelEntity definition tab. 2. Set the state value to the number of entities produced at each source upon entity creation. In each source that makes member entities, under State Assignments, set ModelEntity.IntegerState1 to Source2.OutputBuffer.NumberExited and Source3.OutputBuffer.NumberExited 3. Batch the entities: Batch Quantity = 2 Matching Rule = Match Members Member Match Expression = ModelEntity.IntegerState1
  7. 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
  8. 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!
  9. You can reference the member via the parent, like ModelEntity.BatchMembers.FirstItem.ModelEntity.Priority so you can transfer values directly.
  10. 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!
  11. 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
  12. 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.
  13. 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
  14. 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..
  15. I can't tell from a picture the details of what this object can or can't do, but one of the nice things about Simio is the ease of building your own objects to perform exactly as you wish. I look forward to seeing your object in the Shared Items forum. (Another implementation of Combiner is already there...)
  16. A suggestion to improve the combiner design. I find if we want to combiner entity from diffrent routes together, it is troublesome, Have you ever think of similar design Extendsim does? (As attached)..
  17. 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.
  18. 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.
  19. I'm trying to use a combiner to batch together items coming down a conveyer. However, for my process, I may end up a product run with a partial batch that I would like to still batch and create a state called "partial." The combiner will then start combining the next product coming down the line using the standard batching setup. I've searched through the simbits and examples and was unable to find anything similar. Does anyone have any experience with how I might set this up? Thanks! Melissa
  20. 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.
  21. Joyceamador, from your description both of the above suggestions sound like they should work to me... put the server's queue on the bed, and either use the animated person animation 'prone', or manipulate the queue so the patient looks like they're lying down. If your entity has a symbol of both stretcher/patient, you will have to change the symbol so it is only a patient. However, you could use separate entities for the stretcher and the patient, and using a combiner to place the patient on the stretcher. I've attached a model which uses stretchers and patients and has them 'lying' down as an example. Maybe it would be easier if you posted your model (or a sample of it)... PatientsOnBeds.spfx
  22. I’ve got a follow up question of my own. What is the use-case of the table property? I can define a table property on an object, and then set that property value to a table in my “parent” model in my object instance. In my object’s processes definitions, I can search the table and find all the rows. However, I can’t seem to do anything with the rows found. For example, I’d like to get a field from each row and assign it to a state variable. I tried referencing the result using TableProp[1,1] , but I get an “incorrect number of parameters” error . I can’t set a state matrix to the table property either  So, what can I do with a table property? Thanks, Adam
  23. There are three features built-in that can help. 1) When you have already built an object with a table, you will find a table tool that will Convert To Repeat Group within that object. 2) When you want to create a table in the parent object, the lower part of the Add Table Data button allows you to build a table matching the schema of any repeat group (e.g. that new repeat group you just made in the included object). This creates the data table exactly matching that names and data types in the repeat group. 3) When you want to "pass" that new table as a property value, you can right click on that new repeat group and specify your table name as the reference property.
  24. A repeat group is a way to pass data between objects. It consists of N fields of properties, which can be repeated (similar to a collection of rows, i.e. a table)—hence a repeating group of properties. The reason you can’t reference the table from the submodel is because of the object orientedness of Simio. When you create a submodel, you are actually creating an object definition. You may only ever plan on placing (or instantiating) your object in a “parent” model in your current Simio project (the .spfx file you are working with), but there is nothing stopping you (or anyone else with access to your project file) from instantiating that object in another, different, parent model or even in a completely different project file (by loading your project file as a library, fyi). So, your submodel can’t know about anything in a parent model, unless there are properties that can be set on the object instance that can then refer to data or parameters at the parent model level. That’s what this quote is referencing: You can “pull” data into an object by looking at Location.Parent.Model.ArrayName for example, but you can’t do too much with that, because there is no guarantee that that array even exists for an arbitrary parent model, let alone that the contents of the array are what they “should” be (in terms of data type). In your case, how would each submodel that you place know which table to reference? Even if you set a table property on the object definition, Simio cannot know what columns will be available, even though you will by virtue of building the model. Repeat groups allow you to create a kind of property on your object definition that you can, for each object instantiation, populate with a table. With a prepeat group, your object definition “knows” about what data will be available to it, because you’ve stated “this data is a property of this object, and it must be set each time I instantiate an object of this type.” Still doesn't resolve the difficulty of actually setting all those properties to get your data into the object instances, but maybe helps explain why things are the way they are... -Adam
  25. Hey everyone, After reading the documentation and various topics here, I still have a few questions concerning Repeat Groups and tables. -Are Repeat Groups in submodels essentially copied tables, meaning the submodel gets passed a clone of the top level's table? I guess I'm confused because of this sentence in the Reference Guide: If data should only exist on the top level, why not just reference it from the submodel? Sounds like the reference is discarded for a copy, which contradicts the first premise? - Or is the Repeat Group a "Table of references"? In which case it still seems overly complicated to me, couldn't we simply pass the name of the table, without having to pass all columns? Alternatively, why not adding the ability to reference a table from a submodel in the form "Location.Parent.Model.TableName"? The reason I'm asking is that I have a model with many submodels, that all need to access a huge data table. If I'm not mistaken, Repeat Groups require you to pass every single column to every single submodel by hand, since selecting multiple submodels and right-clicking to choose "Select referenced property" doesn't work. I ended up creating a state variable that copied the data table, which I can access from the submodels via "Location.Parent.Model.ArrayName". Although the information is then 'pulled', this sentence adds to the confusion: I might be overthinking this, but storing information in an entity that is sent into an object passes information without properties as well? I'd just like to understand Repeat Groups and moreover I'd like to be able to use the Search Step from the submodel, which doesn't work with the array. I might give the find step a shot at this. Sorry for the lengthy post - any insights are appreciated! -Phil
×
×
  • Create New...