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!

Click_Here_button.png

New Software Release

Our latest release, Simio 11, is here!

jdoran

Members
  • Content Count

    670
  • Joined

  • Last visited

Community Reputation

0 Neutral

1 Follower

About jdoran

Converted

  • LOCATION
    Brisbane, QLD

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. 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". 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." 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. 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.
  2. 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.
  3. Nice pick-up. I had completely forgotten about that. Let's see if that works.
  4. 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.
  5. So each wait step would require a state/property, a timer and two assign blocks. It's simpler than making the re-usable process with passed tokens, and probably more durable. Thanks. I'll have to go back and update my models, and keep it in mind in the future.
  6. This fixed the outstanding bug where writing in an experiment would dump all csv files in the simulation root directory, ignoring the relative directories you specify in the file path in the file element. The fix was trivial, and I am sure I have raised it several times both on this forum. I made the fix a few months ago, and have kept meaning to post it here (if indeed I have not already). The problem with unofficial fixes is that it is another moving part to update, keep track of, and adds to installation complexity. I have lost previous fixes twice (due to fresh re-installs). Essentially "fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(fileName);" was the culprit. I changed the "_writerFileName" directive from using the above variable to: _writerFileName = "fileName + "_" + simioScenarioName + "_Rep" + simioReplicationNumber + fileExtension;" I could do something neater (as the current output will have a ".csv" in the middle of the name), but did not spend any time on this. It would be appreciated if this was fixed and applied to the official write block (even if as a toggleable option), as due to the over-zealous licensing terms, the DLL will not load on an unlicensed client... meaning I have to choose between having the bug fixed and not dumping hundreds of thousands of CSV files in my simulation root... or causing clients considerable inconvenience by writing hundreds of thousands of CSV files into their simulation root. Here is the relevant code extract in the file element: if (String.IsNullOrEmpty(fileName) == false) { string fileRoot = null; string fileDirectoryName = null; string fileNameWithoutExtension = null; string fileExtension = null; try { fileRoot = System.IO.Path.GetPathRoot(fileName); fileDirectoryName = System.IO.Path.GetDirectoryName(fileName); fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(fileName); fileExtension = System.IO.Path.GetExtension(fileName); } catch (ArgumentException e) { data.ExecutionContext.ExecutionInformation.ReportError(String.Format("Failed to create runtime file element. Message: {0}", e.Message)); } string simioProjectFolder = _data.ExecutionContext.ExecutionInformation.ProjectFolder; string simioExperimentName = _data.ExecutionContext.ExecutionInformation.ExperimentName; string simioScenarioName = _data.ExecutionContext.ExecutionInformation.ScenarioName; string simioReplicationNumber = _data.ExecutionContext.ExecutionInformation.ReplicationNumber.ToString(); if (String.IsNullOrEmpty(fileDirectoryName) || String.IsNullOrEmpty(fileRoot)) { fileDirectoryName = simioProjectFolder; fileName = fileDirectoryName + "\\" + fileName; } _readerFileName = fileName; if (String.IsNullOrEmpty(simioExperimentName)) _writerFileName = fileName; else _writerFileName = fileName + "_" + simioScenarioName + "_Rep" + simioReplicationNumber + fileExtension; } Using relative file paths worked at one stage, and was later broken. Below are two threads with work around un-offical dlls that probably implement the fix nicer. 10/07/2012 - http://www.simio.com/forums/viewtopic.php?f=19&t=829 07/12/2012 - http://www.simio.com/forums/viewtopic.php?f=20&t=987 TextFileReadWrite_compiled.zip TextFileReadWrite_source.zip
  7. I dont recall making a variable timer being an easy thing to do. I believe they required their own state variable. It will make the code harder to read and debug too. I currently execute side processes with delays that fire events. This is even worse in some ways as it makes multiple tokens that then need to be handled.
  8. 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.
  9. The SimBits are a valuable tool though. It would be nice if we could make our own collection and host them centrally. Ideally we would have an xml file that contained the metadata and all the SimBits sitting on a network share, and get each user to map a network drive to them.
  10. I don't think it is something take offense over, as even the guys behind the new HTML standards still haven't come close to solving this issue yet. No matter how much meta data you put on elements (in this case Simio models), unless the user has an exact idea of what they are specifically looking for, they will overlook things. If I were describing generic model objects or even complete models using just those three fields, I may completely describe the use cases I would use it in, but not necessarily every single one it could be used in or what techniques I used to make it with. Perhaps an example will better illustrate what I am trying to convey. In one of my models, I abstracted my environment (in this case it was an underground panel) into a re-usable object. If someone else was going to make a field on a farm that shares many key functionality (internal scheduling, etc.), from searching the meta data it is unlikely they would see my object... nor would they want to read the PDF describing it. If we are to assume that they would look at each model (SimBit style), it would take more and more time as the library grew larger and larger. The library style for the SimBits is definitely a good starting point though. Is it possible for Simio to enable us to build our own SimBit collections, that are kept separate? I would love to hear people's thoughts on this.
  11. I have been using Simio for quite a while now, and have started to build up my own library of common objects. It is great that Simio allows you to build Object Oriented models, as these objects should in theory be re-usable. I now have to start thinking about what happens when my colleagues all start moving to Simio. This could mean 2, 5, 10, or more than 100 modellers all working on different projects at the same time. How do we effectively collaborate and expand our toolbox of common elements? The notion of SimBits is novel, but as proved time and time again on this forum (myself included), does not effectively allow you to share actual models. They are difficult to describe in a way that is easily searchable, and can be very specific. They are a great starting point as they can demonstrate methods, and are definitely better than nothing, but would not scale well when you start to have hundreds or even thousands of them. Does anyone have experiences to share in managing this issue? I can see this easily becoming a large challenge to deal with. Perhaps facilitating a user generated SimBit section (that can be limited to within an organisation, and extensible such that it could be pointed at a central server), would be a potential starting point.
  12. Thanks Glenn. It is certainly a more compact way of correcting for zero, than what I usually do. I will have to keep this trick in mind.
×
×
  • Create New...