FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
Recommended System Requirements This article complements FlexSim's System Requirements. We'll go over each of the major components, discuss their importance to a FlexSim model, and make recommendations to help you decide on the right hardware for your situation. CPU Single Model Run A single run of a FlexSim model (ie not an experiment or optimization run) is single threaded, which means it runs on only 1 CPU core. Buying a processor with more cores won't speed up a single simulation run. To complete single model runs more quickly, use instead a processor with a faster single core clock speed (gigahertz, or cycles per second) or better efficiency (instructions per cycle). In short, for the fastest individual model runs, you want the fastest processor possible, regardless of the number of cores. Experimenter or Optimizer - Multiple Simultaneous Replications When you're doing multiple simultaneous model runs using the Experimenter or Optimizer, FlexSim takes advantage of multiple CPU cores to run simulation replications in parallel. By default, FlexSim spawns as many replications as you have cores; for example, a Quad core processor enables four single-threaded simulation runs to process simultaneously, one on each core, getting you results four times faster than by using a single core processor at the same speed/efficiency. If necessary, you can manually limit the number of concurrent replications by setting the Max Cores value from FlexSim's Main Menu under Statistics > Experimenter > Advanced tab > Max Cores input field. Each replication consumes some amount of system RAM, so if you run out of RAM before you run out of cores, it may be necessary to limit the number of cores used to run replications. Conclusion If you’re primarily doing single simulation runs, choose a faster processor speed regardless of the number of cores. If you’re primarily doing experiments, choose a processor with a high number of processing cores (and make sure your system has enough RAM to support them - see Memory below). If you’ll be doing both, choose a processor that strikes a good balance between core speed and core count. Memory Considerations Random Access Memory, or RAM, is a PC's fast "working" memory, where it stores the data and programs it is currently running (don't confuse this with your much slower hard drive, where data is stored "at rest"). Most consumer Windows computers top out at 32 or 64 GB of RAM, though Windows is capable of supporting much more when coupled with high-end hardware (see limits per OS here). Your computer is always doing many other things besides just running FlexSim. Your operating system itself has memory needs for all the processes it is constantly running. You probably have an antivirus solution, maybe a backup software, and often other utilities running invisibly in the background. Then there are all the applications you currently have open - your email, a web browser, music streaming, etc. All of these are consuming RAM. As you plan your FlexSim hardware, be aware that you should have enough RAM to run all these other applications, plus your FlexSim model, plus have a good amount of extra RAM as a buffer. FlexSim's Requirements Many FlexSim models will use less than 4 GB of RAM in a single model run, but it all depends on your simulation and data. Some large and complex models can and do go above 4 GB of RAM utilization (sometimes well above). If FlexSim's RAM utilization starts approaching a high percentage of your total available system RAM, your computer will turn sluggish or totally unresponsive as it runs out of memory and begins paging out to disk for its memory needs (which is orders of magnitude slower than RAM). A FlexSim system should have 8 GB of RAM as a minimum. For the best experience we recommend 32 GB of RAM or more. Many modern high-end consumer PCs meet this recommendation. See FlexSim's latest minimum and recommended system requirements here. Experiments and Optimizations Experiments and optimizations run several replications of your model simultaneously, so make sure you have enough total memory in your system so that each replication can hit its peak memory needs, while still leaving enough memory for the system and other running applications (OS, antivirus, other background processes, etc.). In addition, the experimenter saves statistics data for each replication by default. Each completed replication will send its statistics collectors' data to the main FlexSim thread, where it will ultimately be stored in the results database file on the hard drive. However, several stages of the transfer process require two copies of the data. In addition, all child processes can transfer data simultaneously. So, if you have a model that generates 100MB of statistics data, and you run an experiment with 8 CPUs, and all 8 CPUs finish a replication at roughly the same time, you'll need at least 1600MB (100 MB x 2 x 8) to transfer the data successfully, on top of all the other RAM utilization. Example Scenario I've developed a simulation model and now I'd like to run multiple replications using the Experimenter. Watching my simulation run normally, while monitoring FlexSim's memory usage with Windows Task Manager, I see that over the entire course of its run my simulation peaks at about 2.1 GB of RAM at its highest utilization. My computer system has 16 GB of RAM. When FlexSim is not running at all, the system uses about 20% of its resources for the operating system and other background processes. This leaves about 12.8 GB of RAM free. How many concurrent replications of FlexSim can my PC support? 12.8 GB / 2.1 GB per replication = 6.1 concurrent replications So, I might get by with allowing 6 concurrent replications of FlexSim, but I feel like 5 is a safer bet to give the system a bit of headroom, and because running the experimenter and collecting results data also requires some additional memory overhead. Since my computer has a quad-core processor and uses simultaneous multithreading (SMT) (which allows each core to run two FlexSim replications at once), FlexSim's default would be to run 8 concurrent replications. My calculations showed that 8 concurrent replications would be too many, and will probably bog down my PC, slowing or halting the entire process. I will limit the number of concurrent replications the experimenter will use by setting the Max Cores value to 5. This option is set from FlexSim's Main Menu under Statistics > Experimenter > Advanced tab > Max Cores input field. Your settings will differ from this example. Check your computer's amount of RAM, the peak memory needs of your simulation models, and your baseline RAM utilization when you're not running any simulations. Factor in a reasonable % as a buffer. Use these values to determine how many concurrent FlexSim replications your computer may support. When allowing FlexSim to use its default of running the max number of replications your CPU supports, please keep in mind that many multi-core CPUs actually run multiple threads simultaneously per core (simultaneous multithreading - SMT). To fully take advantage of all the simultaneous replications that your PC could run at once, be sure to get enough RAM for all the replications your CPU is capable of. For example, a 4-core CPU with support for SMT could run 8 simulation replications at once. Make sure you have the memory to do so! If not, be sure to use the Max Cores option to limit the number of concurrent replications. Conclusion A system meeting FlexSim's minimum RAM requirement will have enough memory for a single model run of most simulation models. If your simulations are large or complex, or if you intend on running experiments or using the optimizer, you should meet the higher recommended spec of 32 GB of RAM or more. Disk Space Requirements The FlexSim installer may be up to 1.2GB in size, depending on the FlexSim version. After installation, FlexSim's program files use up to 1.2GB of disk space. Your model files, CAD layouts, images, custom 3D shapes, import data, exported reports, and other simulation related assets that you provide will take disk space in addition to the software's installation footprint. Disk Speed Most FlexSim models will run from memory, so hard drive speed isn't really an issue. However, if you're reading/writing with files/databases while the model is running, disk speed could make a huge difference; a Solid-State Drive (SSD) is a must in that case. Alternatively, try to do data reading and writing before and after the simulation run, if possible. FlexSim recommends SSDs in general because they make every interaction with your computer feel faster and more responsive. You won't regret an upgrade from a regular, spinning hard drive to an SSD. Conclusion Consider upgrading your hard drive to an SSD if you will be reading or writing to files or databases during a model run, or to generally improve system responsiveness. Graphics Recommended Graphics The better/newer/bigger/faster the graphics processor, the better the performance. Integrated graphics, where a smaller GPU is packaged into the CPU, have gotten much better in recent years, but a discrete GPU remains the most powerful graphics solution. FlexSim works best on Nvidia GeForce RTX or GTX GPUs, but Nvidia Quadro and AMD Radeon are also good solutions. Most recent integrated graphics solutions meet FlexSim's minimum graphics requirements, but in general will not perform as well as discrete graphics. Graphics Driver Updates It is also important to note that you should keep your graphics drivers updated to the latest version. If your graphics hardware meets FlexSim's minimum requirements but you are experiencing graphical issues in FlexSim, a graphics driver update may solve the problem. Please check out this article for some common symptoms and solutions to graphics issues within FlexSim. Virtual Reality FlexSim supports Oculus Rift/Meta Quest 2, HTC Vive, and Windows mixed reality virtual reality platforms (see demo models). Be sure to meet FlexSim's higher recommended specifications if you plan to use VR. Conclusion While recent integrated graphics solutions meet FlexSim's minimum requirements, a discrete graphics solution is a better choice. For maximum performance, FlexSim recommends a recent NVIDIA GeForce RTX GPU.
View full article
Autodesk has released a module that provides better functionality between FlexSim and Autodesk software. FlexSim users can download the module by navigating to the “3rd Party Modules” tab on the FlexSim downloads page: Downloads - FlexSim Account Please note that the module will work with FlexSim version 24.2.2 or later. The first release of the module includes the following: Added support for loading ipt, iam, and rvt files. Added a new AutoCAD FlexScript API. Updated dwg importer using the Mesh API. More information about the module can be found in the user manual here: User Manual - ADSK Interop Instructions and examples of how to use the module can be found here: Autodesk Interop Module Example Models You can find a demo of the new features (10:10 - 29:55) in the Autodesk University class recording here: Elevating Factory Design: FlexSim and the Future of Autodesk Fusion Digital Factory If you need to report a bug, please make a post in the Bug Report space. If you have a new idea for the software, please make a suggestion in the Development space.
View full article
This sample model shows the flexibility and power of the mass flow conveyor object. It contains many examples of stations found in this production process, from depalletizing glass bottles all the way through final packaging. The model makes use of many custom shapes that add realism and visual appeal to the simulation. Mass-Flow-Bottling-Line-Custom-Shapes.fsm
View full article
As many of you have seen from our youtube video, we recently released an early beta version of a new FlexSim Agent module. This module can be downloaded from the Downloads section of your FlexSim account, under the Modules tab. Note that the Agent module will only work properly with FlexSim 20.1.1 or later. Here I'm posting some of the models I created and showed on the video. BasicProximitySystem.fsm TwoPhaseAGVSystem.fsm OnePhaseAGVSystem.fsm Boids.fsm AStarSystem.fsm RoomEvacuation.fsm HallwayTravel.fsm The AGV models aren't perfect (there's some tweaking needed, and there are some bugs that need to be fixed), put I'm putting them out there anyway. Since this is a beta version, I'm going to just upload unannounced module updates to the downloads section, so you can check the dates/versions on the downloads page against the version you have installed if you want to get the latest and greatest.
View full article
FlexSim 2020 Update 1 is available. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Updated the Statistics Collector to be simpler and more user friendly. Added a PowerPoint FlexScript API. Added an HTTP FlexScript API. Added a sorting tab to various charts. Improved performance of chart templates. Replaced the code profiler with a new Performance Profiler. Added a Memory Profiler. Added OnEntry and OnExit events to TaskExecuter objects. Added an icon to library items that launch a pop-out library of choices. Reorganized the dashboard library using the pop-out library to consolidate charts with multiple visualizations. Updated the WebServer to use the Version Selector. Added a Find/Replace UI for global tables. Added support for Ctrl-F and Ctrl-H keyboard shortcuts for various windows. Added support for renaming objects using the F2 keyboard shortcut. Added a Vec3 overload to the Object.setRotation() method. Added a stop parameter to the userinput() command which will stop code execution until a value is entered. Added a default parameter to the realtime() command that returns realtime(1)+0.001*realtime(2). Updated various pickoptions to use the TaskSequence and TaskExecuter APIs. Added tutorials for the Statistics Collector. Added a Variant overload to the Table() constructor. Fixed some issues with the importtable() command. AGV Added new Train functionality. Added offset travel functionality to the AGV network. Added a time-based trailing option. Added the routing drawing feature to a right click option. Updated Quick Properties' apply to all selected objects functionality to work with AGV objects. Made arrows bigger. Fixed several spinners in Quick Properties not applying immediately. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Changed behavior for when a TaskExecuter is connected to an AGV network, and is set to use the navigator for its offset travel. Previously, the navigator was hard-coded to find the closest control point. Now, you instead need to add an OnAGVOffsetTravel trigger to the navigator, wherein you can direct the AGV how to offset. People Added clipboard, test tube, and pill bottle flow items. Added a Max Speed property to Equipment objects. Updated Transport and Equipment objects to do low priority returns. Added the ability to install instanced People flows. Updated the LocationStaytimeHistory chart to handle people entering and exiting transports inside a location. Process Flow Added an AGV travel activity. Updated the Sink to notify parent tokens on a Run Sub Flow activity that the child token finished the subflow. Updated the Wait for Event and Event-triggered Source activities to be able to display more than one link at a time. Updated the sampler for Universal Edit fields to display process flow variables and current labels when sampling white space. Added a pop-out library for choosing the shape of Container objects. Added a pop-out library for choosing the type of travel activity. A* Updated the Heat Map to use a Color Pallete.
View full article
This small model shows how to batch various parts together to form 'valid' combinations as they become available. This differs from a regular combiner where the component quantities are set in advance of the components being accepted in the combiner (often based on the type of item on port 1 entry). The valid combinations are shown as the quantities required for a number of products in a global table "ProductPartQuantitiesGrid": By referencing the first picture and this table, you may be able to see that the model first constructs 4x Product2 followed by one product1 and a Product3. In the background process we are creating a token for each product which is then trying to pull all the parts needed while competing with the other products. This part of the process could be constrained in some way, for example where there is a target for the number of each product to produce over a time period. So these tokens are being created in the Object Process Flow of the object we're calling OpportunityCombiner at time zero based on the table shown above: Instead of the normal array generation this model creates a table label of the required parts for a product and stores it on the token. For Product1 that looks like this: Tables aren't quite fully supported as labels yet so the syntax is a little odd when using them - in this case we do it like this: Table(token.partsTable)[1]["Part"]  // evaluates to 'F' Setting the labels up so that syntax works is a bit more complex. Note that the partsTable label is actually a pointer to the data table label on the token - called partsTableData. To get the view shown above you need to right click on the label partsTabelData and select "Explore As Table". Hopefully in the future this may be more streamlined if more people start using labels as tables. The grid table doesn't play nice with sql, so another table creates itself at reset with a structure that is sql friendly: That means the label table can be created with this query: SELECT Part,Quantity FROM ProductPartQuantities WHERE Product=$1.product What remains for the product token just involves getting the parts (a subflow) and them moving the array of all items to the combiner (a queue in the example); stacking them together and releasing to the conveyor before looping back to try and produce another. Below you see the main flow with four tokens - one for each product defined in the grid. The subflow to get parts reads the token's table of parts for its product, and tries to get the correct quantities for each. This is similar to @Jordan Johnson 's solution for pulling from multiple lists, but is instead considering the table of parts from one list rather than arrays of resource lists and quantities. The key aspects of this flow are that 1. the first loop in the check section leaves the parts on the list, while the 'commit' section removes them 2. we exit the check loop by using the pull timeout when we fail to pull the required quantity of a part type 3. those that fail listen for pushes to the parts list 4. success full product pulls insert the items pulled to the tokens label 'allItems' for later use. Attached is the model. It should be relatively simple to transfer the process and tables to another model. OpportunisticCombiner.fsm
View full article
I have created the following model to use elevator for different floor. I am not sure what I have missed out that the elevator is not working. Please advise me. Thanks multi-floor.fsm David
View full article
FlexSim 2017 Update 1 is available. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Changed FlexSim to store strings using UTF-8 encoding. Added support for Oculus Touch controllers. Implemented OpenVR for HTC Vive compatibility. Improved the shadow frustum calculation in VR so that shadows look better. Added a global preference for changing the resolution of the shadow map. Added support for nested queries in SQL. Added ROW_NUMBER as a SQL keyword. Implemented F2 and Esc functionality in tables. Updated the table view and labels tab to be more robust with different datatypes. Added Table(name) method for referencing Global Tables. Added more FlexScript classes, including List, AGV, Conveyor, and TrackedVariable. Added more properties and methods to existing FlexScript classes, including Object stats and additional string methods. Improved scientific notation for literals in FlexScript. Added a start value to tracked variables. All tracked variables in the model now reset on model reset. Changed itemtype references to referencing an item's type label instead. Improved the Person flowitem's 3D shape. Added repeating events to time tables. Added a short description field to user commands. Made the gantt charts and time charts scroll with a fixed time window. Removed the global table Clear on Reset checkbox and replaced it with a reset trigger. Added new visualization options for the Rack. Added duplicate buttons to the Excel Interface window. Added a duplicate option to the Toolbox's context menu. Taskbar now shows experimenter/optimizer status and runtime based upon stop time. Disabled deleting objects while the model is running. Fixed an issue with the undo history when pasting over nodes with pointer data. Fixed issues with using the ternary operator after properties. Fixed an issue with writing to Access databases with read-only fields. Included fixes listed in 17.0.4. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Removed the FlexSim WebServer application from the default installation and developed a new WebServer application using Node.js that streams the 3D view much faster. The new WebServer can be downloaded through FlexSim's Online Content. Existing models will continue to work with itemtype, but new models should be built using a type label instead of the itemtype attribute and commands. Process Flow Added an Assign Released Resource(s) To field on the Release Resource activity. Added functionality to allow you to Ctrl+Drag activities in an activity block. Added a right-click menu option and Alt+Click to open the Token View. Added a sampler to the assign labels Label Name field so you can sample other activities or tokens to get label names. Added a right-click menu option to open multiple views of a Process Flow. Added an Assign To property to the Create Tokens activity. Added a Make Array label aggregation type to the Batch. Added Center in View buttons for fields with pointer data. Added a name property to the Token FlexScript class. Fixed a bug with duplicating Process Flows using the Toolbox. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Updated the Pull From List activity so it does not assign a null label when nothing was pulled or the token was released early (manually). Previously, if you used a Max Wait Timer or Max Idle Timer (or some other mechanism) to release a token from a Pull from List prematurely, the label specified in the Assign To field would be created with a value of NULL. Now, the label will not be created. This may break other models that are checking to see if the label value exists. For example, saying objectexists(token.pulled) will throw an exception if the pulled label is never created. This can be easily remedied by changing the code to objectexists(token.pulled?). The ? will cause the value returned to be nullvar when the pulled label does not exist. Universal Edit fields are now more strict when accessing labels on a token. Previously, typing token.labelThatDoesNotExist would happily return NULL and move on. Now the Universal Edit will throw an exception if the label doesn't exist. This does not include Universal Edit fields that assert labels, for example the Assign To fields.
View full article
FlexSim 2016 Update 1 Beta is available. Download FlexSim 2016 Update 1 Beta (updated 17 June 2016) If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes FlexSim 16.1.0 Added group commands (groupaddmember(), groupmember(), groupnummembers(), groupremovemember()). Global Lists will now update their Initial Content on reset when connected to a Group if the group's members change. Added support for the UPDATE clause in SQL. Added support for the RAND expression in SQL (uses stream 0 and will always be the same for a given query/row selection combo). Improvements to speed and memory usage when performing SQL inner joins. Tracked variables with type Categorical can now store arbitrary states. Added a Kinetic Level tracked variable type (e.g. Battery Level). You can now hold down the Alt key while clicking and dragging in the 3D view to ignore all objects. You can now resize objects while maintain their aspect ratio by pressing both the left and right mouse buttons down on a sizer arrow. Updated dashboard charts to support x-axis scaling. Added OnStop and OnResume events to 3D objects for use with event listening objects (Wait for Event and Event-Triggered Source in Process Flow). Video Recorder can now record Dashboards. Time Tables, MTBF/MTTR and User Events can now be disabled. Experiment variables can be set to enable/disable these objects. Fixed an issue with the VideoRecorder not loading properly. Fixed issues with windows and popups not opening on the correct monitor when using a multiple monitor setup. Fixed Fluid Conveyor throwing exceptions on reset. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Updated to OpenGL 3.1. Deprecated OpenGL functions, such as glBegin(), glEnd(), glVertex(), glNormal(), and glTexCoord(), may no longer work correctly on some graphics cards. You should instead use the mesh api. Changed the way that fixed resources (except the Combiner) receive items when they are being transported in. Previously, when they were notified that an item was being transported in, they would close their inputs and create an event to receive the next item. This would cause problems if the upstream objects had multiple items to send because their routing strategy would work differently when transporting vs not transporting. We have fixed this so that routing strategies will work the same when transporting as when not transporting. This may change the way that old models work because it changes the events that are created, and, obviously, it fixes routing strategy logic. menumain(), menubelow() and getviewmenu() have changed. Instead of returning a double, they now return a var. Any calls to these commands will need to be updated to use var or the value returned will be 0. double myMenu = getviewmenu(); Changes to: var myMenu = getviewmenu(); Conveyor Added Ports to the Entry and Exit Transfers. Added a Restart Delay setting to Conveyor Types. Fixed the Join Conveyors Tool when connecting conveyors with a custom conveyor type. Various bug fixes and improvements specifically with regards to items moving between conveyors and transfers. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Changed the way stopping a non-accumulating conveyor works when propogating stops to straddled conveyors. When a conveyor is stopped, it will act the same as if an item on the conveyor were stopped. Process Flow Added Preemption activities (Save Token Context, Release Token and Restore Token Context). Added gettokens() and getbatch() commands. Added Templates for Fixed Resource and Task Executer Process Flows. Added a Token Data to Preserve option to the Sink and Finish activities. In the Tokens window you can view Dead tokens and explore their data. Token Trace History is now stored as a label on the token. Added a Speed Type and Repeat Type to the Run Animation activity. A lot of improvements to the Zone. Updated the evaluation of the Return Value from the Finish activity so that executesubflow() can get a return value from multiple Finish activities. Added Activity Profiles to the token trace histories. Fixed a bug causing the Wait for Event to evaluate its Max Wait Timer even if the token left the activity. Fixed issues with the releasetoken(), createtoken(), and releasebatch() commands working differently when running vs stepping. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Changed the way that a token manually released (preempted) from waiting in a task sequence activity manages the task that it's waiting on. Now the task will be removed, and the task executer preempted if currently working on it. This may change older models that release tokens in task sequence activities. AGV Added Event info to AGVs and Control Points for use with event listening objects (Wait for Event and Event-Triggered Source in Process Flow). Added AGV templates to Process Flow. Fixed bug with way points not firing their OnArrival for redirected AGVs. Fixed issue with arrival waypoints not firing correctly with non-zero end speed travel tasks. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Fixed the order by which AGV trailers are attached to their AGV. This will affect old model trailer ordering.
View full article
Names and version numbers   FlexSim releases have names like “FlexSim 2016 Update 1”, with corresponding version numbers in the format year.update.bugfix.   The year version number tracks with the “release year” when the software was released. For example, FlexSim 2016, having version number 16.0.0, was released for the 2016 “release year”. A “release year” roughly follows the calendar year, but a 2017 release could come at the end of the 2016 calendar year, for instance. The update version number is a count of how many feature-updates have been produced for a “release year”. For example, version 16.0.0 is the first feature-release for 2016. It is not an update, so the update version number is “0”. FlexSim 2016 Update 1 has version number 16.1.0 – it is the first update to the 2016 release. 16.2.0 is the 2nd update, and so on. Bugfix version numbers change when software is released without significant new features, but where errors, inconsistencies, or other bugs are fixed. For example, the first bugfix release for FlexSim 2016 Update 1 is 16.1.1, the next 16.1.2, and so on. Release schedule   New versions of FlexSim are released on a loose schedule:   Yearly release: November beta, December release. Update 1: March beta, April release. Update 2: July beta, August release. Bugfixes: as needed As with all future-looking plans, this schedule is subject to change. You should not rely on this schedule for making purchasing decisions.   How licensing works for a given version number   A new license is required for feature releases (i.e. year and update releases). Bugfix releases do not need a new license. For example, if you have a 16.1 license, you can license any FlexSim 2016 Update 1 releases, including all its bugfix releases, like 16.1.0, 16.1.1, 16.1.2, etc.   Licenses can also be used for older versions – i.e. they are backward compatible. For instance, if you have a 16.1 license, it can license any 16.1.x release, plus all older versions of the software back to 5.0.0. However, your 16.1 license will not work for any newer versions, such as 16.2.x or 17.0.x.   License Codes   Your license code should look something like mycompany.com03-A9B8C-7D6E5-F4G3H-FSENT17.1. Each part conveys some information:   mycompany.com- means this seat was initially licensed to mycompany. 03 is a unique index number for the license, but the actual number is meaningless. This number persists across upgrades. The mycompany.com03 license, if upgraded to version 18.0 or 18.1, etc, would still begin with mycompany.com03, even though the random characters and version number would change. A9B8C... The middle part of a license code is a unique, random mix of letters and numbers. It is different for each license, and changes when a license is upgraded for the next FlexSim version. FSENT signifies the product, in this case FlexSim Enterprise, but you may also see FSEDU for Educational, or OPTQU for OptQuest, etc. Each FlexSim product has a unique product code. 17.1 specifies the version number this license is good for. It can be used to license any FlexSim 17.1.x version or earlier, back to version 5.0. The license won't work for later software versions, like 17.2 or 18.0. For that, the license must have current maintenance and be upgraded for use with the new version. Upgrading Licenses   To use a new year or update release, your FlexSim license will need to be upgraded.   The exact steps for upgrading your license differ based on your type of license:   License Server - Upgrading your hosted licenses Standalone - Upgrading your license If your maintenance agreement has expired, or if you have timed licenses, your licenses will not upgrade. In either case, please contact your local FlexSim representative.   If you install and run a version of FlexSim software greater than your license’s version number, that newer software won’t be licensed, but will run in the feature-limited "Express" mode. To use a fully-featured, licensed copy of the software, make sure that the software’s year.update version number is not greater than your license’s year.update version number (which is typically visible in the license code itself as the final digits of the code - see License Codes above).   Long-term support (LTS) versions   From Wikipedia: Long-term support (LTS) is a product lifecycle management policy in which a stable release of computer software is maintained for a longer period of time than the standard edition.   FlexSim maintains the year release for more than a year, overlapping with the release of the next yearly release for a few months.   Here is an example of how it works:   In December 2017, the current LTS release was version 17.0.11. That same month version 18.0.0 was released. Because 18.0 was brand new, it was not yet considered the LTS version - we let it mature a bit before promoting it to the current LTS. During the time when 18.0 was the latest version, new bugfix releases were added for both 18.0 and 17.0. Finally, in April 2018, 18.1.0 was released. At that time the 18.0 branch was on its 4th bugfix release, 18.0.4, and the 17.0 LTS branch was up to 17.0.13. With the release of 18.1.0 the 18.0 branch was promoted to our current LTS release, and the 17.0 LTS was retired - it receives no further bugfix releases.   As with all future-looking plans, our LTS plan is subject to change. You should not rely on this plan for making purchasing decisions.   Downloading an appropriate version of FlexSim software   To download the version of FlexSim software that best matches your license version:   Log in to your FlexSim Account at https://account.flexsim.com/login/. Visit the downloads page at https://account.flexsim.com/downloads/. Download the latest bugfix release for your license’s version.   If a version of the software most appropriate for your license version is not listed on the main download page, click the More Versions button next to the product matching your license (see screenshot). This will open an expanded view with older versions of that product. Older software versions are not available for download from within unlicensed guest accounts.     If your FlexSim Account is a guest account (does not own a FlexSim license), only the latest software versions are available for download. Your FlexSim Account must own a license directly, or a license owner can share their license info with you, in order for you to see the More Versions button and have access to download older versions of the software. Visit your Licenses page to see if your account has access to licenses and have them loaded into your account session, then go back to the Downloads page and look for the More Versions button. Older software versions are not available for download from within unlicensed guest accounts.   Model compatibility across FlexSim versions   FlexSim versions are backward compatible, meaning that when a model built in an older year.update release of the software is opened in a newer year.update version, the model is put through an upgrade process that updates the model for use in that later version:     We recommend always saving this updated model under a new file name in order to preserve the original, non-upgraded model file, which you should archive for safe keeping.   FlexSim is NOT forward compatible, meaning that a particular year.update version of FlexSim does not support opening model files saved in newer year.update versions of the software. This is due to changes that are introduced to objects, data structures, added features, etc., that an older version of the software would not support.   A FlexSim model built with a particular year.release version of FlexSim can be opened by any bugfix release of the same year.release version, forward or backward. Bugfix releases do not change objects, data structures, etc., in such a way as to break model compatibility across different bugfix versions of the same year.update FlexSim release.   You should use judgment and care in upgrading models and continuing model development in newer versions of the software. If your simulation team has licenses that have expired at different times, and a colleague is on an older license and you are not able to renew maintenance at this time, you may want to standardize on that lowest version number of FlexSim so that models your team creates and edits can be interoperable among teammates.   FlexSim's model upgrade functionality is fairly robust, but if you are upgrading a model from a version of FlexSim many years older than the version you're opening it in, it may be necessary to open and save the model in an intermediate version (or two). Post a new question here on Answers if you encounter any problems upgrading your FlexSim model to a later version.   Opening Files from different versions (Flexsim Version Selector)   If this is a first time install of the FlexSim software, you can double click on any .fsm file and Windows will ask you what software you'd like to open .fsm files. In the program selection scroll down to the version entitled Flexsim Version Selector. This application will automatically open any .fsm file in the version that the file was originally saved or created in.   Alternatively, you can right click on a .fsm file in Windows and navigate to the option Open With > and then navigate to Flexsim Version Selector from here. This will set the version selector application as the primary method for opening .fsm files in the future.  
View full article
Visually represent the number of times any AGV enters a segment of the AGV path
View full article
FlexSim's Webserver is a query-driven manager and communication interface for FlexSim. It allows you to run FlexSim models through a web browser like Google Chrome, FireFox, Internet Explorer, etc. Since the FlexSim Web Server is a basic service to allow FlexSim to be served to a browser, you may decide you want a way to proxy to this service through a full service web server that you can control security and authentication through. This guide will walk you through proxying to the FlexSim Web Server through Apache web server. Install the FlexSim Web Server Program Download and install the FlexSim Web Server from https://account.flexsim.com Edit C:\Program Files (x86)\FlexSim Web Server\flexsim webserver configuration.txt Change the port from 80 to 8080 Start the FlexSim Web Server by double clicking flexsimserver.bat Test the server by going to http://127.0.01:8080 It should look like this: Install Apache Web Server for Windows Download Apache x64 from https://www.apachehaus.com/cgi-bin/download.plx Extract the httpd-<version>.zip file you have downloaded Go into the httpd-<version> folder you have extracted and copy the Apache24 (or Apache25) folder to C:\ Install Apache Dependencies Make sure you have the Microsoft Visual C++ 2008 SP1 package installed. You can get it here: https://www.microsoft.com/en-US/download/details.aspx?id=26368 Download the vcredist_x64.exe package and run the installation Configure Apache Open C:\Apache24\conf\httpd.conf in a text editor Look for the following lines in this configuration file and remove the # character #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_http_module modules/mod_proxy_http.so #LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so Those modules should now look like this: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so At the bottom of the httpd.conf file, add these 3 lines and save the file: ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080/ AllowEncodedSlashes On Run Apache Web Server In a file explorer or CMD line prompt, browse to the C:\Apache24\bin folder and run httpd.exe Now that you have the FlexSim Web Server proxied through Apache, you may decide you want to configure Apache to handle security, authentication and customization. Since this is out of the scope of this guide, you can find details on the Internet that can guide you to setting these customizations up. A few resources you may consider: https://community.apachefriends.org/f/ https://stackoverflow.com
View full article
FlexSim 2023 Update 1 Beta is now available. (Updated March 14) FlexSim 23.1.0 Release Notes To get the beta, log in to your account at https://account.flexsim.com, then go to the Downloads section, and click on More Versions. It will be at the top of the list. The More Versions button does not appear when logged in as a guest account. The beta is available only to licensed accounts and accounts that have a license shared with them. Learn more about downloading the best version of FlexSim for your license here. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Bug Report space or Development space.
View full article
FlexSim 2023 Update 2 is now available for download. You can view the Release Notes in the online user manual. FlexSim 23.2.0 Release Notes For more in-depth discussion of the new features, check out the official software release page: FlexSim 2023 Update 2: NVIDIA Omniverse, USD, Restricted Models, and more If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Bug Report space or Development space.
View full article
FlexSim 2017 Update 1 or later is compatible with Windows Mixed Reality headsets and controllers, such as the Samsung HMD Odyssey. To configure such devices, you use the Windows Mixed Reality Portal app in Windows 10 and SteamVR. FlexSim uses SteamVR's OpenVR API to communicate with these devices. Microsoft provides instructions for how to Play SteamVR games in Windows Mixed Reality. I will provide additional summarized steps below: 1. Configure your hardware with the Windows Mixed Reality Portal app in Windows 10. 2. Install Steam. 3. Within Steam, install SteamVR and Windows Mixed Reality for SteamVR. 4. If you are able to do the SteamVR tutorial with your headset, then you should now be able to use VR Mode in FlexSim: Note: While using a Windows Mixed Reality HMD (head-mounted display), pressing the Windows button on the controllers may take you to the Windows Mixed Reality Portal Home: If you end up here, you can take the headset off and put it back on to transfer back to FlexSim: Also, if you appear to be floating far above the ground, you can recenter the headset pose with this script, which you could map to a Custom Button on your toolbar: applicationcommand("recenteroculusrift");
View full article
The ideal way to access the User Manual is by viewing an electronic copy either online or inside the software. Online User Manual The User Manual is available online at docs.flexsim.com. There you can select a software version and manual language. We hope to provide additional languages in the future. In-software User Manual There are two ways to open the manual inside FlexSim: Click the User Manual button on the main toolbar. Click the Help menu and then click User Manual. Why the electronic manual is preferred The online / in-software version of the User Manual is better than a print or PDF version for many reasons, including: Regular updates - The electronic version keeps up with every new FlexSim release. A printed manual unfortunately goes out of date every four months with each new release of FlexSim. The online manual allows you to also view older versions of the manual. Animated GIFs - Animations enhance communication by making it possible to see FlexSim in real time. Animated GIFs won't work in a printed copy. Better search - The online version allows you to search the manual using Google. The in-software version also has a search program which is easier than trying to find relevant keywords within a large document. Styled and reflowable tables, images, and tip boxes - While these elements look good on the web, print or PDF versions don't always correctly format their placement within the document. Better organization - A printed manual won’t always maintain the same organization as the online and in-software manual, making it more difficult to navigate. Mini-table of contents - Each topic has easy navigation within each topic via inner-links. A printed or PDF mini-table of contents (found in most topics) can't function as a clickable index, making it difficult to easily skip to relevant sections within a topic. Printing topics from the User Manual While we don't recommend printing the entire manual, you can easily print individual topics for later reference. Print from the online manual Visit docs.flexsim.com using your favorite modern web browser. Use the table of contents in the left navigation bar to visit the topic you want to print. Use the printer button in the upper right of the topic window to print the page: Print from the in-software manual In FlexSim, open the User Manual and browse to the topic you'd like to print. Press the 'world' button to open the topic in your web browser. Choose the print function inside your web browser - depending on your browser, you may be able to right-click the web page and choose Print, or you can use the keyboard combo Ctrl+P.
View full article
This article reviews one method for making a state Gantt chart for the default and alternate state profiles: Example Model You can download the model for this walkthrough ( stateganttdemo.fsm). The model has two multiprocessors, in a Group called Multiprocessors. Each multiprocessor has two processes: Process1 and Process2. To make the chart, we will first make a Statistics Collector, and then a Calculated Table. Making the Statistics Collector Make a new Statistics Collector. On the Event Listening tab, use the Sampler to listen to On State Change of the group of multiprocessors. You can leave the parameter names alone. However, we need to add a label, so we can record the profile number. Select the new event, and then use the green plus button in the Event Labels area to add a label for this event. Set its name to ProfileNum, and its value to the following code: data.StateProfileNode?.rank The event settings should look something like the following: Next we need to set the row mode. Make sure it's set to Add Per Event, with no row value. As the final configuration step for the statistics collector, we need to set up the columns. There should be four columns in this collector: Time - In the pick options, select Time, then Model Date/Time Object - In the pick options, select IDs, then ID of Event Object Profile - Type data.ProfileNum for the value. The default storage and display format are fine. State Type the following code: data.eventNode.as(Object).stats.state(data.ProfileNum).profile[data.ToState + 1][1] Set the Storage Type to String The code is necessary because On State Change occurs before the state is set to the new state. So the code is looking up the name of the future state in the profile table. When you reset and run this model, you will see a table like the following: Making the Calculated Table Make a new Calculated Table, and give it the following query: SELECT Object, Time as StartTime, LEAD(Time) OVER (PARTITION BY Object) AS EndTime, State FROM StatisticsCollector1 WHERE Profile = 1 This query creates an Object column as well as a Time column. To get the time that the current state ends, we look to when the next state begins. The LEAD() function looks ahead in the table, and the OVER(PARTITION BY Object) clause makes sure that LEAD() makes sure to look to the next row with the same Object. We also record the state column, and filter out the standard state profile, keeping the special multiprocessor state profile. Once you get this query to work, change the Update Mode to By Interval, and set the interval to 20 or 30. Since the Statistics Collector table will get longer and longer, the query will become more and more expensive as the model runs. To control how much time is spent running the query, we use an interval. The final configuration of the Calculated Table should look like this: You will need to set the Display Format of each column on the Display Format tab (Object, Date/Time, Date/Time, and Raw). Making the Chart Make a new dashboard, and create a Gantt chart. Point it at the Calculated Table. When you do that, the chart should fill in all the other columns correctly. Charting Both State Profiles for Both Objects In order to chart both profiles on the same chart, we first need to add a column to the Statistics Collector, and then update the query in the Calculated Table. The new column should be named ObjectAndProfile, and a Storage Type of String. Use the following code for a value: data.eventNode.name + " - " + string.fromNum(data.ProfileNum.as(int)) Then change your query to the following: SELECT ObjectAndProfile, Time as StartTime, LEAD(Time) OVER (PARTITION BY ObjectAndProfile) AS EndTime, State FROM StatisticsCollector1 With these changes, you should be able to view both profiles for both multiprocessors.
View full article
This article borrows from @jordan.johnson's original guide for deploying a distributed experiment/optimization with Amazon. Distributed Terminology Please be familiar with the terminology related to experiments and optimizations. Replication - a distinct model run. We'll use this term below for both replications (experimenter) and solutions (optimizer). Instance - a system, whether virtual or bare-metal, local or remote, meeting FlexSim's recommended requirements, and used for running distributed replications. Main PC - the system from which the user configures and initiates the distributed experiment or optimization. The Cloud - a shorthand term for remote servers/systems hosted in a data center, sometimes by a 3rd party such as Amazon, Microsoft, Google, or others. Background Concepts In discussing distributed experiments or optimization, you should start with a good understanding of both the Experimenter and the Optimizer. Please read and understand this user manual entry which includes explanations of key concepts that will be important as you continue. Other user manual articles provide additional guidance on configuring your own experiments or optimizations. Search the online user manual and this community if you have additional questions regarding experiments or optimizations, as needed. Using the experimenter requires a FlexSim license. The optimizer requires a license for the OptQuest add-on. Please contact your local distributor for more information or to request a test license for FlexSim and/or OptQuest. What are distributed experiments or optimizations? Experiments or optimizations can create dozens, hundreds, or even thousands of distinct model runs (or replications) to test various scenarios, build confidence intervals of the results, or zero-in on an optimal solution. A distributed experiment or optimization takes those individual model runs and assigns them (distributes them) to run across a group of computers. If you needed to run 1000 replications, and you have 4 computers available, each computer could run 250 replications, getting your results 4 times faster. When should you distribute? Using distributed replications can significantly reduce the required time to run an experiment if: The single-run time for your model is high (a couple minutes or more) You anticipate running a high number of replications If the time per replication is short, then the increased communication overhead may outweigh the benefit of using distributed replications. The communication overhead increases because all distributed replications still report results to a single FlexSim process on the Main PC, and that communication occurs over the network (local instances) or internet (remote instances), rather than on a single computer. If an experiment or optimization completes in an acceptable amount of time, you may not need to use distributed replications. Financial Costs 3rd party cloud providers such as Amazon, Microsoft, Google, and others, charge for their services. Your cost is usually based on the hardware you provision for your Windows instances, and the length of time those instances are live. Typically you only run your instances when running your experiment or optimization, and cancel or decommission your instances when your replications are complete. In this way you minimize the cost of your distributed experiment or optimization. The costs and process of decommissioning your provisioned instances differ based on which 3rd party cloud provider you use. You may have access to local computing resources that could be configured for use in your FlexSim experiments or optimizations. In this case you may avoid additional costs relating to 3rd party cloud providers by using your own on-premises computers. Licensing for distributed Windows instances Windows instances used solely for distributed replications DO NOT need an individual FlexSim license. Only the FlexSim installation on the Main PC must be licensed. System requirements for distributed Windows instances Graphics A Windows instance should meet or exceed FlexSim's recommended requirements. However, because replications run as background processes without graphics, they need not meet the graphics requirements and do not need hardware accelerated graphics. CPU An instance can run as many concurrent replications as it has CPU cores. If, for example, an instance has 32 CPU cores, it can run 32 replications of your model simultaneously. RAM For this example of a 32-CPU Windows instance, if you want FlexSim to run 32 replications simultaneously - one on each core - then the instance must also have enough RAM to handle 32 concurrent model runs. On your Main PC, use Windows Task Manager to watch a single model run's RAM usage to determine its peak RAM utilization. If your model's RAM utilization peaks at 3GB throughout the course of a model run, you should make sure your 32-CPU system has at least 32*3 = 96GB of RAM for replications alone, along with a good ~10% more for additional overhead used for the Webserver and the statistics gathering and reporting from all the replications (this number could be more or less, depending on the model's stats gathering). In addition, you must account for your system's baseline RAM utilization - how much RAM it uses just to run the operating system and all its background processes. You can find this baseline by checking the Task Manager at a moment when you're not running any simulations. Add all these together to see how much RAM would be necessary to run a replication on each core of the instance. If your instance doesn't have enough RAM to handle that many simultaneous replications, you'll need to limit the number of CPUs FlexSim will use when configuring your Cloud Computing settings from the Main PC. Disk Disk space is usually not an issue. However, if you are using the Store Data on Hard Drive option in the Statistics Collector, you will need to be sure that there is enough disk space to run the model to completion on the hard drive, multiplied by the number of cores. The amount of disk space on each instance may affect the total cost of using a 3rd party cloud provider. More information See the related sections in the article Recommended System Requirements for a more in-depth discussion of system components such as CPU and RAM, and how they relate to running your simulations and experiments. Provisioning distributed Windows instances The process of provisioning 3rd party cloud instances for running distributed FlexSim replications will differ from provider to provider. FlexSim has guides for the following cloud providers: Amazon Web Services Wherever you decide to host your instances, the important part is that eventually you end up with a group of Windows instances, each with a unique IPv4 address accessible from the Main PC. A custom Windows image Your 3rd party cloud provider probably allows you to save a custom Windows image that can include software and settings that you need for each Windows instance. Doing this once for a custom Windows image saves you time when starting new instances - each instance will start with the software and settings preconfigured for your purpose. On your custom image, do the following Download and install FlexSim. Use the same version of FlexSim as is licensed on the Main PC. Remember, you DO NOT need to activate a license. Run FlexSim. This creates a directory that is needed later. After FlexSim finishes its first start, close FlexSim. Download and install the FlexSim Webserver for your installed version of FlexSim. Edit the Webserver's configuration file appropriately for your situation. Default location is here: "C:\Program Files (x86)\FlexSim Web Server\flexsim webserver configuration.txt" Start the FlexSim Webserver from your Windows Start menu, or manually from the default location here: "C:\Program Files (x86)\FlexSim Web Server\flexsimserver.bat". The Webserver will download necessary files the first time it is run. Close the Webserver after it has completed its initial startup. Allow both FlexSim and node.js through the Windows Firewall. To do so, use Windows' Allow an App through the Windows Firewall tool. You will need to browse for both FlexSim and Node.js. Example locations (exact locations may vary by version): C:\Program Files\FlexSim 2023\program\flexsim.exe C:\Program Files\nodejs\node.exe If you are not familiar with the FlexSim Webserver, please review its documentation and test it out on a local machine to understand what it does, its configuration options, etc. If you cannot configure a custom Windows image, you will need to do the above on each instance individually. Initialize instances Launch your instances. On each instance, do the following: Log in to the instance with Remote Desktop or some other solution. Start the FlexSim Webserver from your Windows Start menu, or manually from the default location here: "C:\Program Files (x86)\FlexSim Web Server\flexsimserver.bat". Note the instance's IPv4 address. Once all instances are running the Webserver, you are ready to configure a distributed experiment or optimization from the Main PC. Author's Note: There is probably a way to make it so that when instances start up, they automatically run the Webserver, so that you don't have to manually connect to each one. I welcome any suggestions or steps for how to make that happen. Configuring a distributed experiment or optimization Once you have a list of running instances available, launch FlexSim on the Main PC. Open the experimenter interface from FlexSim's Main Menu > Statistics > Experimenter. Configure your experiment. As part of your configuration, under the Advanced tab, select the option to Use Distributed CPUs. Press the button to Configure Cloud Nodes. This will open the Global Preferences' Environment tab. Enter the IP addresses of your instances into FlexSim. Enter the port numbers you configured in their FlexSim Webservers. If your instances will max out RAM before CPUs, enter a CPU count representing the maximum number of concurrent replications your instance can handle. For more information on using remote computers for Experiment Jobs, see Running Jobs on the Cloud for more information.
View full article
Background   The method for licensing a single-user client PC saves client PC license settings to the Windows profile data of the signed in user, so license settings are saved on a per-user basis.   In cases where the exact number or identity of PC users is not predetermined, such as in a university computer lab, it is impractical to license users individually in this manner. Another use-case for this method is when FlexSim Software is automatically pushed or deployed to client PCs. Having the licensing as part of the deployment is useful.   For this mult-user method we'll use a license file on the client PC to license FlexSim software generally for any user of the PC.   Use a license file   Create a plaintext license file   On the client PC create a plaintext license file named flexsim.lic with the following 2 lines (exclude any line numbers):   SERVER 127.0.0.1 ANY 26914 USE_SERVER   If your Windows settings do not show file extensions, it is possible that your flexsim.lic license file is actually named flexsim.lic.txt, which will not work. Be sure to show file extensions and make sure your license file ends with the .lic file extension. The actual name of the file is not important (it could be helloWorld.lic, for instance), but it needs to end in .lic.   Modify   On the client PC, modify your new license file with the following changes:   On line 1 change "127.0.0.1" to the IP address or fully qualified domain name of your license server. If you modified your license server with custom port numbers, on line 1 replace the default port 26914 with your custom port number.   Install   With FlexSim software installed on a client PC, your new license file should be copied into FlexSim’s installation directory in the following location:   C:\Program Files\FlexSim <version>\program\   Your exact folder path could differ based on custom installation locations or FlexSim version, but it should be placed into FlexSim’s program\ folder.   Multiple license servers?   If your FlexSim licenses/seats are spread across multiple license servers, you can configure your client software to try to pull a license from any of your multiple license servers. Simply create a new license file for each possible license server and save each to the same program\ folder. In this scenario, in your program\ folder you would have multiple license files listed, like this:   flexsim1.lic flexsim2.lic flexsim3.lic etc. Each license file should reference a different license server and its port number.   Next   Check out the next article to learn how to verify that your client PC is licensed, and what to do if it isn't: License Server - Verify client PC licensing.  
View full article
One of the new features in FlexSim 2018 Update 2 is the ability to use distributed CPUs for the Experimenter or Optimizer. Those cores can exist on any machine that meets the following requirements: The machine is accessible by IPv4 address The machine has FlexSim installed The machine is running the FlexSim Webserver (version 18.2.0 or later) on port 80 The machine meets hardware requirements to support running the specified number of simultaneous replications. This article describes how to use Amazon Web Services to create remote machines that meet the above requirements. Using AWS, you can launch and connect to as many servers as you want, and pay only for the time used on those instances. Anticipated Use Case Using distributed CPUs can significantly reduce the required time to run an experiment if: The time to run a single replication is high (a couple minutes or more) The number of replications to run is high If the time per replication is short, then the increased communication overhead may outweigh the benefit of using distributed CPUs. The communication overhead increases because all CPUs still report results to a single FlexSim process, and that communication occurs over the internet, rather than on a single machine. If an Experiment or Optimization completes in an acceptable amount of time, you may not need to use distributed CPUs. Financial Costs Amazon charges for its services. Costs for running instances (and transferring data out of them) are found here : https://aws.amazon.com/ec2/pricing/on-demand/ Costs for storing data (including AMIs) are found here: https://aws.amazon.com/ebs/pricing/ These instructions include steps to create an AMI, which will likely cost around $1 per month at current rates. It also includes steps for launching high-performance instances, which have an hourly cost. Suitable instances can be as cheap as $0.50 per hour. Note that there are also charges for transferring data from an instance to another computer. Step 0: Complete an EC2 Tutorial If you are not already familiar with EC2 instances, you should complete the following tutorial: https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EC2_GetStarted.html Step 1: Create a Security Group You will need to create a security group with the following rules: Allow HTTP traffic on port 80. This allows incoming connections to the FlexSim Webserver. You can choose which inbound IP addresses to accept. You should make this as strict as possible. The strictest setting is to only allow incoming connections from the current IP address. Allow TCP traffic on ports 9000-9200. This is a Custom TCP rule. Note that you can make this range smaller, if all machines that use this Security Group have fewer than 200 cores. For example, if the biggest machine launched with this Security group has 72 cores, you would only need ports 9000-9072 in this rule. Allow RDP traffic on the default RDP port. This allows you to connect to the instance using remote desktop. Name the Security Group something that shows that this group is related to running FlexSim instances, and add a description if you want. Here is an example Security Group that works, but allows all TCP traffic, and so should only be used for testing purposes: Step 2: Create a Custom Amazon Machine Image (AMI) You will need to create a custom AMI. A custom AMI allows you to launch an instance that has the software you need already installed. To create one, follow these steps: Download the FlexSim installer and the Webserver installer. If your upload speed is slow, you can skip this step. Launch the cheapest instance available, with the Windows 2016 Server Base image. There are probably free-tier instances available in the list Connect to that Instance with Remote Desktop Copy (or download, if upload speed is slow) the FlexSim installer to the remote machine, and run it to install FlexSim. You do NOT need to activate a license. Run FlexSim. This creates a directory that is needed later. Then close FlexSim. Copy (or download, if your upload speed is slow) the Webserver installer to the remote machine, and run it to install the webserver. If using the 2018 Update 2 Beta, be sure to change the Webserver configuration file accordingly. Run the Webserver. It will download a bunch of files the first time it is run. Allow both FlexSim and node.js through the Windows Firewall. To do so, use the Allow an App through the Windows Firewall tool. You will need to browse for both FlexSim and Node.js. Both are in the ProgramFiles directory. Disconnect the Remote Desktop session Go to the list of Instances in the AWS Console From the Actions menu, select Image, then select Create Image: Add a name and description. Click the Create Image button On the next dialog, click the View Pending link, or navigate to the list of AMIs: Once the image becomes Available, terminate the running instance. Step 3: Launching Usable Instances Before running an Experiment or Optimization, you need to be sure that all remote instances you will use are current running. To launch and initialize these instances, follow these steps: In the EC2 Console, choose Launch Instance Select the AMI you created, from the list of My AMIs Choose the Instance Type and quantity Set the Security Group to use the Security Group you created Launch the instance Once each instance is initialized, connect to each one with Remote Desktop. Note that when you launch an instance with a given Key File, the password for each instance will be the password associated with that Key File, so you only need to decrypt the file once. Start the FlexSim Webserver in each instance Once all instances are running the Webserver, you are ready to run an Experiment or Optimization. Author's Note: There is probably a way to make it so that when instances start up, they automatically run the Webserver, so that you don't have to manually connect to each one. I welcome any suggestions or steps for how to make that happen. Step 4: Using the Instances in FlexSim Once you have a list of running instances available, you just need to input their IP Addresses into FlexSim, on the Advanced tab of the Experimenter: Once you have input this information, you just need to click the Experiment or Optimize button. FlexSim will then use the remote CPUs for running replications. Considerations Spot Pricing Amazon offers two pricing models: On Demand and Spot Pricing. FlexSim recommends On Demand instances. Spot instances can be significantly cheaper, but they can also be shut down by Amazon and given to an On Demand user at any time, if On Demand requests exceed the number of available machines. FlexSim does not try to recover from this kind of error, and it may lead to unexpected behavior. CPU Count, RAM, and Disk Space When you pick an instance type, be sure to understand how much ram you will need. If a model requires 4 GB of RAM while running, and you use an instance with 128 cores, be sure that the instance has at least 512 GB of RAM, or don't use all 128 cores. Disk space is usually not an issue. However, if you are using the Store Data on Hard Drive option in the Statistics Collector, you will need to be sure that there is enough disk space to run the model to completion on the hard drive, multiplied by the number of cores. The amount of disk space on each instance also affects the total cost of using this service.
View full article
Top Contributors