Jump to content

Search the Community

Showing results for 'entity api'.

  • 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. Let's see if I can elaborate... The following outlines the relevant characters in simio file "table_selection_by_name.spfx." Model->Definitions: Properties: OptionId (Entity Property, default=null) _SelectedTable (Table Property, default=tableOption1) States: RowId (integer, default=1) maxEntities (integer, default=2) ModelEntity->Definitions: States: _id (Integer, default=0) row_num (integer, default=0) temp (integer, default=0) Model->Facility: ModelEntity Types: Option1, Option2 Source1, Server1, Sink1 Source1->Entity Arrival Logic: Entity Type = OptionId (Reference Property) InterarrivalTime = 1 second Source1->Stopping Conditions->Maximum Arrivals = maxEntities Source1->Add-On Process Triggers->Created Entity = Source1_CreatedEntity Sink1->Add-On Process Triggers->Entered=Input_Sink1_Entered Model->Facility->Controls->General: OptionId = Option1 _SelectedTable = tableOption1 Model->Processes: Input@Sink1 Add-On Processes Input_Sink1_Entered: [Begin-> Tally(temp = ModelEntity.temp) End] Source1 Add-on Processes: Source1_CreatedEntity: ************************* [Begin->Decide1(IsOption1 = True)-> Assign(maxEntities = tableOption1.AvailableRowCount)-> SetRow(tableOption1, RowId)-> Assign(ModelEntity._id = tableOption1.id, ModelEntity.row_num = tableOption1.row_num, ModelEntity.temp = tableOption1.temp)-> Assign(RowId = RowId + 1)->End Decide1(IsOption1 = False)-> Decide2(IsOption2 = True)-> Assign(maxEntities = tableOption2.AvailableRowCount)-> SetRow(tableOption2, RowId)-> Assign(ModelEntity._id = tableOption2.id, ModelEntity.row_num = tableOption2.row_num, ModelEntity.temp = tableOption2.temp)-> Assign(RowId = RowId + 1)->End Decide2(IsOption2 = False)-> End] ************************* It is here that I could like to simply the logic using something like _SelectedTable instead of tableOption1 and tableOption2. I would like to know how to replace Source1_CreatedEntity's above step definitions with something like: [Begin-> Assign(maxEntities = _SelectedTable.AvailableRowCount)-> SetRow(_SelectedTable, RowId) Assign(ModelEntity._id = _SelectedTable.id, ModelEntity.row_num = _SelectedTable.row_num, ModelEntity.temp = _SelectedTable.temp)-> Assign(RowId = RowId + 1)-> End] But this replacement does not work. The following works, but I'm searching for a way to do this without replacing the column name with an indexed value: [Begin-> Assign(maxEntities = _SelectedTable.AvailableRowCount)-> Assign(ModelEntity._id = _SelectedTable.id[RowId, 1], ModelEntity.row_num = _SelectedTable[RowId, 2], ModelEntity.temp = _SelectedTable[RowId, 3] )-> Assign(RowId = RowId + 1)-> End]
  2. How do I access a table column by name using a table property defined for the model? In my model, I have multiple data tables each with the same named columns defined for each. Each table has a different number of rows. For a run or a set of replications, I want to select a table to use. I have defined a model-level table property named _SelectedTable to support this. During simulation runs, I want to access this selected table's data by row and column name. Specifically, I want to use this data to update model entity state variables. I also want to stop creating entities when all of the rows of the table have been accessed. I've tried two partial solutions to this problem (attached), but neither are ideal. 1. Create a large set of decide add-on processes to choose the decide the correct table and explicitly reference it by its name. This requires a lot of redundant steps and maintenance if tables are added or removed. The attached example contains just two tables. Controls OptionId and _SelectedTable must be set to either (Option1 and tableOption1) or (Option2 and tableOption2). The first control selects the Entity Type and the second selects the Table. 2. Using the column index number instead of the column name, I found I can use the table property to access the selected table. This method is prone to error if the table schema changes. It is also unclear which table properties, such as "AvailableRowCount" are accessible via this approach. The attached example contains two tables just as the previous. The control _SelectedTable chooses which table from which data is acccessed. In practice, the data tables will be substantially larger than the ones included in the attachments. Looking forward to constructive guidance, Ryan table_selection_by_name.spfx table_selection_by_column_number.spfx
  3. Note: WkA and WkB essentially do the same thing, so I'm essentially just explaining WkA on the seizing worker to make things simpler. What needs to happen: I need Wk1 to wait until WkA is at the output node before processing the entity. Then resume movement (to go to input of BPICK) only after the event of Output@APICKRiderWaiting (basically the processing finished; I found it only works when I use the wait for rider waiting). The same thing needs to happen with BPICK. Then Wk1 needs to head back to nRouter. Current State & Problems: Right now it does not wait to process the entity until WkA/B gets there. I have tried adding that as a row in the events more logic, but it doesn't work. I have also tried putting a Wait step with that as it's event before the other Wait. However, Wk1 still gets to APICK/BPICK and immediately the entity is processed. Wk1 does however work on not moving on until the entity is processed. One problem with that though is that Wk1 does not go back to nRouter after finishing at BPICK. I have tried several things like setting node, but perhaps I didn't have that step in the right place. Both entities have a destination by the way. This next photo is showing the seizing of the worker. The decide and execute steps refer to interrupting processes but all those still include the seizing step you see here. I have also attached my model in case you need to run or see it. It may be hard to follow all the logic on other add-on processes other than the ones I showed you. I have other problems in other areas, but this problem I'm posting about is not that affected by the other problems of the model I think. Though honestly, if you find that you may have a solution or fixes in basic logic to those (because its glaring) then by all means, share them. ((And yes, I have looked at InterruptibleOperator simbit as well as other Interrupting example simbits but am still confused on the whole thing.)) ModelForQuestionCOPY5v.3.spfx Thank you!
  4. Hello Insiders, I'm new to Simio and having trouble modelling the simulation for my Master Thesis. I would like to model an assembly line with two servers. Both have 3 fixed tasks and one shared task - which can be executed by server1 as his last task or by server2 as his first task. If the task is executed by server1 or server2 should be decided for every entity according to a rule (e.g.: if there are more than 2 entities waiting in the queue at Server2, the task should be executed by server1, otherwise by server 2.) Now I used the Processing Task Editor, where I modeled Task 4 at server1 with a conditional branch type, but I'm struggling to formulate the condition. Similarly, at server2 I would like to model that the first task of this server should only be executed, when the Task4 isn't executed at server1. I would really appreciate every help!
  5. I'm having trouble at the interruption step. Yes, I have looked at InterruptibleOperator, InterruptingServerWithMultipleCapacity, InterruptingAcrossMultipleServers. Despite all of that, I still cant figure it out. What I want to happen: Worker1 carries both entites and drops at respective servers (A/B PICK) and doesn't leave until processed. WorkerA/B stops whatever its doing (though it does not stop if transporting) and is siezed when Worker1 brings the entity to A/B PICK. Worker1 moves on and WorkerA/B does what it needs to. Here's the deal in WorkerA/B areas: The worker stays with an entity at serverA/B. Th worker can be interrupted at that process and go to A/BPICK to process the newer entity. The worker can't work on that newer entity right now because there is already an entity in serverA/B. So the newer entity waits at A/BPICK. At the gluing servers, the workers only have to get the entity into the processing state, but after that can go grab an entity waiting at A/BPICK and start it at serverA/B. Once the gluing process is done, it should be a priority to stop working at serverA/B and go take the entity at end of the gluing server to the sink. Then goes back to working at serverA/B. And the cycle continues. Here's a youtube video of what happens: Here's my add-on processes. I'm only concerned with A path because I can figure out B from A. ^ The idea was to turn the EntA at one of processes that are interrupted to yellow to symbolize the interruption of that entity^ ModelForQuestionCOPY4FORUM.spfx
  6. Hi LizMB, Without evaluating your model in detail, that error is due to a transfer not being completed (transfer request while entity is still being transferred previously). It is typically when you make use of a transfer step and either not end the transfer (using and "End Transfer" step), before transferring it again or when Simio attempts to transfer the entity (due to inherent worker/node/vehicle logic) before the end transfer is completed. It could also be if you interrupt something before a transfer action has completed. What also happens is when you have processes executing e.g. On-Entered and the same entity executes one or more such processes at the same time, resulting in a inherent transfer request before the previous has completed. It could be a matter of timing or the sequence of events, or a problem in your logic. When you are using a transfer step in your logic it is useful to have a process with an End Transfer step that is either subscribed to certain events or executed on an event triggered e.g. StationName.Entered. If you were to interrupt a process/action, you can either fire the trigger event or just use logic to test whether the entity has transferred. With an add-on process it is best to understand the sequence of events happening in the Simio logic and ensure certain logic gets completed first or that you don't have parallel requests at the same time. As you can see there are multiple ways to address something like this and your approach depends on your logic and the system being modeled. Good Luck. H
  7. Hi LizMB, I have a few specific recommendations for you below, but generally I suggest looking into the SimBit models provided on Simio's Support Ribbon. A PDF opens with each model that contains a detailed description, so they are a great tool for learning specific approaches and techniques. A few that I believe are related to your particular problem are "Moveable Operator", "Interruptible Operator","Keeping Worker Reserved", and "Entity Follows Sequence". Worker1 carries both entities to their respective nodes and leaves them in their respective stations after worker(A/B) "checks them" (I used a delay to simulate this check) and then Worker1 moves on. For this objective, I suggest setting up your drop off stations A and B as a Servers. Use the Processing Time property to represent the "check" while seizing both workers needed (see the Operator related SimBit for more information). Make sure all entities are assigned a sequence, so Worker 1 knows where to drop them off. The worker(A/B) only picks up the entity if needed. So if the worker was with another entity in process (like Srv(A/B)), he would go check the new entity so that worker1 can move on, but would return to finish out the first entity to the end. Assign entities that enter the pick up stations a higher priority, and interrupt the Workers at SrvA and Srvb if a pick up task arrives (See Interruptible Operator for more information). Ensure that the Workers have the needed paths to travel to all of the destinations required in all directions. Currently, WorkerA and WorkerB cannot travel to the Outputs of the Servers. Other suggestions: Look into using a Timer Element that could trigger the entity creations at SrcA and SrcB. That should remove the need for Source1 and Sink1. If the Worker's travel doesn't need to be defined by a path, I suggest setting the Initial Travel Mode to 'Free Space Only'. The error message you are receiving is related to the Add-on Processes on the A and B nodes. Whenever Worker 1 enters either of those nodes the process is triggered and tries to complete the process with relation to the Worker. Restructuring the model with Servers in this area should help you get around this issue. Thanks, Ryan
  8. I'm having some trouble with worker actions and transfer steps. Below is a picture of my current model. I have also attached the simio file itself. What I want to happen: Worker1 carries both entities to their respective nodes and leaves them in their respective stations after worker(A/B) "checks them" (I used a delay to simulate this check) and then Worker1 moves on. The worker(A/B) only picks up the entity if needed. So if the worker was with another entity in process (like Srv(A/B)), he would go check the new entity so that worker1 can move on, but would return to finish out the first entity to the end. My problem: Worker1 doesn't wait for the other workers to check and move on, just puts in station and moves on. I can suspend and resume the processes and get the worker to the (A/B)PICK nodes, but the worker picks the new entity up and starts that. The entity they were working on before just vanishes or something. Then everything becomes a standstill. Lastly, I run into this transfer error so much, and can never figure out exactly what causes it. ModelForQuestionCOPY2.spfx
  9. Good day, I have a tally statistic element that contains random values (in my case, the time to process an entity based on many factors which are also random). I was wondering if it is possible to access the values of the tally statistic individually, or in the broader sense, as I am trying to plot a curve from this single tally statistic. Thank you in advance. Eduan
  10. Hi guys, I have a problem with an entity not reading everything from the table. It is skipping some rows. BACKGROUND Two entities are reading from two different tables at the same time using two different processes. And I am using a Search step, TableRows for both. I don’t know why it skips some rows. please help
  11. Hi M_A, Just setting the Sequence property to 'Sequence1' should be enough since you set up relational tables. Because you have Maximum Arrivals set to '1', it is going to produce 1 entity type. I would switch your Maximum Arrivals to '35' and number of entities per arrival to '1'. You will also need to set your interarrival time to '0', so all 35 show up at the same time. It might be best to use a second Source object to create your second shift. I would increase the length of the Ride Station Queue in order to see all 6 passengers boarding the Vehicle. I think the network is fine, but hard to debug. Be sure all travel destinations for the Vehicle are possible. Thanks, Ryan
  12. Hi Ryan, Thank you for the corrections. As always, spot-on advice, that is very appreciated. I do have a few follow up questions. - Do I set the Initial Sequence property to 'Sequence1' or do I need to tell it the row too? 'Sequence1.Sequence'? Sequence 1 is working, but just wondering. - In the SimBit, Entity Follows Sequence With Relational Tables, there are three types of Entities that all flow through the same source with the Source Property, Table Row Referencing, pulling from the JobTable with the Row Number 'JobTable.ProductMix.RandomRow.' For my model, I have two different entities and the source Bldg is supposed to pull BOTH entities with the Table Row Referencing, "JobsTable" with Row Number: "JobsTable.NumberWorkers.RandomRow." But when the model is run, only one entity is ever used. The Table has an ExpressionProperty of Random.Triangular(3,6,9). Is that the problem? The SimBit's table was an actual number. I tried replacing the Expressions with actual numbers and the Entity switched to use the other one but I am still not able to get half the 34 to be one Entity and the other half to be the other Entity. - How do I get the Vehicle to carry its max capacity? The capacity is set to 6, and it only carries up to 4 entities around at any time. This is incorrect, as the Entities are supposed to be grouped into work teams of Random.Triangular(3,6,9) for their initial Source output move. Afterwards they can be individuals or work teams. The Bldg has the Entity Type defined as the JobsTable.Specialty so it should pull from one or the other (like the below mentioned SimBit), and the with Entities Per Arrival Set at 35; and the Entities themselves are set to a population maximum of 17 each and I get a Runtime error of maximum number exceeds limit for the entities. Why doesn't it hit the limit and then pull from the other Entity? - I'm confused about the network you mentioned above. I thought the nodes had to be linked directly (output to input node). So the busy nodes have a lot of paths radiating out from them and it makes it a little messy. Is there a cleaner way to show the routing? Thank you,
  13. Hi M_A, The sequences in your table are never assigned to the entities before or as they are created. Assigned the sequences by selecting the entity instances in the Facility view, and set the Initial Sequence property under Routing Logic to 'Sequence1'. Also, the Entity Destination Type property on all of your Transfer Nodes, including the outputs nodes of all Servers, must be set to 'By Sequence' in order for the entities to follow the sequence appropriately. Here are a few other things I noticed while looking over the model: All of your Servers only have the capacity to process 1 entity at a time, so for your case only one employee can work in that area at one time. As soon as each employee is done working they will request a pick up 1 at a time. May not be what you are looking for here. The processing times at the Servers aren't linked to the table. You can link them by setting them to 'Sequence1.ProcessingTime'. Be sure to set the appropriate units in the column properties of ProcessTimes. It is hard to see the network that is available for the Vehicle, so one more thing to check is that the Vehicle has all of the needed paths to pick up and drop off the entities. Thanks, Ryan
  14. I have an application where a single entity gets worked on by two different operators at the same time with different completion times. This occurs on 10+ workstations in the flow line in the application. What is the best mechanism to model this in Simio? Ideally, I would like to be able to adjust the processing time of each operator to engage in line balancing, and the ability to create standard WIP processes. Thanks, Aytac
  15. Thank you gocken. The only problem is, that I have to look for the IntegerProperty1 in table 1, because Entities can be mixed within these parts. I can't just look for one EntityType, but release all entity of that particular stream.
  16. Hi Mirek, I have managed to do something. In this version of your model you have the ability to enter the entity type to be generated via a stringproperty of model. Then, the right entity type is generated and follows its own task sequence. Note that, I included the logic into onruninitialized process (to see whether it is operating as it is intended). You can move this logic into your own process and trigger anytime you want. By this way you are allowed to change the entity type whenever it is required over the simulation run. Hope this works for you. Create Entities of certain part of ArrivalTable.spfx
  17. "And, in facility layout you can set date time property of the model to 11.5.2020 00:00:00 for generating entity A or 11.5.2020 00:00:01 for generating entity B" how do you mean that?
  18. For a quick solution to your problem for now you can try to define a date time property in model and then set different values to different entity types in table1 date time property column. For example, set date time property as 11.5.2020 00:00:00 for entity A and set 11.5.2020 00:00:01 for entity B. And, in facility layout you can set date time property of the model to 11.5.2020 00:00:00 for generating entity A or 11.5.2020 00:00:01 for generating entity B. Is it possible? If you want to try this option you should not use my previous approach then.
  19. Hi Mirek, I think the problem here is your setting arrival mode to arrival table. I am not sure but after generating right entity the source object then assigns it row according to the arrival table which means row 1. Then the right entity (B) follows the wrong task sequence. Try by setting arrival mode to interarrival time. This time it should follow the right seqeunce. I will try other options and inform you if I get any other solution.
  20. Thanks again for your help. There you have the attached model. There you should see that the refernce to the TaskSequenceTable does not work. The right Entity (B) gets created but it points to the TaskSequence of Entity (A) Create Entities of certain part of ArrivalTable.spfx
  21. 1) ProductMix 2) Orders, where I want to pick one OrderStatus with your approach 3) Each Entity has its own TaskSequences listed in this Table It seems that the approach is working to pick the correct Entity, but it seems like the references to Table 3) are incorrect since the Entity C somohow gets the TaskSequences of Entity A.
  22. Hello, I have a Arrival Table, but I only want to create Entities of a specific part of the Table based on a property. IntCol Entity 0 A 0 C 1 B 1 c So, the source should create all entities with a certain integer in column 'IntCol'. The integer value is assigned by a referenced property that I can experiment with different parts of the ArrivalTable For example: If Property == 0 , create only A and C in the source. How can I do that? All the best
  23. Hi M_A, 1. This is one is a bit difficult to provide direction on without seeing how the rest of the model is structured. If all your processing times are deterministic and you are using a sequence table to route your entities, then you should be able to add the lunch break into the sequence. Similarly, make sure the sink is included at the end of all your entity sequences. Also, make sure the model run time is long enough to process all employees. That may be why they aren't showing up at the sink. 2. Change your interarrival time to 12 hours, and set your Maximum arrivals to 2. Thanks, Ryan
  24. Hi - 2 questions: 1. My model has people coming on shift, being transported to various locations, and then ending their shift at the sink near the source. However, I need them to get picked up and have ALL cycled through the lunch break server. Right now, out of the 35 people on shift, only 1 person got lunch, and only 6 people had their end of shift. How do I constrain the server to ensure the vehicle drops everyone at the lunch server and then the EndOfShift? 2. I would like to model 2, 12-hour shifts (each with the 35 people). I need all 35 to show up at the same time. This is my source Entity Arrival Logic. How do I change it to have two sets of 35 show 12 hours apart?
  25. To answer your question specifically with regards to the MultiEchelonSupplyChain example, the OnReplenishOrder process that you see in the process logic of the data table driven example is automatically executed by the Inventory elements when the inventory detects the need to replenish. Go to Definitions -> Elements and click on the Inventory elements and you will see where that process is being referenced. The ShippingReceivingLogic process is being executed when an entity enters any of the BasicNodes placed in the Facility View. For example, click on the DistributionCenter node and in the Add-On Processes -> Entered property you will see the name of that process befiling referenced. The TryFulfillOrder process is executed by the OnCustomerOrder process using an Execute step, which is in term triggered by a customer order arrival. Note that If you are trying to figure out where the name of a process is being referenced, you might go to Project Home in the ribbon UI and go to the Search window. And then search for the name of the process in the model, and it will show you the locations where it is being referenced.
×
×
  • Create New...