Jump to content

Search the Community

Showing results for 'current table row'.

  • 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

Calendars

  • Simio Calendar

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. Perhaps its a little late, but attached is a possible solution to your problem. This started out pretty simple. The problem was how to specify which server is serviced by which resource. One way to do that is a table. But since its changing over time I chose to use a time-indexed table, that is a table that knows about time and returns different data at different times. In this case, each row corresponds to 12 hours and each column specifies the resource needed by the respective server. As they say, "the devil is in the detail" and in this case the "devil" is that the specified resource may change between seize and release (e.g., seize at 11:59, release at 12:05). Simio doesn't like that and all the easy options re-evaluate the resource expression on release and so may try to release the wrong resource. One option would have been to create a custom server, but that seems to be overkill. Here is a somewhat simpler approach: 1) Add an entity state named MyResource and assign it at the last possible moment before use. This value will be used only for release. The assigned value is drawn from the table using an expression like Table1.S1Resource.TimeIndexedValue.Object. Note that the .timeindexedvalue indicates to get the value associated with the current time. And the .object at the end is used to tell Simio to return that value as an object not a number. 2) Use Secondary Resources - Other Resource Seizes to seize the name specified in the table using the same expression above Table1.S1Resource.TimeIndexedValue.Object. 3) Use Secondary Resources - Other Resource Releases to release the resource saved in MyResource. TimeBasedWorkerSelection.spfx
  2. 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?
  3. I have attached a simple example of one approach. 1) I edited the ModelEntity object and added a state array of type MatrixFromTable. This type of array is automatically initialized from a table. Ideally I might have also added a table to the entity, but Simio doesn't work that way. Instead, I added a RepeatGroup named InitializationValues consisting of a Real property. I used this repeat group as a way to essentially add a "table" into the object, since internal to Simio there is almost no difference between a table and a repeat group. 2) Back in the model I added a table and then imported data into that table from Excel. I used 10 rows, but I could have imported 350 rows with no change to anything else. 3) Now when you place the ModelEntity object into a model, you can pass a table into the InitializationValues repeat group. Again, intead of just typing a bunch of values into the repeat group, I just say go get the whole repeat group from a specified table. This has the result of sizing that state array inside the model entity to match the current size of the table, and then initializing the state values to whatever is in the table. 4) If you run the model, you can open the Watch window on any entity and view the values of its states. I expect this won't solve all your problems, but maybe it will give you a fresh approach to consider. ImportStateValues.spfx ImportStateValues.xlsx
  4. Hello every body. I am a beginner on SImio and this software is very powerfull. I have a problem I want to modify Fixed route vehicle's destination. I don't want a vehicle on demand.I need a fixed route vehicle. But I need to modify the vehicle's destination. Because I want the first vehicle Go to the first source and i want the second vehicle go to the second sources. And I have 80 vehicle and i want this loop destination for all vehicle. It's works very well for the First 5 vehicles ( For Source_Aub_Char in my model) and it's doesn't work for the sixth and after it's works. But my method doesn't work for all vehicle. I don't understand why. My method is : - I select the current vehicle with "Path1.Contents.FirstItem" - And After with "set Row" i selected différent sequences table for the current vehicle - I do a count for the number vehicle entrance and the model choice the good sequence table with this counter. There is my simplify model in attachement. Some body can help me to see what's wrong or to give me a better method ? Thank you very much. And sorry for my english i'm french. Question FOrum.spfx
  5. Check a SimBit named Choose Alternate Sequence. It creates a process containing the Set Row step to change the current sequence table.
  6. I need to build a simulation of a train maintenance workshop. Each of the trains are entering and exiting the workshop with always the same daily schedule (day-hour-minute). I have set up two arrival tables (one for train arrival, the other for train departure) which trigger two timers, and it works well. My current problem is that the simulation should now run over 1 year (simulation time). The arrival table is expecting a time AND a date, and I am looking for a smart solution to avoid writing repeatedly the same schedule for the 365 days of the year in an Exel file. Thanks for your suggestions
  7. Hi all!, would you help me with this? I want to do a discrete simulation of the current situation in a Hospital in the inpatient unit. I have the data of one year of patients, (over 18,000 people) and I want to use that data in the simulation. That would make more easy to model the server processing times, while we will use the real server times and sequences that each patient had, instead to use probabilities and distributions for the sequence and server times respectively. So, I created a table where each row represent a patient with a sequence (which bed he was assigned due to his level of acuity) and the time that he spent in that bed before he was dispatched. The are more times involve, but we can focus in those parameters to have it more simple. So, the table have the patient name (entity) ,bed (sequence) and Length of Stay in the bed (server processing time). I don't know if is possible that when I create each entity, I can assign, based on that table, the sequence and the server processing time for each patient. How I can do that? Thanks for your time and help
  8. 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.
  9. 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
  10. Hello everyone, The problem with the "AutoCreateInstance" is that every time that the model starts running all the created objects loose their previously defined properties (Routing Logic, Transport Logic,...). I would like to keep my created objects and move them with "Relocate Object" in Locations defined by a table (see the attachment https://drive.google.com/file/d/173uwX4MNdCowpNl4J15WSg-4JeosIkMM/view?usp=sharing). The idea is to insert "RelocateObject" in "OnRunInitialized" add-on process. How can I replicate the relocation for each row of the table? How can I link my current objects in the model to the objects in the first column of the table ? (I defined the column type as Object Property)
  11. I’m currently working on a project for my senior design course, in which my team is going to simulate the finishing stages of the grinding operations for the pulp and paper industry. The company we are working with has given us all the data needed to re-create their currently facility layout and production rates for each machine. The scope of the project is to model the current production system while simulating changes to the system in an effort to optimize throughput in a safer, more efficient, and more cost-effective manner. The simulation models will be used to compare different layouts while tracking changes in efficiency and output. Parts arrive in batches, and each batch contains segments that when put together form a circle. This batches can go from 12-16 segments. Depending on customer orders the batches will go through different machining operations until sent to shipping. Therefore, we have created a production schedule from previous customer orders that backtrack to over a year worth of data. The production schedule shows the customer order, the diameter of the circles, number of segments and the machining procedures needed. https://imgur.com/a/EICIy The table shows a sample on how the production schedule looks like (there 6 other columns containing other steps for each order). The problem we are currently facing is figuring out how to input the production schedule into Simio. We must treat each batch as discrete since they all vary in machining. The three-main operation are backing, facing and creep feed. Another issue we are encountering is that Creep Feed only machines one segments at a time in comparison to the other to main operation which can machine a full circle. Again, we don’t know how to tackle this problem. If any of you could advise me into how to go about inputting the work schedule into Simio and how to go about machining a full circle and then by segments. Thank you for taking the time to read. -Juan
  12. 1. If you look at the results in the pivot grid for your vehicle, you will see that the Resource State Time Offshift Busy is very high. This means your Vehicles are still processing (utilized) after they went offshift. Scheduled utilization is based on how long the Resource is utilized vs how long the Resource is scheduled to be onshift. By default, Resources finish processing their current entity before going offshift, during this in bewtween time it is a state called OffshiftBusy. You have to put additional logic if you want something different to occur. Look into the Interrupt or Suspend/Resume steps. 2. None of your Entities are Destroyed. There is no Sink object in the Pivot Grid because no entities ever enter it (usually it is shown in the pivot grid). If you look in Trace, you'll see that none of the Entities are ever sent to the Sink. The entities are routed using a Sequence Table, but the Sequence Table does not have a row for Input@Finished...The sequence restarts if it gets to the end of the sequence.
  13. Yes, you can have a data table that has multiple columns. One column may contain the various values for the entity state, where another may be the new state value (or a formula for calculating the new state value). The Search step can be used to search the table, based on the current entity state matching the state value of the table column. You may wish to review SearchTableUponEnteringObject and SearchTables simbits for more information on the Search step working with table information.
  14. My simulation has one entity - patients. Each patient is assigned to a state that defines their patient class, but this state is to be updated every three hours. The probability of moving to a state in the future is dependent on the current state, so it's a classic Marcov chain. Right now I have a very complicated and error-prone process that models the state reassignment logic. It involves many conditional and probabilistic decision nodes with manually entered numbers and subsequent assignment nodes. I would like to clean this process to reduce the probability of programming error by using data tables, but cannot figure out how to do so. Is it possible to reference entity states in a data table to model the decision-making?
  15. I think this is exactly what I look for, I think Simio team will have a look at it . My request is: Is there a function that can return the ColumnName of a typical cell. for example Table1[1, 2].ColumnName Table1[2, 3].ColumnName or if know current col number( a statevaribale) , then return the Table's ColumnName(string )
  16. Hi, I have a simple two stage supply chain network with 2 products (source), 1 Store (workstation), 1 warehouse (workstation), and 1 sink. 2 entities represent orders for each product, and each entity carries orders from data table. Another 2 entities represent replenishment.When orders are greater than current inventory, the store sends a signal to DC and ship replenishment. I use subclass workstation to process the orders, but I couldn't set up the correct logic for calculating service level, which is inventory/orders. In my process, I can put a decide step and say if modelentity.product1 is greater than 0 then calculate service level . This works (no product 2). I can also put a decide step and say if modelentity.product2 is greater than 0 then calculate service level. This also works (no product 1). However, if I put a decide step and say if modelentity. product1>0 or modelentity.product2>0 then calculate service level, I get error message.In the tally step, I have to put (inventoryA+ inventoryB)/(OrderA+OrderB) to make it work. if I put (inventoryA)/(OrderA) and add one more row (inventoryB)/(OrderB), it doesn't work. Now the problem is I cannot calculate the service level for each product. Does anybody know how to solve this problem? Thank you.
  17. Hi, How can I bind a table to an Excel in the model's current directory so that I don't need to do the binding again when running the model from other computers?
  18. We are considering adding this feature, but full relational tables add some complexity to it. One possibility is that when you copy an entity (for example using a Separator), by default it copies its states, including its table references, to the new entity. Another possible work-around is to add an integer column to the table, perhaps called something like MyRow. When you populate the table, put a monotonically increasing number in each cell (e.g. row 1 gets a 1, row 2 gets a 2, ...). Then at anytime you can reference MyTable.MyRow to get its current row number.
  19. First of all, thank you for the help. I already try the possibilities that you reffer but i still have the problem. Basically, i have a source that can produce productA and productB connected to 2 servers at the same time (paralell servers). In a table a have a columm that identifies the product followed by one that identifies all the servers in use and another one for the processing time. Basically i need for each server (in the processing time information) to read the type of product that´s entering and then see the current server, but i can´t get the correct value. The server reference in the table is well associated to the server in use, but the expression used is random, i mean it is not getting the value of the true produc but instead is getting the possible lower value. How can i say to each server that the procesing time row is the one that have, let´s say, server 1 and productA? Sorry for bothering and once again thank you.
  20. HI I am a fairly new user and please forgive my confusion. I am working on a project where there are different vehicles coming on different times throughout the night. (for resurfacing etc) I created Arrival table correctly, entered date time values accordingly. The quantity of each vehicle type required is 1. Routing Logic is defined too. I used a Token process as well to guide source. BUT for some reason, when I run the model, all vehicles leave the source at once and then 1st vehicle type keep coming after every hour. BTW it works well if I use no Nodes and simple Source to Sink Path, However, when there are nodes, it mess up and all vehicles leave source at once. Can anyone please tell me what am I doing wrong ? Huge thanks in advance P.S I have attached my current model as well 4 vehicles on time (trying).spfx
  21. I am attempting to model the linked operations of a hospital emergency department and laboratory, but am getting suck on a few operational points. Patients come into the ED and are assessed a triage value (1-5) and depending on their value they get routed to different areas with different priorities using data and sequence tables. Also linked to those triage values is a probability that a testing order will be sent to the laboratory. If a test is requested, there are 4 main categories for testing available and their probabilities are also in the table related to each triage value, with an additional probability that the order is STAT priority. Based on the table data, I need to generate a specific order request that can be sent to the laboratory, which for simplicity is "generating" the specimens for testing, I'm using speed limits on the links to simulate specimen travel time for physical specimens vs the instant electronic request. I then need the lab to combine the completed tests and "fulfill" the request, sending back a results ready notice so the patient can be progressed. I would use 3 combiners for this except not every request will demand all 4 options so the combiners would sit and wait, ultimately generating fulfilled reports including all 4 tests. Is there a way I can generate a specific request, with properties to either run or not run 1-4 tests, collect the results and match the completed report back to the patient that it was generated for? The STAT priority flag adds a complication that I'm also unsure how best to represent the analyzer logic where STAT specimens abort all current testing in progress, put the batch tray back to the input buffer, test the STAT then resume. To handle the batch servers i am using the simple object made by dsturrock (http://www.simio.com/forums/viewtopic.php?f=17&t=737&p=2018#p1852) Thank you for any help you can provide, I've been stranded on this for a couple weeks now
  22. Another approach might be to use a Time-Index Table. Here is an excerpt from help: Time-Indexed Table Properties Within the properties of a data table, under the Advanced Options section, is a Time-indexed property that may be set to 'True' or 'False'. By default, all tables are set to 'False'. By changing this to 'True', additional properties for the table, such as Starting Time, Interval Size and On Interval Process may be specified. Within a time-indexed table, you can then have a column(s) of values within the table and retrieve a single value from the column, not by direct indexing, but indirectly, based on the current simulation time. The values within the table can be accessed using a function for time-indexed tables. TableName.PropertyName.TimeIndexedValue: returns the value of the property in the row that corresponds to the current simulation time. If the current time is out of range of the table's rows, then this will return either the first row's or last row's value for the requested property.
  23. 1) You don't have to consistently move BySequence. You can take detours off the sequence. For example you may normally travel A-B-C-D but if you fail at B you might instead move (off sequence) to E. 2) You can use SetRow to change your sequence or the sequence step the entity is executing. 3) {Advanced concept alert}Unless you are using Enterprise Edition, each cell in a table is a property (e.g. Row 5, Column 3 is a property), but the contents of a cell can be defined as a state. Since its a property you cannot change the definition of a cell during runtime, but if that cell definition is referring to a state, you can change the value of that state. So you can create a model state of type NodeReferenceProperty called MyDest. Then in the destination column of the sequence table manually type in MyDest. Each time you execute that sequence step it will evaluate the current value of the state MyDest and send the entity to that location.
  24. you can simply use material quantities instead of creating huge number of new new entities (avoid using create, it is not suitable for your problem. you should think each product type as if they are materials, define material element type colum in your arrival table. You can benefit from autocreate property since you have much more product type). By this way you not only satisfy the current number of entity limits of the simio but also simplify the logic of your model. Just use material, produce required number of materials then increase the number of quantity available. While separating them or batching just simply use Workstation and BOM structure. The prosed logic needs to be adapted to your problem... In summary you should think a bit different...
  25. It is hard to troubleshoot a model without knowing the system under study and what you are trying to do. That being said, there a couple of things that jump out at me. First, I would recommend testing your logic with a trivial data set, so that you can see what is happening. For example, did you know that you are creating two material source trigger events with the first order? The worker parks itself at output@Source1 on initialization. When the order creation logic starts and a purchase order is released, the worker transfers from the parking station, into the node, and on to free space. That triggers the “ReleaseMaterial” process, which starts the next material release ahead of its scheduled time. Also, the arrivals table is not sorted in date order. That is not a problem for Simio, but it is a problem for your auto-increment logic on the Material Source. For example, the first order actually occurs at 6:01:46 (PO 122137) which is at line 21 in the arrivals table. However, the materials source points that created entity at row 1, so the wrong volume and wrong entity type are created. Again, I would start testing your logic with a very simple data set to see if the model is behaving the way you expect. However, before you go down that route I might suggest re-visiting your conceptual model and model approach. The approach you have started here relies on the creation of more than 800,000,000 entities over the model run . As a sanity check, the default max number of entities (which can be overwritten) is 2500. Creating that many entities (and associated tokens) will require a large amount of computing resources. Even if you verify the model is behaving the way you intend, I can pretty much guarantee you will have performance issues with the current approach. Once you have decided on a tractable approach and have started modeling, there are several built-in tools to help with verification and validation: the trace window and the profile window. Both of these can be used to figure out what is happening in the model—the profile window is particularly helpful for identifying model performance issues. -Adam
×
×
  • Create New...