Jump to content
Simio Forum

Welcome to the Simio Forum

Welcome to the Simio Forum! Experience the full experience of the forum by becoming a Simio Insider! You must be an Insider to post on any forum!


  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Simio Public Forums
    • Welcome and How To Become a Simio Insider
    • Discussions
    • Simio News and Announcements
    • Simio Product Details
    • Simio-Related Positions Desired or Positions Available
  • Forums for Simio Insiders Only (See Public Forums Welcome topic to sign up)
    • SI Help Getting Started
    • SI General Discussions
    • SI Downloads
    • SI Shared Items
    • SI New Feature and Enhancements Submission and Voting
    • SI Ideas & Suggestions
    • SI Bugs and Issues
    • SI Performance Tips
    • SI Challenge Applications
    • SI Non-US Cultures
    • SI User Interface
    • SI Material Handling
    • SI Student Competition
    • SI Educational
    • SI Objects
    • SI Animation and Visualization
    • SI Reporting and Analysis
    • SI Agent Based Modeling
    • SI Scheduling
    • SI Emulation
    • SI Optimization
    • SI API


  • Simio Calendar


  • Files
    • Academic Information
    • Product Information
    • Case Studies

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



About Me












Found 936 results

  1. 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
  2. Hi there I have been struggling with a problem whereby I need to determine the sum of all values in a table column (optionally given some criteria like Excel's 'SUMIF' function). This seems like a really simple problem but there appears to be no functionality to do this. If there is, please could someone point me in the right direction? I have gone as far as trying to write a process to perform this but it seems overkill for such a trivial operation. Thanks E
  3. 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]
  4. I have a data table which has several rows that contain node and some other infomation. I want to move a transporter to a node in that data table and park at that node. Now I have my model and data table like this: In this model, when I click the move button, Myvehcile1 will move to TransferNode1 or TransferNode2( depend on some inputs for Myvehicle1). The problem is because I don't create any ModelEntity, I seize Myvehicle1 by itsself. So, Myvehicle1 is in its visitrequestqueue and it will never stop at a node and it keeps moving between nodes. Below is the process I create to find the node in table and move the transporter. The model file is also included.SimpleModel.spfx Does anyone know how to achieve my goal? Thank you very much!
  5. I'm using Simio 12.205 and I'm trying to import data into a table from a MySQL database using a data connector. I am aware of the Simbit DBReadWrite example that uses a process to access the data. That is not what I am trying to do. Specifically, I have a Temperature table in my database containing a sampleId (primary key) and a sampleValue. I would like to read the sample values into a Simio table column named TempSample. Refer to the attached screenshot. The area of concern is circled in red. I've successfully connected to my database. However, I don't know how to define a SQL query within the Data Connector, specifically the TableConfigs' Data Object to populate column in this table. Perhaps it needs to be something other than a SQL query--I don't know and have not found a suitable example in the Simio forums on Google.
  6. I figured it out. The Data Object is the name of the table , view, or a stored procedure in the database.
  7. My model currently reads tasks from a table and I am trying to model material consumption. For each task there are groups of materials: A, B, C, and priority values: 1, 2, 3. To complete a task, only one material type from each group A, B, and C must be consumed, and the order they are consumed in should be based of the priority. For example, if task one had entries like the table below, if all materials were available, materials 1,4,6 would be consumed. If material 1 was no longer available materials 2,4,6 would be used, and if material 6 was not available the task could not be done. The material requirement section in the processing task editor does not seem to support groupings and priority and was wondering if anyone had an idea on how to accomplish this. Task MaterialName Group Priority Quantity Task1 Material1 A 1 1 Task1 Material2 A 2 2 Task1 Material3 A 3 1 Task1 Material4 B 1 1 Task1 Material5 B 2 3 Task1 Material6 C 1 1
  8. If you are binding a table to SQL Server Express, use the following connection properties If using SQL Server Security, you can specify the server name, database name, user id and password in the fields that are provided. If using Windows security, use a custom connection string. In the connection string, specify the server (e.g. Server=.\SQLExpress), database (e.g. Database=MESDB) and Trusted_Connection=True
  9. Fernando, I'm curious as to whether you and Glenn ever resolved these issues... It's been over 3 years at this point. For what it's worth, I searched for MS-SQL connection string and found this site with various examples: https://www.connectionstrings.com/sql-server/ I'm assuming and hopeful that you did resolve your issue. Thus, I want to ask some follow up questions. Once you connected, how did you did you pull data from your database--did you use an add-on process or did you import it into a table? If you used a table, how did you construct our SQL query? Ryan
  10. Hi Folks, We have a data driven model where entities require a value from a table with n named columns. For example, consider the column names might be "Group1", "Group2", and "Group3". For each randomly selected entity classification based on a random row for example, we wish to randomly select which column to grab a numeric value for that type entity. Each Type has a unique distribution of amounts in the table. Suppose an entity has a string state called MyGroup, and I set that value. For example ModelEntity.MyGroup could be set to "Group1". Is there a way to use that name as a reference to the named column in a data table? I was thinking something like ModelEntity.MyValue set to MyTable.(ModelEntity.MyGroup) would be nice if it worked, but it does not. Is there any way to use that string state value as a reference to a named column in a desired table? Thanks So Much For Any KindThoughts On This, Jim
  11. I am interested in using task sequencing reading from a data table to solve my issues with multiple tasks being done by different workers at the same time and task precedence. After looking at the simbit related to it (TaskSequenceandWorker) I did not see a way to add probabilistic and conditional columns like when it is done directly into the server. Also is there a way to have a column for entity types and have it only reference rows that are assigned to them.
  12. We are currently working on entity routing through a medical facility. There are individual servers that represent areas within the facility where patient type, current location, probability, and destination (Input node of next server) are all in one table as one column each. After processing we want to subset the table to only have the specific ModelEntity type, correct current location, and then use TableName.ProbabilityColumn.RandomRow on the subset table to find the destination location. We have not found a functional way to subset the table.
  13. Dear all, it seems I have the same issue with multiple entities and requirements for multiple paths in the sequence table. I would be very happy to have the solution shared with me. Kind regards, Harald
  14. Hi, You can do what you're after using a search step. See screen grab and attached project file (Simio version 12.208.20871) Regards, Lucas Table Row Sum.spfx
  15. You can use SetRow step in process logic to set a specific row reference in each table. If you don't know the specific row in each table then you can use Search step to find a row in the table and then use SetRow. Once you do SetRow, you will have row reference to the table. If you have conflicting row references then you may have to cancel previous row references when you do set row. You can do that using Advanced Options on the SetRow step.
  16. Hi All,


    I am trying to look as to how can we create experiments with various schedules in the SIMIO experiment tab.

    Currently I am not using RPS version.

    I have created a schedules for various servers using Simio process logic and schedule table for each server.  I am able to run one schedule and see the resulting performance, but it would be interesting to see how the changes to the sequence of orders changes the performance.  How could I set up experiments to make changes to the sequences in the tables?

  17. Is there a way I can concatenate string in table for e.g. Col 1 of table 1 has name "Simio" Col 2 of table 1 has name "Simulation" I need to create col 3 in table 1 that says "Simio-Simulation" One way is I do it outside Simio and then import but don't want to do that
  18. Hi Jim, Unfortunately, at this time, there is not a way to reference a column name with a string variable. The column needs to be directly specified by name (like MyTable.ColumnName) or you could specify the cell by the table row and column index (like MyTable[RowIndex, ColumnIndex]). The indexes can be State Variables that evaluate to an integer. The caveat is that you can not just specify the column index, the row index needs to be there as well. So assuming you can assign the row, one approach to consider is creating an integer State Variable to save the column index. A Math.If expression could check the group name string, and assigns the integer variable the corresponding column index. Then place the integer variable in the Table column Index. Happy Modeling! Liz
  19. ~Created 4 entities of the same type-- let's call them EntBB-- with a run initialized process. Had them transferred into a server-- let's call it SrvBB-- output buffer. ~Worker goes and picks up one of those entities and takes to transfer node-- let's call it nBBRouter-- where that particular entity that the worker is carrying should be destroyed. nBBRouter_Entered Process Destroy step: specific object: EntBB[1] SetNode step: specific: Input@Sink1: specific object: Worker1 My problem: the first time around does what I want, but the second time around it destroys one of the entities still in the output buffer instead of the one the worker is carrying. Using the destroy of associated object gets me a different result than what I want, despite destroying the entity I want destroyed, so I can't use that method.
  20. Hello! One suggestion is to use Key/Foreign relational tables to accomplish your goal. If you have a table that defines your unique entities, you could then set the entity column as a Key. In the Task Sequence Data Table, you could then add the Foreign Key column to specify which rows pertain to the specific entity. This could limit which rows in the Task Table the Entity will have a reference to. Happy modeling, Liz
  21. Hi all, I made a model of a production line (starting with 2 servers) and I am wondering whether it is possible to change the processing time of the second server based on the actual output of the first server. Theoretically seen the processing time of the server 2 = Speed of server 1 * E , in which E is a fixed formula (connected to server 2) to correct the speed. So if the first server performs according to expectation (without failures) for example 40 the processing speed of the second server is equal to 40*E with a delay of the conveyor time between server 1 and server 2. If the server has failure and thus have a lower output (for example, 30), I want to change the processing time of the second server accordingly to 30*E with a delay of the conveyor time between server 1 and server 2. Does anybody have an idea of how to do the following: How can you monitor the actual output of the first server at each timestep? Is it possible to fix the proposed formula and use it in an add-on process? How can you take the conveyor time delay into account (using a delay step in the add-on process?)? I am quite new to the software so I am not sure whether it is possible to model this in Simio. Thank you in advance!
  22. Is there a way to create a column of Time property without date using Simio Table, just like the start time and end time of day pattern of the work schedules? The work schedule doesn't suit my needs.
  23. Dear CWatson Is this functionality already available? Or maybe you have another idea, how to solve the following problem?: I'm looking for a solution to use the name of a data table as a state of my entity. I have 3 data tables that contain the same parameters but with different values. In the beginning of the simulation, I need the values from Table1 and after a certain time the values from Table2 and in the end those of Table3. How can I choose a table based on the state of an entity? Alternatively, I could merge the 3 tables to one and use multiple columns instead, from which I have to choose based on the state of the entity. But also for this topic I haven't found a simple solution... Thank you in advance for your help! Regards, Sam
  24. Hi, I have a source with a rate table, it is set to make an output of 100 entities every day. The problem is that the entities comes out one at a time trough that day, but they should all arrive together at the start of the day, so that the servers has the whole day to process them.
  25. 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,
  • Create New...