Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation since 07/01/2018 in all areas

  1. Thanks for visiting our Simio User's Forum. This forum has been created to: 1) Share information about Simio, 2) Provide a way for users to communicate with each other and with us, and 3) Provide a mechanism for us to to hear your ideas so we can make the best product possible. Guests If you are Guest (visiting without having registered), you are welcome to browse all our public forums, but we request that you first join our Simio Insiders group before you view the private areas or can post on any areas. Simio Insiders I encourage you to become more involved as a Simio Insider. Insiders will have full access to browse and post in an extended set of forums available just for you. You will find more information on this in Why Become a Simio Insider. There is one more category of membership that is a little harder to achieve. Simio Team Members (employees) are identified as such when we post so you know that we are providing the straight scoop. (This is not to imply by any means that we are always right ) Finally, if you have any other questions about how the forum works, I encourage you to consult the "FAQ" item from the main Forums menu (top center). Again, welcome to the forum. I am always anxious to hear your feedback (positive or negative) and any ideas on how we can improve this forum or our products. Email me anytime using dsturrock at simio.com
    5 points
  2. A demo model on how to create sub-classed object with moving part, collect stats and show on dashboard. Have fun! ParkingEntryAndExitBoomGates.spfx
    3 points
  3. Hello, I am trying to use git to track changes when working on Simio projects collaboratively. For this I am saving the project as *.simproj and the resulting file and folder structure looks good. But there are too many time stamp changes that make it difficult to track the "important" changes. For example, I only changed the location of the DefaultEntity in the model and hit save. The resulting changes are shown in the attached screenshot, with 20 files shown as changed. The main changes are related to the time stamp. Is there a way to configure Simio such that fewer files will be affected by each change? Thank you. Annika
    2 points
  4. Hi Annika, Check out the Support Source Control option in the Project Properties. (Right click the project in the Navigation Window to access Project Properties)
    2 points
  5. Simio’s neural network implementation allows the import and export of ONNX files, which ensure that Simio is compatible with many machine learning frameworks. This format is well-documented, and there are many third-party packages and applications that can help you convert machine learning models to/from ONNX, or to open and view ONNX files. The attached document provides a basic summary for several of these packages, including tensorflow-onnx, onnx2pytorch, and Netron. Please note that none of these packages are affiliated with Simio, so any issues or limitations of these packages can be discussed on the package’s GitHub page. ONNX Format Utilities.pdf
    2 points
  6. People often want to model two or more vehicles or entities moving together. There are a few components to this: 1) Seizing the resource appropriately - can be done in processes, but often best done within the vehicle object to make the modeling easier. Here, a vehicle has 4 properties added to support use of an operator. 2) Animating them moving together - the picture below shows use of a second queue animated on the custom vehicle. 3) In some cases, you also need the "driver" to be shown moving. The Attached Animation Speed illustrated below, accomplishes that. I have attached a model that uses a custom vehicle object to model a wheelchair which is "driven" (pushed) by a person to pick up a patient. *********** FOR VERSION 190 AND EARLIER ************************************* VehicleWithDriver.spfx You could use the same approch, possibly with just animation changes, to model something like a truck or forklift that requires a driver. In fact, I just added a second model to that same project that illustrates use in manufacturing (e.g. a lift truck and driver).VehicleWithDriver.spfx VehicleWithDriver.spfx *********************************************************************************** ************** FOR VERSION 191 AND LATER *********************************** VehicleX3.spfx VehicleWithDriver_VehicleX3_Examples.spfx For more information on the update, see the post below. ***********************************************************************************
    2 points
  7. This post contains additional files associated with the paper "Agent-base modeling and simulation in Simio" by Thomas Kehl. The additional files include the original paper, an installer for the Simio Agent Library, the Simio Agent Library user extension, and further documentation. These files were created by Thomas Kehl and are not endorsed or supported by Simio LLC. Note also that these files were published with the paper in 2018 and might be out of date. 1585821475_SimioAgentBasedModeling-ThomasKehl.zip
    2 points
  8. Pls refer to below paper for integrating simio and M/L algorithms. very good read. SIMIO和机器学习算法的整合框架【AI】Aston大学Andrew Greasley博士.pdf
    2 points
  9. Entities are prioritized in server according to the server Ranking Rule. Check my attached model. I set Entity1 priority to 1, Entity2 priority to 2 and told the server to prioritize the ModelEntity with the highest priority value. You can play with that logic to prioritize everything the way you want. entity priority.spfx
    2 points
  10. Hi jord41, Simio loads the bound tables once during the initialization in the Simio tables. Data access requires a lot of computing time. (More for writing as reading). I see that you only have 1 column of integer values. My recommendation is that you do not import the table into a Simio table. It's best to create an integer or real state of type vector. Then you use e.g. the Read-Step or the ExcelRead-Step. In conjunction with a timer or the sample example loop of GFurtado you can load the data at intervals. I think that this could be a solution. At least that's how I would do it if I had to work with real-time data. Normally, such real-time data is written to a SQL database by a PLC or something like that. Then you can use the SQL steps anytime in Simio. Best regards Pascal
    2 points
  11. At some point I would start looking for a SCADA system, write it in Python or anything outside Simio. A Simio Engineer would be better suited to help you, but I still believe you could build this inside Simio (maybe through an API?). I manage to build a very ugly version of this that kinda works. It's not real real-time, because I still need to click on the manual import button (I don't know how to help you with this). I set my source's Arrival Mode to On Event; Create a process with a Decide step that checks if the table received a new value: If it received a new value, trigger SourceEvent; If it didn't, check again a second later. As I said, it's not very elegant, but I hope it inspires you to find the right solution.
    2 points
  12. Hi all, I met some questions in building the model. It seems a very general quesiton but I didn't find any solution from internet... I'm building a general workflow model. I want to decide the quantity of a server to optimize the workflow. I want to use experiments or optquest to get the 'best' number for each server. If I set the capacity type as Fixed, then I can set the initial capacity as ''referenced property'', then I can use this as control in experiments/optquest. However, I have a work schedule for each server now which means I couldn't set the capacity type as Fixed. And then I couldn't set capacity as ''referenced property''. I don't know how to control this capacity in my experiments/optquest. I know I can change the 'value'(which means the capacity) in workschedule table. But I can not change this number flexible in experiments... Or I don't know how to set this value as ''referenced property'' . Is there anyone who could help me with this? Thanks a lot!
    2 points
  13. We have an opportunity for an intermediate to advanced modeller to join us for both a Simio and Operational related role. Relocation to Australia/New Zealand is a prerequisite with Visa sponsorship provided. Please note that a minimum contract duration will be in play. Should you be interested, please pm me, or send your resume with contact details to mark@masterschedulingsolutions.com All conversations will be treated as confidential. Mark
    2 points
  14. Thank you .. this is amazing stuff. By the way, is it possible to import and export Process step as well?
    2 points
  15. Is there an example or a SimBit which shows how to do this?
    2 points
  16. We would like to let everyone join Simio Insiders, but since some of the topics discuss unreleased competitive advantages, you must first agree that you won't "borrow" Simio ideas and share them with our competitors. If you can agree to that then please request membership in Simio Insiders at our signup page. Note that free emails such as hotmail and yahoo may not be accepted. We will contact you when your request to join Simio Insiders is approved. Welcome to the group.
    2 points
  17. Simio is a simulation modeling framework based on intelligent objects. The intelligent objects are built by modelers and then may be reused in multiple modeling projects. Objects can be stored in libraries and easily shared. A beginning modeler may prefer to use pre-built objects from libraries; however the system is designed to make it easy for even beginning modelers to build their own intelligent objects for use in building hierarchical models. An object might be a machine, robot, airplane, customer, doctor, tank, bus, ship, or any other thing that you might encounter in your system. A model is built by combining objects that represent the physical components of the system. A Simio model looks like the real system. The model logic and animation is built as a single step. An object may be animated to reflect the changing state of the object. For example a forklift truck raises and lowers its lift, a robot opens and closes its gripper, and a battle tank turns its turret. The animated model provides a moving picture of the system in operation. Objects are built using the concepts of object orientation. However unlike other object oriented simulation systems, the process of building an object is very simple and completely graphical. There is no need to write programming code to create new objects. The activity of building an object in Simio is identical to the activity of building a model – in fact there is no difference between an object and a model. This concept is referred to as the equivalence principle and is central to the design of Simio. Whenever you build a model it is by definition an object that can be instantiated into another model. For example, if you combine two machines and a robot into a model of a work cell, the work cell model is itself an object that can then be instantiated any number of times into other models. The work cell is an object just like the machines and robot are objects. In Simio there is no way to separate the idea of building a model from the concept of building an object. Every model that is built in Simio is automatically a building block that can be used in building higher level models.
    2 points
  18. This light-weight add-in is for importing experiment from .csv file. In order to use that, just unzip the attachment and put the ImportExperiment.dll under the UserExtensions folder of your Simio. For those who want to check the source code, the whole solution is also inside the zip file. This add-in reads control values from you input file and creates scenarios. You can either create a new experiment for your model, or append scenarios to your existing experiment. The number of columns of your .csv file should be the same as the number of controls of your model. For example, if your model has three controls: NumDoctor, NumNurse, NumRoom, then running the add-in with the following input file will give you an experiment with 5 scenarios input.csv: 3, 3, 2 2, 3, 2 1, 3, 1 2, 2, 1 3, 1, 1 ImportExperiment.zip
    1 point
  19. Hi! Yes, there is a way. What you could do is use a String.Format expression. This way you can show multiple variables on the dynamic text. On your case something like: String.Format("{0}: {1} {2}{3}: {4}", "Material Costs", MyModelEntity.MaterialCosts, String.NewLine, "ProductionCosts", MyModelEntity.ProductionCosts) should work. As a plus, you could use a state to disable/enable these labels with a button and a process. Something like: Math.If(EnableTxT, String.Format("{0}: {1} {2}{3}: {4}", "State1", ModelEntity.State1, String.NewLine, "State2", ModelEntity.State2), "")
    1 point
  20. I have attached a simple model using model states to illustrate. I think it should work in a similar fashion using entity states. First, I define the states: Then use those states as Sequence destinations: Until you provide each of those states a value, the Sequence will make no sense and the entity won't know where to go. So on the Source I use an Assign to initialize all the values. This will direct the entity sequentially through Servers 1-4, and then to the Sink: Finally, just to illustrate the technique, on the output node of Server3, I interrupt the normal sequence by Assigning it to instead go to Server5 as its 4th step: If you convert these states to Entity states instead (I was just lazy), I think it should work the same but allow you to selectively override any Sequence Step at any time. UsingStatesInSequences.spfx
    1 point
  21. Make sure SimioAPI.dll, SimioAPI.Extensions.dll and SimioAPI.Graphics.dll are not in the ...\Documents\SimioUserExtensions folder. If there are older version of these DLL in this folder, you will get this error message. It is best practice to not have these DLL in this folder. If there are not in this folder, Simio will find them in its executable folder. If you create your own Visual Studio project and compile into this folder, make sure you set the "Copy Local" == False.
    1 point
  22. Good to know Simio has embeded ANN in new sprint
    1 point
  23. About the job Position: Industrial Simulation Services, Simulation Developer Location: Kitchener, Ontario Experience: 3-5 Years of relevant work experience Division: OTTO Motors Area of Study: Industrial/ Mechanical/ Mechatronics/ Systems Engineering NOTE: Must be able to travel to the U.S at time of application. About Clearpath Robotics Inc. Clearpath Robotics Inc. develops the future of robotics technology through development and sale of industry-leading self-driving technology, products, and services to over 500 of the world’s most innovative brands. Proprietary hardware, software, and services are delivered through the company’s research and industrial divisions: Clearpath Robotics and OTTO™ Motors. Clearpath Robotics Inc. is an award-winning company with recent awards including Robotics Business Review Top 50 Robotics Company, Edison Award for Innovation, Business Insider Top 40 under 40, and Canada’s Top 100 Employers. About Clearpath Robotics Research Solutions Clearpath Robotics’ research solutions group is a global leader in unmanned vehicle robotics for research and development, and provides hardware, software, and services to enable self-driving vehicle development, deployment, and operation. Clearpath Robotics works with over 500 of the world’s most innovative brands in over 40 countries, serving markets that span mining, military, agriculture, aerospace, and academia. Visit Clearpath Robotics atwww.clearpathrobotics.com. About OTTO™ Motors OTTO™ Motors is making material handling in industrial settings safer, easier, and more efficient through development of hardware and software that automates movement of goods in busy factories and warehouses. The company’s industry-leading self driving technology provides automated and on-demand material handling in the most demanding industrial environments, spanning automotive, medical device, aerospace, logistics, and more. Customers trusting their mission-critical material handling needs to OTTO Motors include Fortune 100 brands GE, Toyota, and Caterpillar. For more information visitwww.ottomotors.com. About the Job Having 10’s of robots run around our offices is great, but having hundreds of robots running around inside our computers is even better. Rich simulation environments offer a wide range of benefits to many aspects of our business: fast research, development and validation, sharp marketing tools and strong customer experience / support. We're looking for a Simulation Developer to create and run simulations that will help us optimize our robot fleets and system solutions. As a part of the Industrial Simulation Services (ISS) team, you will act as a subject matter expert and lead modeling and simulation activities. The ISS team works closely with our Systems Engineering, Applications Engineering and Project Management team, to support overall solution design from initial concept all the way to full system design and deployment. You will be building material flow strategies (based on self-driving vehicles) for products already in our arsenal and ones that do not yet exist. Your goal is to develop accurate and robust simulations to evaluate design, lower risk, and enhance the elegance of our solutions to fuel our growth. Primary Responsibilities Creating discrete event simulations for real and hypothetical systems, estimating fleet sizes, identifying traffic bottlenecks, testing what-if scenarios to optimize performance of robot fleets Consulting with project leads, sales team members and customers to obtain understanding of the requirements and to collect the necessary inputs Advising on simulation based metrics to evaluate system risks and performance Analyzing results and making recommendations for facility and material flow design Presenting your simulation results to our team of engineers, our sales team, and to clients Validating models against real world data to maintain accuracy relative to product portfolio Growing and improving our simulation library and internal templates for functionality, accuracy, scalability and efficiency Drafting functional specifications, proposals and effort estimation Recommending product feature and improvement ideas to our Product and Engineering teams, that lead to greater system optimization in the real world Additional tasks may include: Interacting with our development team as necessary to assess impact of new feature or product Developing simulation models to assist Sales & Marketing in demonstrating Clearpath's products and capabilities Using your expertise to assist our engineering services group in developing the more complex system concepts About You You're excited about the role that robots will play in the future, and intrigued by the challenge of joining a young company in this high-growth market. You have skills and experience that you know can make a difference with the Clearpath team, whether we're looking for them or not. You are driven and view work as more than just a job. You are motivated by making an impact on your workplace and you thrive on challenging and rewarding problems. Most of all, you want to be on the right side during the coming robot revolution. The ideal candidate will have: Proven success using simulation solutions to evaluate feasibility of facility design or operational changes Experience with discrete event simulation tools like Simio, AutoMod, AnyLogic, FlexSim, Delmia, and understanding of its limitations Experience collaborating with cross-functional and external client teams to gather comprehensive data required for model development and/or analysis Fearless in questioning to ensure end users get the most value out of your work. You understand the importance of early goal alignment and scope definition Effectively communicate complex model functionality to the client or internal team for assurance of model results accuracy Customer-first mindset Avid self-learner Ability to work independently with minimal supervision and manage deadlines. Able to cope with sudden jarring changes in projects, priorities, and the local gravity field. Bonus Points for: Experience identifying traffic and material flow bottlenecks and mitigating risk Experience in manufacturing industry Understanding of different industry warehouses. You see block diagrams and flowcharts everywhere and speak the language. Experience with Object-Oriented programming Working knowledge of one or more of C#, Python, VB.NET Exposure to working with ROS, Gazebo Past participation in simulation challenges What’s in it for you: Flexible Hours, Health Benefits, Parental Leave, Vacation, Equity, Community Days (paid), Half-Day Birthdays, Passionate and Dedicated Teams Curious to know more about the culture at Clearpath & OTTO, check out: https://clearpathrobotics.com/blog/category/blog/culture/ Come join us if you feel like our values resonate with you, and if you are interested in being a part of making industrial workplaces safer and revolutionizing automation. At Clearpath, we are committed to building and supporting a culture of diversity, inclusion, and accessibility. We hire the best talent regardless of race, color, creed, national origin, ancestry, disability, marital status, age, veteran status, six, sixual orientation, gender identity, and expression. If you require special accommodation to complete any portion of the application or interview process, please contact 1-800-301-3863.
    1 point
  24. Hello Mauricio, Your model is a good approach but it is incomplete because I explained myself a little wrong: What I really meant was that the server the entity came from should not start its processing time. Anyway, thanks for the effort. In case anyone is wondering a similar question, I attach the solution i came up with in a even more complex version. block.spfx
    1 point
  25. Hi, Your issue is that Input@STBR_01_54 is a reference to a Simio object. You want to write out the string name of the object. You should use Input@STBR_01_54.Name Regards, Lucas
    1 point
  26. since exclusion property checks the expression at the start of the simulation run to determine if this step should be excluded from the run my suggestion does not work. simply omit this suggestion:( and thus decide step before the tally step best suits your purpose.
    1 point
  27. simply increase your customer types as credit card and cash payers. For example, expand your table by includeing customer1creditcard and customer1cash, customer2creditcard and customer2cash, customer3creditcard and customer3cash? Also, rearrange their probabilities, sequences, etc. as well. Is it ok?
    1 point
  28. To answer your question specifically with regards to the MultiEchelonSupplyChain example, the OnReplenishOrder process that you see in the process logic of the data table driven example is automatically executed by the Inventory elements when the inventory detects the need to replenish. Go to Definitions -> Elements and click on the Inventory elements and you will see where that process is being referenced. The ShippingReceivingLogic process is being executed when an entity enters any of the BasicNodes placed in the Facility View. For example, click on the DistributionCenter node and in the Add-On Processes -> Entered property you will see the name of that process befiling referenced. The TryFulfillOrder process is executed by the OnCustomerOrder process using an Execute step, which is in term triggered by a customer order arrival. Note that If you are trying to figure out where the name of a process is being referenced, you might go to Project Home in the ribbon UI and go to the Search window. And then search for the name of the process in the model, and it will show you the locations where it is being referenced.
    1 point
  29. I have attached a simple example of one approach. 1) I edited the ModelEntity object and added a state array of type MatrixFromTable. This type of array is automatically initialized from a table. Ideally I might have also added a table to the entity, but Simio doesn't work that way. Instead, I added a RepeatGroup named InitializationValues consisting of a Real property. I used this repeat group as a way to essentially add a "table" into the object, since internal to Simio there is almost no difference between a table and a repeat group. 2) Back in the model I added a table and then imported data into that table from Excel. I used 10 rows, but I could have imported 350 rows with no change to anything else. 3) Now when you place the ModelEntity object into a model, you can pass a table into the InitializationValues repeat group. Again, intead of just typing a bunch of values into the repeat group, I just say go get the whole repeat group from a specified table. This has the result of sizing that state array inside the model entity to match the current size of the table, and then initializing the state values to whatever is in the table. 4) If you run the model, you can open the Watch window on any entity and view the values of its states. I expect this won't solve all your problems, but maybe it will give you a fresh approach to consider. ImportStateValues.spfx ImportStateValues.xlsx
    1 point
  30. I set ModelEntity.Priority = X at Output@SourceX State Assignments property, but it could be assigned anywhere before the server.
    1 point
  31. This option was released on Sprint 191 on June.
    1 point
  32. I'm not sure, because I never done this course. Maybe something like this?
    1 point
  33. Hi Tom, thanks for your help! I've found a solution on my own in the meantime (probably not as sophisticated as yours but it works well). I additionally modelled a small version of the lift itself and created a wait process. The triggering event is "vehicle exits Node X". I used the process for my servers ("after processing"). So whenever a chair exits the node, the gates will open. This is actually quite close to reality where the gate opening interval is not fixed but depends on the speed of the lift and the point in time when an empty chair arrives. All the best, Nico
    1 point
  34. As far as I know you can not accelerate the speed of an entity on any link? you should use tricky solutions to overcome this difficulty. One of the trick is setting the speed of entities to infinity right after entering node a. then changing the desired speed of path 3 and path 5 to some meaningful values. In the attached model this trick is applied. Note that the assigned values (i.e., Path3.Contents.NumberWaiting) should be replaced by any reasonable values. This assignment is only for illustrative puposes. Note that by this way we made the speed of modelentities limitless but at the same time we limit their speed with the speed of paths. you can do any other tricks as well... One of them maybe changing the type of the modelentities right after entering path 3 and path 5 (say path3_modelentities and path5_modelentities) by creating a copy of the associatedobject. Be sure to destroy the original one. And then whenever you need to increase their speed you should search their population by a search step and then assign appropriate speeds to them individually. These are the ones that come to my mind at the moment, but you can find some better methods by pondering. EntitySpeed4_me.spfx
    1 point
  35. Check the server property Ranking Rule. This property determines the order entities are processed. Look at the attached model. I assign the Entity.Priority when it cames out of the sources and set my server to rank entities based on the Entity.Priority expression. I hope it helps. EntityPriority.spfx
    1 point
  36. For each location where you want to start a time interval (Server 1 and "the very beginning" in your example) you would need to add a state to the ModelEntity (NOT to the model). Then for each place you want to end a time interval (server6, "the very end", and server4 in your example), you would need to add a TallyStatistic element and Tally and observation at the point. For example to record the time between between Server1 and Server6: create a modelentity state named TimeDepartingServer1 assign TimeDepartingServer1 the value of TimeNow when entity departs Server1 create a TallyStatistic element named Server1ToServer6Time record a Tally observation (using node or Tally step) at Server6 recording the value TimeNow-TimeDepartingServer1 to Server1ToServer6Time add a status or floor label using the expression Server1ToServer6Time.Average
    1 point
  37. That does provide a limited fix if I were to subclass everything in the Standard Library and only use those. However if I ever wanted to subclass the "ModelObjectImperial" or any of those "[StandardLibraryObject]Imperial" those subclasses revert back to metric.
    1 point
  38. why do you use source? In Workstation 1_exited step you can just increase the currentrownumber by one using an assign step and use a create step just after this assign step, set its properties using any table (and also currentrownumber state variable). and transfer this entity to the appropriate place. you do not need to use source step?
    1 point
  39. a! You may refer to Simbits ‘serverusingtasksequcencewithdatatables_sequencedenpendentSetups
    1 point
  40. If the entity is created (similar to the Bicycle Assembly example in Simio) using an arrival table where the arrival time is specified in the table, the entity will automatically be assigned the associated row in that table. To assign a row reference to an entity without such logic, you would have to have the entity enter an add-on process when it is created and then use the SetRow step to assign the entity an associated row in a given table. The GlobalCurrentRowNumber you mention above could be used as the RowNumber assigned for the entity within the SetRow step, provided there were no conflicts with relational tables.
    1 point
  41. Hello, there! I'm quite new to Simio. I saw "SchedulingDiscretePartProduction" example recently and noticed that there was B2MML data schema which was very impressive. So, What i have wondered is whether the data schema in the example is exactly same as B2MML data schema. Or, are there some changes from original schema? In addition, does anybody know where to get some information about B2MML data schema? Thank you. Jay.
    1 point
  42. Personally I would use the search block set to search the entity population opposed to the find block. It should also be noted that the Exclusion Expression is evaluated at the start of runtime (if I am not mistaken) hence if this is false, the block will default to false for the entire runtime. Hope this helps.
    1 point
  43. Either in the Load Time property or the Loaded add-on process trigger of the object (let's say Worker1) you could add an expression something like this: (Worker1[1].CurrentNode==TransferNode1)* 5 to get a delay of 5 only when at that specific node.
    1 point
  44. I always wanted an easy way to make my models look tidy. One of our developers created this add-in which can align and evenly distribute nodes or objects added to a list. I think usage is pretty easy and will help in building models with many nodes etc. Feel free to use it as a early christmas gift from LOGIO. SimioAlignAddon (2).rar Would be nice if someone in SIMIO will integrate the code into standart product in future, so we can just select multiple objects and align with rightclick. Petr
    1 point
  45. If you would like to be automatically notified about new postings to any Simio forum you should subscribe to the Forum by clicking the Follow button. This can be found at the top of every Forum topic (indicated by the red arrow in the screen shot below). Subscribing will ensure that you are among the first to know about each new posting. You can use the same technique to subscribe to any forum of interest to you to ensure that you get the latest news and have the opportunity to participate in any discussions.
    1 point
  46. Hi, The conversion of Distributions to the correct Simio format has been an issue for me for a while, thus I created this macro to convert from @Risk distributions to simio format distributions. I hope that more will share there conversion methods from other software. Regards, Willem DistributionsSimioTo@Risk.xlsm
    1 point
  47. The Transportation Library provides a collection of objects for modeling cargo transportation using trains, trucks, boats, pipes, and robots. The Tanker object is sub-classed from Vehicle and used to transport discrete and flow entities between node locations. The Tanker has all the same functionality as Vehicle, except it has been extended to have weight and volume limits. In addition to standard discrete pickups and drop offs, the Tanker can also perform continuous flow pickups and drop-offs using a Dock object. The Dock object provides support for flow into and out of entities and vehicles (like a Tanker or HopperCar) supporting flow. The Dock is seized/released by the Tanker/HopperCar during loading/unloading operations at the Dock. The Dock may also follow a Work Schedule. The Pipe object may be used to model continuous flow through a fully filled pipe. In contrast to the FlowConnector the Pipe requires time for the flow material to travel. The Pipe can be used to connect flow between Tanks or between a Dock and a Tank to more accurately model the travel time of material flow from one location to another. This is particularly useful in applications where heavy liquids are transported over long distances through a pipe. The Railcar, Locomotive, and HopperCar objects represent various types of train-related vehicles. Train movements are modeled by defining a track network comprised of ControlNode and Track objects, over which trains move. A train is a linked sequence of RailCars, where the first RailCar in the sequence is a Locomotive. The RailCar can represent a wide range of train cars including freight cars, cabooses, passenger cars, etc. In addition a HopperCar is special RailCar that is provided to support fill/empty operations at a Dock. The HopperCar is a RailCar with the added functionality of a Tanker. The RailCars can be linked together in any order; for example a train might contain two or more Locomotives. The RobotBase, RobotLowerArm, RobotUpperArm, and RobotHand objects are the components used to model a multi-axis robot. The RobotHand is specified as the transporter and the movements of the other robot components are automatically calculated to support the required hand movement. Like all Simio-provided libraries, this library is open so you can look at how it was built, learn from it, and subclass your own objects to improve them. The Transportation Library was created totally by deriving its objects from other Simio objects and then supplementing with Process Logic. No C++, Java, or other user code was required to write or use these objects. And you can also customize the behavior to match your own needs. Unlike our built-in libraries, this is not fully supported (although we can provide some help) and we may not continue enhancing it, particularly if we decide to build this capability into the base Simio products. We are anxious to receive your feedback on this library. Here is a zip file containing the library, documentation, and a few examples. Updated 2014-01-23 - The InputFlow node's Initial Maximum Flow Rate property on the Dock object was not being used to regulate the rate the Tanker was filled. This has been Fixed. The rate the Tanker is filled can now be adjusted using the InputFlow node's Initial Maximum Flow Rate property. Updated 2014-02-17 - Updates to the Tanker and Dock objects Updated 2014-03-17 - Updates to HopperCar and Locomotive behavior when dropping off. Also bug fixes. Updated 2014-03-19 - Bug fixes - Loaded car no longer takes off on its own after loading, but waits to be picked up by the locomotive and The Loaded add-on process now runs after the loading is complete. Updates 2014-04-07 - Added ability to allow a RailCar to request a Locomotive. See example DropPickTrain_DetatchToLoadUnload.spfx Updates 2014-04-17 - Bug Fixes to previous update Updates 2015-03-23 - Bug Fixes to previous update TransportationLibrary.zip
    1 point
  48. The Simio object framework is built on the same basic principles as object oriented programming languages; however these principles are applied within a modeling framework and not a programming framework. For example the Microsoft development team that designed C# applied these basic principles in the design of that programming language. Although these same principles drive the design of Simio, the result is not a programming language, but rather a modeling system. This distinction is important in understanding the design of Simio. Simio is not simply a simulation modeling tool that is programmed in an OOP language (although it is programmed in C#). Likewise it is not simply a set of classes available in an OOP language such as Java or C++ that are useful for building simulation models. Simio is a graphical modeling framework to support the construction of simulation models that is designed around the basic object oriented principles. For example when you create an object such as a “machine” in Simio, the principle of inheritance allows you to create a new class of machines that inherits the base behavior of a “machine”, but this behavior can be modified (overridden) and extended. Whereas in a programming language we extend or override behavior by writing methods in a programming language, in Simio we extend or override behavior by adding and overriding graphically defined process models. This distinction between object oriented modeling and object oriented programming is crucial. With Simio the skills required to define and add new objects to the system are modeling skills, not programming skills.
    1 point
×
×
  • Create New...