Jump to content
Simio Forum


  • Content count

  • Joined

  • Last visited

Community Reputation

0 Neutral


    Brisbane, QLD
  1. As I understand it, if I wanted to loop through a table or do some other highly intensive logic during simulation time, the model would continue without waiting while this logic chugs along. It would be nice if there was a way to "pause" using process logic, so that I could tie the logic to real time, at the expense of model performance. An example would be: I have a table of actions that are in order of time, but not vehicle. When I request a vehicle to move somewhere, I have to know what it's going to be doing next so that I move at an appropriate rate. This requires looking forward through the table until I find a row that matches the object which can take seconds.
  2. The trig involved in calculating the heading between two objects is pretty intense. It would be nice if this calculation could be facilitated via Simio, as the travel step has an auto Heading option... but unfortunately the step itself does not cover all use-cases. Either a DirectHeadingTo(obj) method or an atan2(x,y) method would be appreciated. Simio currently has an atan method, but it only accepts one parameter, which makes it unusable for quadrant calculations. http://en.wikipedia.org/wiki/Atan2
  3. jdoran

    Mobility of NL License

    I'm sure it's extra work, but is not exactly new technology that has to be built from the ground up. This was the first google result: http://www.reprisesoftware.com/blog/2011/05/using-dongles-with-rlm/ They have also mentioned it in a few other of their blog posts, and have even advocated it as being a simple and robust solution for most of the reasons already highlighted in this thread. I can see it being another story trying to implement it though, if you are doing something highly customised with their management though.
  4. I didn't find a mention of how to go setting up a MySQL binding on a table, so here is a quick guide that I would like to see included in the help manual. First, navigate to the data tab. Select your table, and you should be able to add a binding for "databases". [attachment=709:name] When attempting to bind to a database for the first time, it is likely that you will not have a connector installed. You will receive an error similar to: "Could not load available tables from database connection, error message: Unable to find the requested .NET Framework Data Provider. It may not be installed." [attachment=708:name] If you are using windows, then fixing this should be simple. Head over to the mysql site and download a .NET connector (as of writing: http://dev.mysql.com/downloads/connector/net -- Connector/Net 6.8.3 for the Microsoft Windows platform) After installing this connector, restart Simio and attempt to add the database binding again. The rest should be straight forward, but I will quickly cover it anyway. [attachment=710:name] You will need to enter a server name. This should be the location of the server (e.g. awesomedomain.com, localhost, or server-lan-name, etc.) By default, MySQL listens on port 3306. Check with your administrator if 3306 does not work. Database name is... you guessed it... the name of the database. UserID and password are the credentials you need to access the database. Check with your administrator. The custom connection string can be left alone, as the provided fields should cover almost all use cases... and anyone using something non-standard would probably know what that field is all about.
  5. jdoran

    Handling large tables in Simio

    Nope, the 64bit version still will not open the model with a massive data table (at least not within the 5mins I was willing to wait for it). I left the model opening over night (via the 32bit client), and came in this morning to it opened. I have removed the datatable, and will have to explore using a database, etc.
  6. jdoran

    Handling large tables in Simio

    Nice pick-up. I had completely forgotten about that. Let's see if that works.
  7. http://www.simio.com/forums/viewtopic.php?f=6&t=1761 It doesn't make much sense to include them in the XML to begin with (from a performance point of view).
  8. jdoran

    Handling large tables in Simio

    Has anyone else experienced significant performance hits when dealing with large tables in their models? One of my tables has a bit over 230k rows. Since adding the table the model can take up to 30seconds to save (on a SSD), and since closing the model, it no longer seems to load. I can see that tables are added directly into the model xml data which does not seem to make much sense. [attachment=705:name]
  9. One of my current models involves dealing with degrees. It's all fine to be converting between degrees and radians, but it would be nice if there was a function (like DEGREES() in excel), to easily convert between the two. Am I missing something obvious, or does everyone else do it manually?
  10. It would be nice if the expression property had an expression editor that would at least allow us access to the Math functions. [attachment=684:name]
  11. jdoran


    We have a few other functions we can use to check the state of vehicles, but we are still lacking one for freespace (isInFreeSpace). I usually just check to see if it's on a link or on a node, and if not then it must be in Freespace... but this apparently is not always true. My model will now stop when this occurs, and it would be nice if I could properly test for that condition without waiting for the exception. [attachment=682:name] [attachment=683:name]
  12. jdoran

    List and Pie chart enhancements

    Thanks Renee. The first requested change is to simply show the row number in the list tables. I appreciate that removing the spaces makes the list selection function work, but will continue to use spaces as I feel they look better in the model graphic (pie chart legends, etc.). I will amend my post to reflect this, as "reliable" is not quite the right word there.
  13. jdoran

    List and Pie chart enhancements

    Lists: The only way of working with List State variables that have spaces in their name, is by referring to them by their corresponding integer (the row number of the desired list entry). [attachment=637:name] i.e.: In the above example, to set it to "Drive Train", I would set the variable as "2". i.e.2: In the above example, to find the total time in "Drive Train", I would read the Drill[1].UnScheduledDowntime_list.TotalTime(2) It would be nice if we had these integers in a column on the left side, as scrolling makes it difficult to keep count and very time consuming to crosscheck. ------------------- In the pie chart, I often have many list states that are not displayed (immediately and sometimes at all). It would be great if there was an option in the pie chart to automatically hide states that do not yet have a slice. [attachment=638:name]
  14. [quote="GreerAmy"]James, I was running into similar issues, and I found I really prefer using Math.If to deal with handling null references. For example, Math.If( Truck != Nothing && Car != Nothing && Person != Nothing, (Truck.Failed || Car.Failed || Person.Failed) && OnShift, False ) Still alot of extra checking, but I have found the process logic just seemed easier to read and maintain if I use Math.If in a single decide block, instead of two decide blocks to deal with the empty check and then the logic check. I've also been happy with using Simio's expressions for the nothing check, so I might have an expression for: getCarFailed ( Math.If( Car != Nothing, Car.Failed, False ) ) getTruckFailed getPersonFailed Then, the decide block at the process level is even more readable, as I can just have getCarFailed, getTruckFailed, etc. and the nothing check is dealt with within the expression. Please re-post and let us know if you have found other ways to deal with the nothing check. What I think would be really awesome is early outs! That way, if a decide block said ( Truck != Nothing && Truck.Failed ) If a truck was nothing, Simio would just stop evaluating and return false; instead of giving us a null pointer error when it hits the second component. I don't know if I want Simio to be so smart that it just ignores nothings, as sometimes that is actually a sign of a bug in my code, and I want Simio to yell at me![/quote] That's just moving the decides to after that initial decide though. What happens if only the car failed, and you had a truck and person? All of your logic is skipped then, meaning you would then need to check for: Person != Nothing && Truck != Nothing (Person.Failed || Truck.Failed) && OnShift If it was the truck: Person != Nothing && Car != Nothing (Person.Failed || Car.Failed) && OnShift And so on, until you have covered every combination. I don't really remember what I was doing in December, but I recall it being some kind of centralised failure management process, where failures would be handled once a shift, and all together, with complicated parent level processes. Due to working with different types (Car, Truck, Person), everything I did required the type declaration, which return a null error if there was nothing.
  15. It would be nice if we had the ability to use model properties to set Linear Gauge range. I have a model with 30 or so linear gauges, and if I set the starting value higher than the gauge was set to, I then need to go update all of those gauges. It would be nice if I could instead use a property to set this.