Jump to content

agraunke

Members
  • Posts

    240
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by agraunke

  1. What happens if a model built with Enterprise-only features is opened with Team Edition? Specifically, I have many states in tables for collecting outputs in my model. Can someone with only Team edition still run the model? Will they get error messages? Will they even be able to open the file? Thanks! Adam
  2. 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
  3. So, it turns out the travel step was the answer However, I have noticed some interesting behavior. Namely, at the end of the travel duration, the entity is assigned its "end travel speed" regardless if the entity was able to accelerate to that speed. In my case, I have short travel distances in which the entity is not able to acheive its ending speed. Instead of just remaining at the max speed it was able to accelerate to, the entity jumps to the desired end speed resulting in a discontinuous velocity situation. This is in sprint 90. If it hasn't already been addressed, it would be great if there was an additional option to "override" the entity's current speed with a desired end speed (or not, in this case)... that way the entity can accelerate towards a desired end speed, but not have a discontinuous velocity if that speed is not reached. My current work-around is to set the desired end speed as a calculation that returns the desired speed or the max/min speed achieved, but that is cumbersome and relies on my correct understanding and application of basic phyics Thanks! Adam
  4. Perfect-- thanks for the quick response! It seems counter-intuitive that AccelerationDuration is a required property instead of a calculated value. Shouldn't the duration just be DesiredSpeed/Acceleration? More generally, I guess, any one of those values are a function of the other two (for time-constant accelerations). Any way to accommodate that? When I inputed that expression for the AccelerationDuration everything works except for unit conversions. I have everything in seconds (including the model unit settings) but Acceleration gets stored as m/min^2 and does not get converted when using it in the above expression. In other words, all the unit types and values are set to meters and seconds, but I still have to manually convert one expression I've attached the working model for reference. acceleration.spfx Thanks again for your help! -Adam
  5. Hi All, I can't seem to figure out acceleration on entities I have attached a simple demo model that creates a couple of entities and sends them on their merry way in free space. I can't seem to control the acceleration though! I've tried assigning ModelEntity.Movement.Acceleration and also using the Travel step, but neither seem to work. I'm sure this is pretty basic to actually implement, so please help! acceleration.spfx Thanks, Adam
  6. I’ve got a follow up question of my own. What is the use-case of the table property? I can define a table property on an object, and then set that property value to a table in my “parent” model in my object instance. In my object’s processes definitions, I can search the table and find all the rows. However, I can’t seem to do anything with the rows found. For example, I’d like to get a field from each row and assign it to a state variable. I tried referencing the result using TableProp[1,1] , but I get an “incorrect number of parameters” error . I can’t set a state matrix to the table property either  So, what can I do with a table property? Thanks, Adam
  7. A repeat group is a way to pass data between objects. It consists of N fields of properties, which can be repeated (similar to a collection of rows, i.e. a table)—hence a repeating group of properties. The reason you can’t reference the table from the submodel is because of the object orientedness of Simio. When you create a submodel, you are actually creating an object definition. You may only ever plan on placing (or instantiating) your object in a “parent” model in your current Simio project (the .spfx file you are working with), but there is nothing stopping you (or anyone else with access to your project file) from instantiating that object in another, different, parent model or even in a completely different project file (by loading your project file as a library, fyi). So, your submodel can’t know about anything in a parent model, unless there are properties that can be set on the object instance that can then refer to data or parameters at the parent model level. That’s what this quote is referencing: You can “pull” data into an object by looking at Location.Parent.Model.ArrayName for example, but you can’t do too much with that, because there is no guarantee that that array even exists for an arbitrary parent model, let alone that the contents of the array are what they “should” be (in terms of data type). In your case, how would each submodel that you place know which table to reference? Even if you set a table property on the object definition, Simio cannot know what columns will be available, even though you will by virtue of building the model. Repeat groups allow you to create a kind of property on your object definition that you can, for each object instantiation, populate with a table. With a prepeat group, your object definition “knows” about what data will be available to it, because you’ve stated “this data is a property of this object, and it must be set each time I instantiate an object of this type.” Still doesn't resolve the difficulty of actually setting all those properties to get your data into the object instances, but maybe helps explain why things are the way they are... -Adam
  8. Check to make sure there are no other stopping conditions in effect-- namely, I'd go to the "run" ribbon and set "ending type" to infinite. -Adam
  9. Hello all, I’m having a tough time modeling a dynamic routing priority situation. I have entity instances that I would like to route to one of N servers. I currently have node lists that I use to route out of a transfer node per entity instance (actually, I have a list property defined on my entity, and the transfer node’s repeat group references ModelEntity.NodeListProperty). This seems to work well, but now I would like to embellish the model so that the priority can change on a given date. I already have logic to detect the date change—my question is how can I reference a new node list for each entity instance? Potentially complicating the issue: I have an additional requirement that the routing priorities be tied to an Excel input file. Lists cannot be bound to data (a lacking feature, in my mind), so my node lists are actually references to table cells that hold nodes. For example, NodeList1 = I am flexible on the table structure required to meet the new feature of changing to a different set of nodes. I tried using a state variable to point to a different set of rows in the table (i.e. NodeList1 = ; IntState increments on each priority change). However, it appears that the list property gets initialized for the entity population on model initialization (makes sense) instead of when the entity gets created. Also, there is not an option for a list reference state variable. I also considered having multiple list properties on each entity… but how do I dynamically change the node list property on the transfer node’s routing group? So, any thoughts? Thanks! DynamicRoutingPriority.spfx
  10. And, for more fun, here it is with 3D rotation:3DRotatingServer.spfx
  11. I prefer “hack” to “cheat” That’s an interesting comment, though, about sub-models. I feel that in Simio the term ”sub-model” doesn’t really exist; or, rather it describes any model, so it doesn’t really mean anything. I understand the concept of a sub-model, but due to Simio’s object-oriented design any model is a sub-model. The standard library server, for example, is a sub-model. As is the default entity “ModelEntity” and the default model “Model”. So yes, in the sense that I created a custom object (or model) and then used it in another model, the Spinning Server is a sub-model. But then again so is the regular server The real "cheat" here is that the “server” is actually an entity and requires logic (i.e. processes) at the model level to assist with instantiation, (also, most of the parameters are hard-coded, which introduces scalability issues).
  12. Hi All, This is not the most useful model. With that disclaimer, I present the spinning server: RotatingServer.spfx It is inspired by some of the logic/features of the (very cool) crane library. Although this particular model may not be very useful, it might provide some inspiration for others looking for more "dynamic" animation -Adam
  13. Yeah, running models from bound Excel files is not seamless. However, even that doesn't do what I'm after (unless I'm missing something). I would need a way to get data from the table (bound to an excel/csv file) into a list. Alternatively, I need a way to get the transfer node (or routing group) to select locations from a table. Would you mind summaraizing your workflow for using the API for input data? Do you build the model in the GUI and create properties for all your input data? What is your typical input data like? Just curious if I could use a similar approach... Thanks! Adam
  14. Hello, I am interested in having routing information read into a model from an Excel spreadsheet. The basic problem is that I have several entity types that must be processed at one of many servers. There are capability restrictions (i.e. EntityA can only be processed at Server1, EntityB can be processed at Servers1, 2, 3, etc). I have a “capability matrix” as input data that is a table in Excel showing where each entity type can be processed. In the Simio model, I am using a transfer node to route each entity to an available (and capable) Server by using the “Select from list” entity destination. My customer is interested in analyzing the impacts of changing capabilities of the servers. Currently, all other inputs to the model are fed in using bound Excel files. However, the routing logic requires lists, which I have to manually create and/or edit. I would like to have these bound to a data table, or somehow reflect the data in the master input Excel file. Thoughts? Thanks, Adam
  15. That is super cool! Two hiccups I had on installation: 1. You need to "unblock" the dlls 2. This requires .NET 4.5 I did not need VS2012, and I have it working on sprint 78. Thanks for this (and the info on the Roslyn compliler API)! -Adam
  16. This works with an important caveat: you cannot take advantage of any VCS merge functionality (or any other functionality that modifies the content of the source file). This is because each .simproj file (which is essentially an xml file plus resource files, I believe) has a hash associated with it. This hash is checked on load, and if the xml has been modified outside of Simio the file will not load. We had wanted to use Tortoise SVN to help manage development of models and custom objects; however this behavior limits what we can do as we cannot branch and merge projects. As an example, I was interested in developing two separate features of a custom object, so I branched the project twice to develop each feature independently. When I had the features working, I was unable to merge them together. Rather, I could, but the resulting file would not open in Simio. This may represent a small fraction of use-cases, but I wanted to share our experience before people get too excited about VCS functionality. -Adam
  17. Just a word of warning using .simproj (or .xml) files with SVN: if there is a conflict you cannot use the merge capabilities of SVN because the Simio hash will no longer match. Simio will not open the "resolved" file. This limits the usefulness of version control particularly in an environment with multiple developers (or, in my case, an inexperienced SVN user ) Perhaps another reason to allow licensed users the ability to edit/load xml files? Thanks, Adam
×
×
  • Create New...