Jump to content

Search the Community

Showing results for 'tally wait times'.

  • 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. Hello, I am new to Simio and am having trouble with altering process times which differ according to the Model Entity. First, a little more about the background of the problem. I am trying to model a call center and have 12 different Model Entities that move through Free Space according to a sequence table. So for example, as part of the model I want a single server called "Sales" but there are three model entities that eventually end up at that server, but each is processed differently. Could anyone suggest a method to model this phenomena that doesn't involve adding additional servers? Thanks. Kevin
  2. Hello, Is there any way that I can use data that I have pulled into Simio from Excel to be used as processing times for a server?
  3. I want to have a source that creates one entity of each part type everyday. The total number of different parts in the system can vary and the user must define a priori. That is, you can have 1 to N different types. Then I want a server that will use the info from a table that contain the process time info for each 1 to N types and the server will use this table to process the entity based on their corresponding process times. I want to do this by placing only one one entity type, one source, and one server. The table will be populated with as many rows (N) as needed a priori. Thanks
  4. Hi, I have 6 entities arriving at exactly 8am each day. Each of the 6 entities will create a certain number of entities on arrival from their respective distributions. How do I model in my source? I cannot have multiple sources as each entity has its own server processing times. Please can you help? Thank you
  5. Hi, I would like an entity to wait at a certain transfer node until a server is idle. I know I am supposed to add a process to that node that says that, but I couldn't come up with an expression. Thanks in advance
  6. Hi, First, I would like a source to be able to send two different entites at a certain order, and stop. All the learning material about this is on a probabilistic basis, but in my case, it should be deterministic, such as, entity1 first, entity2 next and then stop. Next thing is, I would like a server to apply different processing times to different entites. As I said above, learning material explains how to do this in a probabilistic manner, but don't say anything about deterministic cases, where it should be easier, yet it is not. Thanks in advance.
  7. [EDIT] Hi all, I am modeling a restaurant, where orders are placed until 22:00. The preparation of these orders takes approximately 20 minutes (it can be more or less due to the probability distributions involved). I have some workers whose schedules are from 10:00 to 22:30 and they prepare these orders. The problem is the following. Suppose that it's 22:30 and there are still some orders in the queue. Since the worker's schedule ends now, those orders can't be processed and will remain for the next day. This obviously does not happen in a real-life restaurant. So if at the end of the worker schedule (22:30) there are some orders in queue, I would like to extend the schedule until all orders are met. The problem is I don't know how long it will take the workers to prepare the missing orders, so I can't suppose a certain time needed to complete the orders. I have to wait that the last order is prepared to set the end of the working day. How can this be done? Thank you in advance, Marcel Favereau
  8. I have a source, called forklift source, that has a varying interarrival time based on the time of day. To do this, I created a time indexed table with the different interarrival times in different rows and the interval period set to one hour. This source also depends on the interarrival time of another source called Newtrucksource, but not on an hourly basis. I am trying to conduct an experiment where the interarrival time of newtrucksource changes with different experiments and a different time indexed interarrival table for source 1 is used for each of these different interarrival times. To do this, I created a real property for newtrucksource's interarrival time and a table property for forkliftsource's time indexed interarrival table. However, I can't get this to work because in the model, the interarrival time property for the forkliftsource must be a "number" and I am referencing a table which comes up as using "string". Trying to find a way to make this work.
  9. Is it possible to implement a wait step that either waits for a specified time, or for an event to be fired (which ever comes first). I hacked together a model where I execute a process before the wait step, that delays for the time and fires an event. I then simply listen for either event at the wait step. I don't think this is very neat. Is there a better way? I can see there are timer elements, but I don't see how you would invoke one simply to act as a countdown.
  10. Hello, Storing this information in a Data Table and using a Search step might be the best approach. The Search expression will probably need to look for a specific Group and also check that the MaterialName is in stock. If the Table is listed in priority order, you will need to just Search forward until the criteria is met. You will either need to execute the Search step a few times and have a variable for the Group letter, or just have three separate Search steps specifying the exact group. Liz
  11. Hi Jim, May be there are many possible ways to follow to get the information you want. But, I suggest you to use a search step for searching a server's (or any other object's) processing queue to get such information. You can search not only the server's processing queue but also the whole "entity population" to get whole state variable's defined on them at any arbitrary time thoughout the simulation run. All you have to do is to define additional expressions on search step. In the example file attached a simple model is developed to get entities' state variables residing at server1's processing queue. Here note that, you have to click button at arbitrary times. Then, if 3 or more entities exist at server1.processing queue, the search step founds the first 3 of them (since a forward search is performedin this sample model) then later an excel write step writes entities created time (you can get many state variables of entities written on the same excel file). You can change search limit, queue state name, include a match condition etc. If you want to get such information at the beginning or at the end of the simulation run you should use this same logic at appropriate processes (onrunending, onruninitialized etc...). Also, you can get these information written on either a database or an output table as well. Hope this helps? getting a snaphot of Entity WIP via a button.spfx entities_processing.xlsx
  12. Since I am not allowed to save my changes on your file directlt I am not able to upload your revised model. But, it is so simple to follow the steps to get what you wnat. First delete all your processes in your model and only for Volvo server define an afterprocessing add-on where you should include a decide step, an assign step and a wait step (see the attached file). Then, 1) set decide type as conditional and set its condition as: (M1.Capacity.Remaining > 0 && Input@M1.NumberTravelers.RoutingIn == 0) && (M2.Capacity.Remaining > 0 && Input@M2.NumberTravelers.RoutingIn == 0) && (T4.Capacity.Remaining > 0 && Input@T4.NumberTravelers.RoutingIn == 0) 2) at assign step set state variable as: Volvo.ResourceState and set the new value as: 2 (setting this to 2 will block the volvo server) 3) at wait step set event name as Output@T4.Entered. I hope this works for you.
  13. Hey, I want to store information of each entity in a data table with tally statistics. I looked at the TallyStatisticsInTables-SimBit and implemented all steps in my model. My Tally Step stores the current NumberInSystem of my entities. So I created a data table with one column 'Entities_NumberInSystem' (Type Tally Statistics) and a TallyStatistic named 'EntitiesInSystem' which I referenced in the first row of my data table. The Tally Statistic Name in the Tally Step is set to 'Table1.Entities_NumberInSystem'. When I want to simulate my model I always get an error message: 'Error evaluating the value of property 'Tally Statistic Name'. Invalid data table reference Table 1.' Where is the problem? Could you please help me?
  14. Hi again Liz. I found the problem but it wasn't easy to figure out with the RowForKey formula. I used the search function with tablerows as collection type. When I filtered the trace on the search and tally process, I found that the the table index of the found item and index of the search function was not the same in some cases especially for "small" type products. Further even the available row count of the products table was not returning the correct number rows in the table. The products table has 810 rows but it was finding 197 rows only in the search function. I had a separate "productsize" table which consists of "size" key string property and some other real type properties such as forklift capacity for each product size. I had used this productsize.size as foreign key in my main products table. I figured that the search function automatically filters to the products those matches the size of the product eventhough in search function match condition I only write ModelEntity.EntityType==Products.ProductName. When I removed the foreign key from the products table the problem was solved. Thanks for your help anyway. It was very useful and saved a ton of time from me.
  15. Thanks you so much for you help Liz. That's such an advanced modeling techinique I had never heard of before. I would never be able to figure it out myself. It has almost worked but correctly. It has recorded the results for some tallies correctly but recorded some tallies on the wrong tally. I think there is a problem with the set row feature somewhere. I have no problem with setting rows elsewhere in the model such as arrivals from production and arrivals from truck tables create entities correctly with all their state variables. The product list table also has unique "productnames" (entity instances), set as key and auto set-row property is set to true. I have added another coloumn with element tally statistics reference (DistanceOnForklift) to products table. I have auto created it as you suggested and turned on the auto-set row feature to true. Both my product names and tally statistics coloumn are set as key in same "products" table. But the tally step still doesnt record them to the correct tally statistics. Where am I doing wrong? Would you still be able to help me? Shall I send you the model in private message? Here is the formula I have inputted 'Products[Products.ProductName.RowForKey(ModelEntity.EntityType.Name)].DistanceOnForklift' and in the picture below you can see that tally step records into wrong tally element on last three entries. I would be glad if you could help me.
  16. I would recommend using a Data Table. One column could have all your entity types defined. The next column could be a Tally Statistic Element Reference Property. This column would match up the Tally statistic you want to correspond with the Entity Type. You could choose to auto-create these Tally Statistics from the Data Table. If you change the Tally Statistic Property's column Reference Type property from 'Reference' to 'Create', this will make the Tally Statistics for you. I recommend the Help page "Table-Based Elements (Auto-Create)" in Simio for more information. If your Entity Instances noted in the Data Table are unique, no duplicates, you can set that column as a Key. With that column as a Key, you could use just the Tally step and use the RowForKey expression. RowForKey will allow a key input to search for in that column. If the model entity is driving the process, you could use an expression like this for the Tally Statistic Name 'Table1[Table1.EntityInstanceProperty1.RowForKey(ModelEntityReference)].TallyStatisticProperty'. Since it seems this process will be on the OnRunEnding, it will not have a reference to a specific entity, so you will most likely need a Search step to find the entities still in the system. I would set the Search step to find Infinite things and let each entity reference exit on the found branch. If the EntityInstanceProperty column in your Data Table has the Auto-set Table Row Reference property to 'True', the entities will already know the row reference and your Tally step Tally Statistic Name property could be 'Table1.TallyStatisticProperty'.
  17. Thank you so much Liz! I understand exactly what you mean. However we thought that using Tallies would give more correct results for the average value calculations. I am also thining that running and add on process on "run ending" would allow me to calculate the distances statistics for all the entities even if they are not destroyed. Now I know how to calculate it but there are around 800 different product types. So I have to write 800 if conditions saying if decide, entity.type.name == "A" is true, Tally "distanceonforkliftA", on false exit, if decide entity.type.name == "B", Tally "distanceonforkliftB" etc. Is there a way to automatically create tally statistics for each entity instance?
  18. The SkyBox icon on the View Ribbon opens a library of static and dynamic scenes that can be placed in the 3D animation. Dynamic scenery includes several options for clouds that move with the animation as the model runs. Typically, the Speed Factor should be set to 5 - 10 or greater to see movement. Static skybox options include many indoor and outdoor scenes. Indoor applications include adding building walls to surround your model. The 'None' option will remove any existing skybox. Users can create their own SkyBoxes as well. The “library” skyboxes are simply *.zip files with images inside them with the names front, back, left, right, top, bottom. They don’t need to have all of those names in them, Simio will use whatever ones it finds. They are located in the Skybox folder under \Public\PublicDocuments\Simio. Note when you first apply the SkyBox, you can only view it in 3D and you may need to use the Ctrl Scroll wheel to move the camera down to where you can see the horizon. There are over 20 SkyBoxes that are installed with Simio. A few more are attached below. Simply download and save these zip files in the C:\Users\Public\Documents\Simio\SkyBox folder. The next time you open Simio you should see something like this under SkyBox options: Here is an example of the MFGPlant SkyBox with a server in the foreground: If you create your own skybox images that you feel might be useful to others, please share them here. Hospital.zip MFGPlant.zip Warehouse.zip Airport.zip CleanMFGFacility.zip NEW NOTE: We just decided to reduce the size of these and some existing skybox files and include them all in Sprint 215. So it is probably better that you just wait a bit unless your need is urgent.
  19. Hi all, This one has been confusing me for a few days now. I'm busy building a large 200+ task process, using Task Sequence. For 95% of the tasks, task predecessors are used, and it works fine. However, some tasks can only start after x days. For example, task 5 requires task 4 to be complete & can only start after 4 days. I've tried looking for a place to put this. Things I've tried: 1. Branch type in Task info, where the condition is: "TimeNow > ModelEntity.TimeCreated + ProcessingTasks.Delay_Days" that checks if the current time is more than the initial start of the task plus the time that it needs to wait. This works, but it just skips these altogether. I'd like the resource to check again the next day the tasks that were skipped. 2. Add in additional resources that only become available after x days, and the tasks seizes this additional resource. However, the tasks are seizing multiple resources (e.g. Finance team, Accounts team, etc., so it's specifically looking at a column I've defined in the task resource table. 3. Creating additional servers to represent these "waiting tasks", however, this looks messy and not sure how it can scale/be modified. Any ideas?
  20. 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]
  21. Today, I found this topic talks about updating data in real-time when simulation is running. I thought it could be useful for me in the future so I decided to try it myself. But, when I used the Read/ExcelRead Step, I found it only "read" the external file at the first time: It seems the Read Step creates a copy of the external file at the first read and then it will use the copy for the future reads within the simulation. For example, at the start of my simulation, I used a button to call ExcelRead Step to read a excel file. Then, I manually changed some values in the excel file and I called the ExcelRead Step again. However, the second ExcelRead Step didn't read the changed values.If I want to use the changed values, I need to restart the simulation. For the Write/ExcelWrite Step, only when I stop the simulation, the external file will be updated. If I don't stop the simulation, no matter how many times I call Write/ExcelWrite Step, the external file is not changed. Are these kinds of behavior bugs? Because from the above topic, I think the Read and Write step can update the external file within the simulation. My Simio version is 12.207.20659. Thanks to everyone in advance!
  22. 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...).
  23. 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
  24. Hello all and thanks for letting me be a part of Simio Insiders I am closing in on having done my first source, server, sink simulation. It is done as a part of a University study and is due next week. Feel free to download my attempt and have a look at it. The process I want to simulate is as follows: 1. Chef recieves an order of 1-6 beef patties 2. The chef puts the patties in a grill, that has capacity of 12 patties, and a base cooking time/process time of 1 minute total (that increases with order size) 2a. If more orders come in, while the grill is preparing an existing order, they have to be put in queue, as the grill should not be interrupted. When the grill/server is free again, it will take all - or up to 12 - from the queue, depending on how many orders are in queue 3. The patties go to the sink I am using a Time Varying Arrival Rate table from real life data, on the course of 2.5 hours. The trouble I am having is as follows, and please, feel free to only answer some of them, if you don't have answers for all: _____________________________ a) Order size We want to have orders vary from 1 to 6 patties, per order, in a way that resembles this distribution: 1 (min order size) patty ; was ordered 2 times 2 patties ; was ordered 18 times 3 patties ; 9 ... 4 ; 7 5 ; 3 6 (max order size) ; 1 I have not been able to imitate this behavior. Right now, I use Entities per Arrival to be Random.Possion(2), as this looks a bit like this distribution above, but the flaw with Poisson is (I believe), is that an order-size of 0 patties is a possibility, which doesn't make sense. I have also been playing around with a lookup table, without a real clue on if that's the right thing to do. What should I do to resemble this? _____________________________ b) Server (grill) behavior The problem right now is, that the grill (server) can keep taking in patties, even if it's already processing. That doesn't make sense, if you think about it, since you can't put patties into a closed grill. I want it to start preparing an order, as soon as it gets it, and just let the queue of patties build up until the grill is free again. Then, take up to 12 patties into the grill. _____________________________ c) Process times For the grill, I want the process times to follow the amount of patties in the grill. The grill takes 60 seconds to prepare a patty, and we assume each patty takes 2 seconds to load. Therefore, we choose to simplify that: 1 patty takes 62 seconds to make 2 patties take 64 seconds 3 ; 66 sec 4 ; 68 sec 5 ; 70 sec 6 ; 72 sec 7 ; 74 sec 8 ; 76 sec 9 ; 78 sec 10 ; 80 sec 11 ; 82 sec 12 (max grill capacity) patties ; 84 sec Which is basically y = 2x + 60 In the simulation I uploaded, each patty, no matter the order size, just takes 60 seconds, which is incorrect. How do I get the grill to behave like this? _____________________________ d) Batching After getting the server behavior to work, I want to work with the utilization of the grill. My idea is, that if the server (grill) is told NOT to start preparing patties right at the moment, it receives the order, e.g. if the quantity is small, but instead waits a certain amount of seconds, to see if more orders should come in, maybe the total wait can become less. There shouldn't grow any large queues with the current arrival rates, but if we double it, it might become relevant, so customers shouldn't wait for too long. Another option would be, that it waits till a certain amount of patties are in queue, such as a minimum of 6. _____________________________ Thanks again, and I sure hope you will take a look at this! You are more than welcome to edit the file, but it is also fine, if you just type in here. Best regards, Johan Grill.spfx
  25. 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!
×
×
  • Create New...