Jump to content

Search the Community

Showing results for 'buffer "transfer node"'.

  • 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. Good day everyone, I need to acess the average waiting time in a member input buffer of a combiner. First of all, how is there not an easy option to acess average time in queues? Most of the times I have to tally everything, which in turn doesnt work with experiments... It has been a real struggle. Anyways, I was using the approach of using an entyti state variable to record the time when it enters the member queue and another one to register when it leaves the given queue and then tally it. The problem is with combiners, the parent entity "wins" and so using ModelEntity.State Variable - reffering the one from the member - does not work. Any ideas? Thanks
  2. Hi, I made a simple warehouse-retailer model with a source(warehouse), two servers(retailers), and a sink, where the entities(products) are carried from the source to the servers using a single vehicle. The current capacities(demand value at the retailer) of the servers changes after a specific time interval(12-hours and simulation run time of100 days). The Input and Output buffer capacities of both the servers are set to zero. The vehicle leaving the source (Home node) returns back only after serving the respective current capacities of the servers one after the other. As each entity enters the server, its capacity is reduced by 1 unit ultimately reaching zero-current capacity when the full capacity is served. The problem I encounter is that sometimes after my vehicle leaves the source, the current capacity value of the server changes and the new value might be smaller than the previous current capacity value. So my vehicle stays at the input node of the server with the extra entities carried until a new current capacity value is assigned, instead of moving to the next server with whatever entities are left in the vehicle. I don't intend to change the vehicle speed or time interval for capacity changes to rectify this issue. For example, the current capacity values of the servers at time period 1 are Server 1 = 10 & Server 2 = 12. So the vehicle carries 10+12=22 entities from the source to the server 1. Now while the vehicle is moving towards Server 1, if the current capacity changes to Server 1 = 8 & Server 2 = 12, the vehicle stays at server 1 after serving the 8 units and the remaining 14 units stays within the vehicle instead of moving to the next server to serve its capacity. Screenshot of the model is attached. Could anyone help me with this issue? I would really appreciate your support as I have been trying to fix this issue for a while.
  3. You need to search the queue when the server goes off shift (Search Block_Queue), and Transfer the Students back to the Decision making node (Transfer Block -> Make Sure its the last block in the process). That is the easiest fix, other than setting the input buffers to zero.
  4. Greetings! I have this problem and I'm probably doing something wrong. I'm trying to use the Find Step to make my entities look for the closest server through the DirectDistanceTo Expression. This Process is triggered when the entity enters a Transfer Node. Based on these screenshots, can you tell me what am I doing wrong? I'm almost certain the Search Expression is incorrect. Thanks!
  5. First define a real state variable to your modelentity named "livingtime" after its creation. Then make a copy of your modelentity and send the copy of modelentity to a process (maybe called as death_process). Place a delay step and set delay time as modelentity.livingtime. Of course the original one should go its way. Then place a search step and find the original modelenity in the system when the time is up at delay step (while finding the original entity you should set a match condition such as candidate.modelentity.ID==modelentity.ID etc. I am not sure whether the ID's of both entities are same, you should try. If it does not work you should try to match creation times of them (both should be same) or any other user defined state variables or properties). If the search is succesful make necessary controls (i.e., if it owned any resource release them etc.) by placing necessary steps following found branch. You should remove and transfer the found modelentity (it is the original one) to appropriate place. At the end you should place a destroy step following the original branch or even transfer it to appriate place. It depends on your goals.
  6. It seems the best way to achieve to what u want is to define three storage elements (called barstorage, gridstorage, sheetstorage) just before the combiner object or combiner node. Whenever an entity is put into any of these storages check the the condition u defined (i.e., exactly 4 bars, 4 grids and 8 sheets are exist in the individiual storage) is valid. If the condition is satisfied remove appropriate number entities (exactly 4 bars, 4 grids and 8 sheets) from appropriate storage by using search and remove step and transfer them to combiner object from standard library (or even combiner node object you get from forum) to combine them all. Else wait for the condition to be met. By this way you are able to collect some extra statistics from storages (averge waiting times and average number of each materials in the storage etc...).
  7. The vehicle Routing Type would be 'Fixed Route' and the Route Sequence to 'SequenceTable1'. Set the initial value for the VehiclePath state variable to '1'. Also, within BOTH of the transfer nodes exiting the servers, within the Entered add-on process, add a similar process to the above (Decide/SetRow/Assign) to look at the output queue size, the current setting for the VehiclePath, to SetRow to the appropriate sequence table, and then Assign the VehiclePath to the current sequence table used. Let me know if you have any additional problems.
  8. As far as I understand I included my solution approach. You may wonder that the included logic does not seem work (it will always increases the capacity but wont decrease it). This may be due to your servers processing time or on/off shift schedules. I mean that in order to see how it works you should increase capacity by some predeterimed number (i.e., 10. Currently it is set to 1) and decrease it one each time any entity enters or departs waitingarea1 node. you may also increase run time to further see what happens. I hope this one meets your requirements. Still it will inspire you. NOTE: You should note that the unit time conversions and your problems' values. The logic triggers capacity increments or decrements each time an entity enters or departs from waitingarea1. Note also that waiting times are calculated as averages of those who wait at waitingarea1 transfer node throughout the simulation run. pharmacy_candidate solution.spfx
  9. I included a renege logic to hotfood server (see buffer section) and also an add on process at entered add-on of hot food. The renege logic will send the entities waiting at the queue of hotfood after customercapacityformeal state variable is exceeded to the reneged sink. also, add-on process will enable customer to be sent to to the reneged sink after they entered the input buffer of hotfood server. customerspreadsimio.spfx
  10. Hi, Currently modeling 2 assembly lines that are identical. They have 1 source that sends Batches of Segments. How our system works is that 1 order has multiple batches, so to identify them, we added the same order number to them. https://imgur.com/a/V971F Even though the 2 assembly lines have the same machines, they operate different batches, which can be identify by the diameter of the order. If Orders are "= N" they will go to Assembly line 1 and 2. If Orders are "=Y" they can only go to Assembly line 1. I'm using a transfer node to distribute the batches into the two assembly lines to maintain max usability in both lines. The path that are from the Source to the first server and from the Transfer Node to the first server have the diameter constraints. https://imgur.com/a/9h7Kp The problem I'm facing is that the transfer node seems to be separating orders that have the same number to both lines. For example order 1234 has 10 batches, 5 are going to line 1 and 5 are going to line 2. I need, per customer request, to have all batches with the same order number be processed by the same line. Is there a way to constrain the transfer node to keep Orders with the same number together? or a Add-on Process that will allow me to do so?
  11. subclass a workstation object, override perform teardown activity process of this subclassed object then at the end of the process steps (before the transfer step) use only one create step then assign the type of the created modelentity to swarf (place an assign step to the end of the created branch of create step and also tie this branch to the transfer step if it is required) and assign the original modelentity type to part (if it is required)... this will ensure that all of the operations (setup, processing and teardown) occur on the single part, and THEN two separate entities are made?
  12. Regarding #3, it is correct that by default when a Server goes from off-shift to on-shift that all entities which have already been allocated Server capacity will simply continue processing (even if the scheduled capacity is less than the entities already using the Server. The server's scheduled utilization will be greater than 100 during the time period when it is working over scheduled capacity). Similarly, suppose you have a Server with scheduled capacity of 5 that has 5 entities currently processing on the Server, and the scheduled capacity is decreased from 5 to 4, that capacity decrease does not by default suspend the processing of one of the entities on the server. All 5 entities continue processing and the server's scheduled utilization will be greater than 100 during the time period until at least one of the entities finishes and releases the server. If it is important for you in a model to never have a server being utilized above scheduled capacity while on-shift, then you might add some Interrupt step-related process logic to your model that essentially kicks entities off the server whenever capacity is decreased. The interruption logic will make the entities release the server capacity, store the remaining processing time, and transfer the entities from the processing station back into the input buffer to have to re-seize. You would have control over selection of which entities are desired to get kicked off and of course if having to re-seize the Server then the server's allocation ranking and selection rules would be applicable. The SimBit 'InterruptingServerWithMultipleCapacity.spfx' might be looked at to see an example of interrupting entities on a server, saving the remaining processing time, and then transferring the entities back into the Input Buffer of the Server to have to re-seize capacity in order to continue processing.
  13. Most simulations are "push" -- as soon as a part is done, it pushes on to the next server where it waits for processing. It sounds like here you are looking for a "pull" system -- each part remains where it is at until it is pulled forward to the next server. There are several ways to implement a push system - detailed process logic is probably the most difficult. A better choice is generally to use a resource or event to control the timing. Exactly where parts wait can have a significant effect on the logic required. For example should the part be blocking its current server? wait in its output buffer? wait somewhere else? When you have parts waiting in multiple areas it gets a bit more complicated. --SimBit CONWIP is not exactly what you are looking to do, but it does illustrate how to use events to implement a pull system. --SimBit OverflowWIP illustrates using resources to pull appropriate parts from one of two locations to one of two locations, as needed. --Because you have parts waiting in multiple areas to go to multiple areas, you might want to use a slightly more advanced feature named CustomRoutingGroups. There is a SimBit of the same name. Esentially you will create a RoutingGroup (an element) to define what choices an entity can consider, ranking, and the conditions under which it moves forward. Then for each related node (like the two enfriados outputnodes, you specify EntityDestination to be that custom routing group. One key is to make sure you use the Blocked Destination Rule of Select Available Only -- this forces the entity to wait at the node until it is "pulled" forward to an available server or queue location. For any of these approaches I suggest you read up on it in help or a textbook, then review the SimBit. Happy modeling!
  14. You can use two Create steps within a process to create two different types of entities and simply destroy the original entity when you no longer need it. Assign step can be used to assign information to the new entities that you may wish to transfer from the original entity.
  15. Cant open your model as I have a commercial license but it sounds like a similar problem I had. On the input buffer of each server, set the capacity = 0. Also, instead of using a storage queue, try using a system like the attached. You need to set the currenttravellercapacities of the paths feeding the servers to 0. Now, when an entity arrives at the node, park the entity. This will transfer the entity to the nodes parking station. Once capacity becomes available on a server, use a search block, based on any server's criteria to search the parking station for the correct entity. Once found, you need to set the currenttravellercapacities of the path feeding the servers to 1 and unpark the entity found. Unfortunately Simio does not have an ExitRankingRule for the queue.
  16. I suggest using Node Lists column in a table (see attached example) instead of using a sequence table, I setup a routing table with steps (representing sequences). The route table is a child of the entity table. The sources in the model are setup to reference row 1 of the entity table in Source1 and row2 of the entity table in Source2. Each step in the route table is associated to a node list....The node lists represent the "OR" condition. If the node list has Input@Server1 and Input@Server2, the transfer node will use the list to either sent it to Input@Server1 or Input@Server2 based on the selection goal. In the attached model, the selection goal "Smallest Value" and the selection expression is "Candidate.Node.AssociatedStationOverload"....This represents the sending the entity to the server least available input buffer capacity. I think this handles the scenario you explained. As for integrating with OPC, I would suggest looking at this example: http://www.simio.com/forums/viewtopic.php?f=12&t=1381 It shows how to build custom steps and firing events using .NET code. If you wanted to communicate with OPC, you would use a custom step to read the OPC server. If you want the OPC server to interact with Simio. you would call a custom event. It is possible to setup the same of integration with an ERP system; although it is not recommended. For ERP integration, I would recommend using a data table with data binding. Since the data in an ERP system is much more static, it can be loaded at the beginning on the model run. Then the data can be referenced in the data table during the simulation run. RouteByNodeListsModel.spfx
  17. This is a very cool library, i have built two very simple examples to test before using it in a simulation in which they will represent Ship to Shore Cranes. First of all, it took me a moment to figure out that "entity destination" on my home node for the crane has to be set to "specific", can this work using "continue" ? Now, on attached example 1, the Crane picks the entity and will wait for an available vehicle to make the transfer, building a queue in the home node for the crane if there is no available vehicle. This is great since it reflects what happens in the actual operations, the crane waits for a truck to be below the crane to drop the container. crane_example1.spfx But there may be interest in simulating the crane dropping the entity into the floor and just keep unloading the ship, this means i now want to drop the entity without the vehicle being available. Is it possible to control this behaviour at will? I was looking for the option of an input buffer of some sort but for now I just add a normal node and allow the crane to drop it there it will build a queue waiting for the vehicle, this can be seen on example 2, I appreciate any ideas, crane_example2.spfx also, I tried scaling the elements and it gave me an error on height, so I was wondering what should i take into account when scaling (changing size) of this elements? I will take a screenshot next time I encounter the error. finally, I will be using this element in my simulation, and i was wondering what are the thoughts on "tulach" question: "5.) Crane and other crane components do generate a lot of data in trace. It would be nice to have possibility to swich this off just for some steps inside crane and co. I used it in a model that has a simulation time of 1 month and this made my trace impossible to filter and analyse." thanks best regards
  18. Hi farnaz, in fact, you should be checking your buffer at the beginning of the period 10-11. If all machines stop at 10, entities will stop flowing shortly after. Therefore you could check around 10:05 or somewhere around the beginning of the period. To do so, you can use a timer (Definitions>Elements>Timer) and set it to occur every 24h with an offset of 20h05m (10:05PM)). Then, have a process being triggered by that timer. In that process you would check if the input buffer was empty or not (Server.InputBuffer.Contents==0). You can do that using a Decide step. If the condition is false (there is something in the buffer) change the resource state + Capacity of the server so that it processes said entity. For it to work for another hour you could set another timer or use a paralell process with a delay of 55min. At the end of that time you would turn off the server again. Hope this helps (I haven't tested it to be sure it works)
  19. Hi, I have a few servers and paths in my model. I am trying to queue up my entities in the input buffer of server1 when there are too many entities at server2. I am able to set server2's capacity to 3, but I can't seem to set an inputbuffer capacity to server2. I thought I can set the selection weight on my path to server1 to say math.if(server2.inputbuffer.contents>1,0,1), but that doesn't seem to work. I can't seem to find any SimBits on this either. Any help would be appreciated. Thanks.
  20. Depending upon your model logic, you may wish to use the Add-On Process Triggers in either a TransferNode/BasicNode object or a Worker object. If the worker's desired speed (which can be accessed with the WorkerName.DesiredSpeed state variable) changes at various transfer nodes in the model, you could use the Worker's Entered Node add-on process - then within that process, have a Decide step (or multiple ones) to check the node name, destination node and then Assign the desired speed as appropriate. If the worker's desired speed is pretty constant except for a few occasions, you could instead have the add-on process at a specific TransferNode through its Entered add-on process, where you already then know the location and just have to Assign the desired speed as appropriate (or perhaps Decide where the worker is going via destination node and assign).
  21. Is there a way to know how much of a conveyor is currently in use? It can be in % or in actual meters. In short, it's important for a vehicle to understand whether he should transport an entity that is going to that conveyor or skip that one and transfer other entity that is going elsewhere. Thank you for the attention
  22. There are several ways of doing this. One way would be to write out (to a external spreadsheet OR an output table in Simio, depending on your Simio licensing) the exit time for each entity (and perhaps other entity specific property information, such as priority, etc. Then, you could use that same file (or copy of the output table results) as an input file for your second model. Alternatively, you could place each of these 'models' into a third 'model' in the project and connect them. This would require several changes - the first model (with the Sink output) would require the model to simply have a Transfer Node output - and then right-click the Transfer Node and select 'Bind to New External Output Node'. This will allow that model to then become an object in another model. The second model would also need to be revised to include a Basic Node input (instead of the Source input) where you would right-click on the Basic Node and select 'Bind to New External Input Node'. Finally, you would select New Model from the Project Home ribbon to start building your 'combined' model. On the left side of Simio, instead of selecting from the Standard Library of objects, you would select your Model1 and Model2 objects from the Project Library at the bottom. The TransferNode of Model1 can then be connected to the BasicNode of Model2 with a path. That is the basic concept - you may wish to look at SimBits under the category 'Building New Objects / Hierarchy' for more information.
  23. Hey, I am modeling a system that has a large number of stations (e.g. 50). I created a Data Table with as Element column related to my Stations. I am transferring entities from a Source (and later from a Node) to the Stations and therefore I need to End Transfer. I would like to do this "automatically". That is, I don't want to create 50 processes where the triggering event is StationName.Entered I was trying to use the information from my Data Table: TableName[RowNumberRelatedToStation].ColumnNameOfStationElement.Entered I had a status label for: TableName[RowNumberRelatedToStation].ColumnNameOfTheStation. And this is actually showing the name of my Stations correctly. However, TableName[RowNumberRelatedToStation].ColumnNameOfTheStation.Entered is not working to trigger my Process to End Transfer. My guess is that Simio is converting the information into String and not Element and, hence, it does not recognize that Station.Entered happened. Any ideas if this should work or how can I make it work? Also, any other idea about how to End Transfer automatically are welcome. I have a solution that work, but I think it is an "ugly" one. So, I thought about asking if you may have a better solution.
  24. Let add the Decide step between the Search and Transfer step.
  25. Thank you for this suggestion. I was trying to add a delay in the RunInitialized process for the vehicle object, but I did not know how to make it proportional to the index number for the vehicle. As you suggested, I put the delay in the OnRunInitialized for the whole model and then repeated the Create-Delay-Transfer sequence until the current number of vehicles matched the number I wanted.
×
×
  • Create New...