Jump to content

dsturrock

Administrator
  • Posts

    1,652
  • Joined

  • Last visited

  • Days Won

    51

Everything posted by dsturrock

  1. If you want to specify a specific name, such as one specified in a table, just reference the column name that contains that. If you want to select the best vehicle, then you need to first put hose vehicles on a list and select from the list.
  2. I sub-classed Server to make a custom object (see yellow steps for changes). I wasn't patient enough to use your 12 day processing times - I used 2 hours. It is hard-coded to handle up to two entities of the same type, but only if the second entity arrives within 1 hour of the first. For testing I drove it from a data table with comments for what each entity should do. It's probably not bullet-proof, but it should give you a good idea how to proceed.FermentationTankObject.spfx
  3. Weekends and evenings are for doing fun stuff like helping users solve modeling problems. But if the table already contains all the information you need, then why not create the model just BEFORE you hit run instead of AFTER? It doesn't sound like it makes a lot of difference in the process flow, but it makes a lot of difference to Simio.
  4. Yes, this is an odd place to put this question. I probably would have created a new topic named something like getting started using objects. If you want to ADD A PROPERTY to an object, you must change the object definition. To change an object definition you must be editing the object and to EDIT an object it must be in the navigation panel - which lists all the objects current defined in your project. To USE an object you just drag it into the facility view of your model. (The model is the object you are editing). To change the values of (existing) properties of that object, you simply click on that object in your facility view and its properties are displayed in the Properties window.
  5. We usually use the word dynamic to mean at runtime (while you are running the model). What you are looking for is building the model at model design time (while you are building the model). Yes, you can create any object during design time. Look in the Shared Items or API folder for the spreadsheet import files. In recent software you can also find some model building during import on the Table ribbon.
  6. The primary objective of setting warmup time is to reduce or eliminate the effects of any startup bias from the reported statistics (especially when starting "idle & empty"). Perhaps the best way to determine an appropriate warmup time is by plotting the observations of some key statistics and then visually determining at what point the starting bias is minimized. You can accomplish this by: --Creating a real-time plot in the facility view. --Enable logging on some Tallies and then create a Dashboard on that log. --Use a Write step or ExcelWrite step to write each Tally observation to a file and plot it externally. Generally an approximation is "good enough". --If you make it too short, you may include some bias - but the further away you are from time 0 the less the impact of that bias. --If you make it too long, you are just throwing away potentially good results requiring a longer replication to get equivalent results. A warmup that is too long is safer than a warmup that is too short. In general, the longer your replication is compared to the warmup time, the less important the warmup is. For example if you are running for 8 hours and it requires about an hour to reach steady state, then the warmup period is quite important since more than 10% of your data is potentially biased. If you are running for a year, and you reach steady state in a few hours, then the warmup period is much less important and possibly even unnecessary since less than 0.1% of your data is potentially biased. The number of replications you need to run is a totally different issue and has no impact on the warmup time issue. Any good simulation textbook, such as Simio and Simulation: Modeling, Analysis, Applications should explain this in detail.
  7. Only dynamic objects (Entities, Workers, and Vehicles) can be created during a run. Fixed objects cannot be dynamically created. But you can add capacity to a fixed object. Let's say you need up to 10 units of Server available, but you want to enable them only as needed. --The easiest approach might be to design your model with a single Server with capacity 0 (off-shift), then assign it's capacity (increment by one) every time you need more. This is appropriate for something like a ticket agent station where you bring agents on and off staff as needed. --If you need your servers to be independent, then place 10 different Servers, each with a capacity of 0 (off-shift). Then, when you need to add another server, find one that is still at capacity 0 and change it to capacity 1 (on-shift). You don't say what prompts the dynamic creation, but perhaps you can use schedules to implement either of the above. Sometimes it is possible to use an entity like a server. You can dynamically create an entity and put it somewhere, like a Storage. Then you can seize and release that entity. But you can't flow through a dynamic object.
  8. Can a second job be added to the first tank already in process? --If not, how long (if any) will the first job wait for a match before starting? --If so, how long after the first job starts can it be joined by the second? So for example, if job 1 arrives to the empty tank at 1:00 and job 2 of the same type arrives at 1:05, will it process? If so, how long does it take? It sounds like it would be a merged processing, not two independent processes, right?
  9. Simio has no limits. 100,000 entities is high, but not huge. Simio is limited only by the memory that your hardware and your OS make available to it. And if you are using Simio 32 bit version (the default), it can only access a limited amount of memory. 1) Verify that you really need that many concurrent entities. Is there a better approach? For example if you are creating all your entities at time 0 perhaps you can instead create them just in time. (See other ideas below) 2) Does the machine you are running on have enough memory? 3) Are you using a 64 bit OS so all your system memory is made available to applications. 4) If necessary you can run in 64 bit Simio (look for Simio64.exe in the same folder). Only do this if necessary because this will run slower. 5) If none of the above work out, then it is time to look at ways to approximate your system is other ways that would allow you to run effectively: --That could include making 1 entity represent 10 or more. This would NOT let you create 0.1 entity (hence the approximation), but instead of creating 100,000, you would create 10,000. Depending on what you want to do this approximation might be appropriate. --Possibly a Flow Library approach could be a better approximation. --Or maybe a continuous or systems dynamic approach. --If your entities represent an inventory of some type, perhaps put their information in an array or write it to a file, then destroy the entity. If necessary you could recreate from the saved information.
  10. The general instructions to use any add-in are: Download the (zip?) file and extract the dll file. Right click DLL and select Properties and then Unblock. Then, copy DLL into "C:\Users\\Documents\SimioUserExtensions". You might need to add the SimioUserExtensions folder under MyDocuments (C:\Users\\Documents) if it does not already exist.
  11. Simio Portal is a separate SaaS (Software as a Service) product that is not included with any desktop product. But any desktop product, including Personal Edition, can generate models that can be uploaded into Portal where they can run and distribute the results. Contact our sales department (sales@simio.com) to get a demo of Portal. As you might imagine, many such models contain proprietary information which the company does not want to share. We are grateful to companies that are willing to share videos of what they have done - videos provide much tighter control over exactly what information is shared. This forum is a great place to connect with other users who may be willing to share real or sample models with you.
  12. While the dynamic selection rule has more options, it is likely that just the static Ranking Rule is sufficient. The default is FIFO, but perhaps a rule like Smallest Value First on Entity.Priority might work for you. The key is that this is specified on the resource, not on the server. The Server provides rule for selection from a collection of resources. The Resource determines selection from a collection of seizing entities.
  13. You are probably aware that Simio LLC sponsors a simulation competition twice each year. You may not be aware that this is already the largest simulation completion anywhere! In the latest contest, we had a total of 250 teams involving 868 students from 33 schools in 14 countries. Part of this is based on Simio's popularity, but part of it is because we have very interesting and realistic problems based on heavy practitioner involvement. It does require a lot of effort to conduct each competition, including: 1) Finding realistic problems (do you have a problem to solve?) 2) Fleshing out the problem statement 3) Developing test solutions to ensure each problem is balanced and solvable at the right level of difficulty. 4) Judging the entries We have had strong simulation community involvement, but we are always looking for more help with all 4 areas above. At the time of this writing we are looking for some help in the May 2017 competition in number 2 above. If anyone would like to help by testing the latest problem http://www.simio.com/academics/student-competition.php please contact me directly. I have previously been contacted by commercial users, early in their career, who have asked to participate in the contest or are just looking for a realistic problem on which to practice their skills. This is your opportunity. I'm sorry, but current students, or anyone affiliated with a school that expects to participate, are not eligible for this "early look" at the problem. All others, thanks in advance for your help.
  14. I think the problem was not in the actual expression you used, but HOW you were using it. If you use that expression when there is no following entity it will give an error. But I added this expression to that floor label in that same SimBit and it worked fine because I don't evaluate it when it is invalid.
  15. Perhaps a middle ground is to use a Server with Task Sequences and then for the tasks you might consider a Process Type of Submodel.
  16. In Adam's second case it is important that all users map the network drive in the same way. For example if it is mapped to drive M: by the model builder, all users must also map it to Drive M:.
  17. You correctly determined that the state of a resource is in the ResourceState function. The help on that function describes that the argument to that function is the number associated with the state, and what each state is. In this case the number associated with the Setup state is 5. So your expression would be Workstation1.ResourceState.TotalTime(5)
  18. The expression (inventoryA+ inventoryB)/(OrderA+OrderB) will always work if either is > 0 because there is no chance to divide by 0. The expression (inventoryA)/(OrderA) will not work if the only product produced is B because it will cause a divide by 0. I'm not sure why you would want to record a Tally observation when there are no observations yet? And it seems equally inaccurate (but won't generate an error) if you record a Tally observation on both service levels even though you only just produced one of them. It seems like the correct approach is to record the service level ONLY on a product that has just been produced or completed. But in case I don't understand what you are trying to do, to do exactly what you requested: 1) For the observation Value use an expression like InventoryA/Math.Max(1,OrderA) to avoid the divide by 0, but it will generate a bad value when the value is undefined. 2) To avoid recording that bad value, in the Advanced Options > Number of Observations field put the logical expression OrderA>0 which will cause it to record 0 observations when false or 1 observation otherwise.
  19. You did not specify a value for the Operation Attribute that describes how one entity differs from the next. For example you might specify a state or property named Color where each entity has a different value. I think you are trying to do too much at once. I would first get setup time working correctly. Then I would get setup time reduction working correctly. The SimBit named WorkstationWithSequenceDependentSetup can help you understand both of these. Then you need to think carefully about what your objectives are for "batching". If your objective is simply to minimize setup time, then perhaps simple dynamic selection rule is the best way: If your objective is more complex than that, please describe your objective and I may be able to advise an approach.
  20. In Enterprise Edition you can simply enable logging and you will get comprehensive logs of resource state and usage. In Design and Team editions you can use a Write step in an add-on process to write any information you like to a file.
  21. One approach may be to have a column of type ObjectList in a table. Lets call that column SecondaryResourceList and call the table Table1. Then when you need a secondary resource, you choose SelectFromList and specify the list name as Table1.SecondaryResourceList. The key to making this work is that the entity must already be associated with the correct row in the table. You can do that association many ways... --when the entity is created --at anytime using a SetRow step (e.g. when you determine that an entity needs the list specified in Row 2, do a SetRow: Table1, 2) --using a Search step (perhaps searching through other table columns) Of course you can always do it in processes: For example, if Decide: Property==A, then Seize ListA, Else Decide: Property==B, then Seize from ListB, ... Or, combining these approaches: For example, if Decide: Property==A, then SetRow: Table1, 1, Else Decide: Property==B, then SetRow: Table1, 2, ...
  22. 1) I still don't understand exactly what you are trying to do. Please start from the beginning and describe the flow you want to have. The better we can understand what you are asking, the more likely you are to get a useful response. 2) When you start over, put your post in a Simio Insiders topic so people can respond with sample models. As noted in the description of this topic: "This and all Public Forums have very limited ability to attach files, so we recommend that more technical topics be initiated inside one of the Simio Insider (SI) forums."
  23. As I mentioned above, I suggest that you take advantage of the many Simio books and videos that are available to help you learn Simio. While this forum is a fine place to seek explanations of specific details, it is a poor place to do basic education. A good starting point is to search the Simio Help for the words "routing" and "selection". One topic you should certainly read is "TransferNode - Discussion and Examples" -- that one topic should answer many of your questions. But there are many other topics and SimBits that will come up that will provide more information and examples. I am sorry but I personally do not have the time to reproduce this documentation and models customized to your specific needs. Perhaps another user can do so.
  24. While the book Process Improvement Principles illustrates interesting concepts, it is not a good instructional book on Simio. I recommend that you obtain a good textbook to learn more about Simio. There are many ways of controlling routing thru a model - I spend about 2 hours of class time discussing just that topic. Here are some highlights: --Principle14FlexibleBuffers uses LinkSelectWeights specified on each link to dictate routing. You can use a number, a math or logical expression, and any combination. --Use link selection properties on a node --Use Entity Destination Type on a node --Have the entity follow a sequence --Have the entity constrained to follow a specific network
  25. I'm not sure exactly what you are asking, but perhaps this will help... From Simio's perspective a Repeat Group inside an object is virtually identical to a Table at the model level. When you go to the Data tab and Add Data Table, the lower half of that button presents all the schemas that are already defined in your model, including all the repeat group schemas in all the objects. This is useful when you want to create a table that can pass data into an existing repeat group in an object. You may also notice that on that same ribbon there is a Convert To Repeat Group button. This is for use when you have a table in an object and want to convert it to a repeat group so you can safely embed that object in another model.
×
×
  • Create New...