FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
Example Usage of the New AutoCAD FlexScript API The following example models were demonstrated at the Autodesk University presentation Elevating Factory Design: FlexSim and the Future of Autodesk Fusion Digital Factory. Refer to that presentation for a demo of these models and additional discussion regarding the topics demonstrated by these examples. These examples require the Autodesk Interop FlexSim Module. Healthcare Auto-Build Example Demo_AutoCadAPI_ER_4.fsm Using the new AutoCAD FlexScript API, the data within dwg files can be read using FlexScript to automatically build simulation objects within the model. The script in this Healthcare example is contained in the AutoBuildFromDwg() user command in the Toolbox. This command reads the average location of blocks on the Bed Layer to create Bed Location objects. It also reads the lines on the Wall Layer to automatically create Wall objects and connect them to the A* Navigator for automatic pathfinding around the walls. Reading dwg data string filePath = param(1); AutoCAD.Database db = AutoCAD.Database(filePath); if (!db)             return -1; var iter = db.getBlockTable().getAt("*MODEL_SPACE").newIterator(); for (iter.start(); !iter.done(); iter.step()) {             var ent = iter.getEntity();             print("Entity:", ent.layer, ent.objectType);             if (ent.layer == "Bed Layer") {                         if (ent.is(AutoCAD.Polyline)) {                                     AutoCAD.Polyline polyline = ent.as(AutoCAD.Polyline);                         }             } } Creating a bed location treenode bedConfig = library().find("/people/Objects/Location>behaviour/eventfunctions/configs/Bed"); Object obj = Object.create("People::Location"); function_s(obj, "changeShape", bedConfig); Creating walls Object walls = Model.find("Walls"); if (walls) walls.destroy(); walls = Object.create("People::Walls"); treenode wallsSurrogate = walls.find(">visual/drawsurrogate"); Object libraryPillar = node("/?Pillar", library()); Object newPillar1 = createinstance(libraryPillar, wallsSurrogate); newPillar1.setLocation(0.0, 0.0, 0.0); Object newPillar2 = createinstance(libraryPillar, wallsSurrogate); newPillar2.setLocation(10.0, 0.0, 0.0); function_s(walls, "addWall", newPillar1, newPillar2); Asserting the A* Navigator, a Grid, and connecting Walls Object walls = Model.find("Walls"); Object aStarNavigator = model().find("AStarNavigator"); if (!aStarNavigator) {             aStarNavigator = createinstance(library().find("?AStarNavigator"), model()); } Object grid = aStarNavigator.find("Grid1"); if (!grid) {             grid = function_s(aStarNavigator, "createGrid", 0, 0, 0, 1, 1, 0);             grid.name = "Grid1"; } contextdragconnection(grid, walls, "A"); AGV Read/Write Dynamic Blocks Example POC_OHT_3_MoveOHB.fsm POC_OHT_3_MoveOHB.dwg (If this file is named differently when you download it from Answers, make sure you name it back to this exact name. It is referenced by name in the model.) The script in this AGV example is contained in the interopAutoCAD() user command in the Toolbox. This command reads the location and names of particular dynamic blocks in the dwg file in order to automatically create AGV path simulation objects based on the configuration of each type of dynamic block. Additionally, the script has examples of both reading data and writing data back to the dwg based on modifications of the AGV paths within the simulation. The script is only partially complete as a demonstration of the API’s capabilities; the script is not a fully-working, robust solution for any arbitrary dwg. Factory Design Utilities Proof of Concept Example Demo_AutoCadAPI_FDU_1.fsm This FDU example model contains many user commands in the Toolbox with various functionality. The primary example starts in the Load FDU Layout button’s OnPress code. By default, it calls the AutoBuildFromDwg() user command. Alternatively, it has unreachable example code for calling AutoBuildFromLayout(), which can read the layout data from an FDU LayoutData xml file rather than a dwg file. The AutoBuildFromDwg() user command reads factory-specific meta-data about each FDU block in the dwg file and automatically creates simulation objects for each. The simulation objects then load the custom 3D shapes from FDU representing each of those objects. The import script also sets labels with the various Factory properties from each object. Within the CreateSimulationObjects() and CreateInternalObjects() user commands—called from the CreateFactoryAssetInstance() command—are hard-coded checks for particularly factory asset family ids to determine what type of simulation objects to create. This is merely a proof-of-concept example for handling FDU assets via FlexScript without any changes to FDU assets themselves. Future enhancements may include options for including such simulation meta-data within FDU assets directly for a more robust, easier-to-use solution. This workflow brings all the new Autodesk interop features together for an exciting, new way to bring factory data into FlexSim. Once that data is in FlexSim, you can use its many existing features to analyze the system with live 3D animation and dashboard charts showing simulation results. You can validate the throughput of the layout, identify potential bottlenecks, and balance resource use.
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
A license server hosting FlexNet enabled products like FlexSim relies on a service called FlexNet Licensing Service 64. As of FlexSim version 25.2, FlexSim requires FlexNet Licensing Service 64 version 11.19.8.0 or higher.   Is FlexNet Licensing Service 64 already installed?   There is a chance that you already have a version of FlexNet Licensing Service 64 installed. Let’s check: Click the Start button or press the Windows key, then type “Services” into the search box in the Start menu, and press Enter. Windows will search for and open Windows Services Manager. If the list of services is not already sorted by name, click the Name column heading. Scroll down to services beginning with F. Do you see a FlexNet Licensing Service 64?   If you find that FlexNet Licensing Service 64 is not installed, or if you only have the 32-bit version (missing the ‘64’ in the service name), skip below to the heading Install the FlexNet Licensing Service.   Check the installed version of FlexNet Licensing Service 64   If FlexNet Licensing Service 64 is already installed, we should make sure it is version 11.19.8.0 or higher. If your FlexNet Licensing Service 64 has a lower version number, you will need to remove the older service and upgrade. We’ll get to those steps soon, but first, let’s check what version is installed:   In Windows Services Manager, scroll down to the entry for FlexNet Licensing Service 64. Double click the service name to open its Properties window. In the middle of the General tab, find the Path to executable. Copy the path location from just after the opening double quote (“) until the final backslash (\) before the filename. This is the path. It is probably something like C:\Program Files\Common Files\Macrovision Shared\FlexNet Publisher\. With the path now copied to your clipboard, note the name of the .exe. It is probably FNPLicensingService64.exe. Open a file explorer (Windows Key + E) and paste the path into the Address bar. Hit Enter to navigate to the path. Right click the .exe file that the service's Properties indicated is the service executable. Select Properties to view the .exe file’s properties. Navigate to the Properties window’s Details tab. The Product version should be version 11.19.8.0 or greater. Make sure that the Product name indicates 64-bit.   If you found that you don’t have FlexNet Licensing Service 64 installed, skip below to the heading Install the FlexNet Licensing Service.   If you found that your version number of FlexNet Licensing Service 64 is lower than 11.19.8.0, you will need to upgrade the service.   Upgrade FlexNet Licensing Service 64   To upgrade your FlexNet Licensing Service 64 to version 11.19.8.0, first complete the following: In Windows Services Manager, right click FlexNet Licensing Service 64 and choose Stop. Navigate to the Path to executable shown in the service’s properties. Rename the service’s .exe file by putting an underscore (_) in front of the .exe’s name. Continue with the instructions below under the heading Install FlexNet Licensing Service 64.   Install FlexNet Licensing Service 64   In your extracted download folder of FlexSim license server materials, navigate into the folder flexsimserveractutil. Right-click flexsimserveractutil.exe and select Run as administrator. Select the menu option Tools > Licensing Service > Install anchor service.   You should receive a confirmation that FlexNet Licensing Service 64 is now installed.     For further information on compatibility of various Flexnet licensing components, see Version Compatibility Between Components.  
View full article
Preparation   You may want to brush up on how a license version is related to a product version.   When you understand what version of FlexSim will work with your license, download and install an appropriate software version for your license.     Find your licenses   From your FlexSim Account, click the Licenses link in the top menu. In the submenu, choose List. Expand the various product and version folders to find the Activation ID you wish to activate. An Activation ID looks similar to this example: yourcompany.com01-ABCDE-FGHIJ-KLMNO-FSENT21.2 Highlight and copy the Activation ID you will activate.   License your software   Open FlexSim Software. Click Help in the main menu. Choose License Activation. Paste your Activation ID into the field. Click the Activate button. Wait for an indication of success. Repeat for any other Activation ID you wish to activate to this computer.   Your license activates via the Internet, so make sure your computer is connected!   If your computer is offline or has trouble connecting to FlexSim's license server, try the Standalone - Activation - XML / Offline instructions.     If you have any questions or problems, please search our Answers Community for possible solutions. There is a good chance someone else has already asked your question.   Still not finding what you're looking for? Submit a new question and we'll check it out. Please do not include any confidential information, such as license codes, since anything posted on the forum is public! You can also contact your local FlexSim distributor for live phone, web, or email help.
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 table is meant as a reference and guideline. While we strive to maintain this list regularly, it may be out of date at any given time. If an advertised feature of FlexSim is not listed here, it is generally not subject to limitations by license type.   The Express license type is FlexSim's default, unlicensed state. Downloading and installing FlexSim to a new computer, it will be in Express mode. The other license types require you to obtain a license and apply it to the software. Please refer to FlexSim's End User License Agreement (EULA) for details on allowed uses, restrictions, and other considerations. If you wish to test a particular license type, please contact your local distributor to request a test license.   Please Note: Runtime seats are no longer available for new purchase or renewal but are referenced in this table to support those Runtime licenses still outstanding.     Express Runtime Student Educational Enterprise Use Cases (see EULA) Testing, evaluation, and model viewer only. Run only (no model building). Educational use only. Educational use only. See EULA. Open, Run, Save open and run any size model ✔ ✔ ✔ ✔ ✔ open and save models in XML format     ✔ ✔ ✔ unlocked random streams   ✔ ✔ ✔ ✔ compile models built with C++ (optional, requires Visual Studio)   ✔ ✔ ✔ ✔ save model size limitations model size must be under limitations none model size must be under limitations none none experimenter   ✔ ✔ ✔ ✔ OptQuest optimizer   with OptQuest add-on license up to 10 optimization variables with OptQuest add-on license with OptQuest add-on license webserver (requires separate download) ✔ ✔ ✔ ✔ ✔ Model Building model building features available ✔ no ability to add objects or activities, but any objects and activities used by existing models are editable ✔ ✔ ✔ create objects and activities ✔   ✔ ✔ ✔ object creation limit 30   100 none none process flow activity creation limit 35   250 none none execute FlexScript in script console     ✔ ✔ ✔ tree view     ✔ ✔ ✔ Tool Box Add Tools ✔ no ability to add tools, but all tools used by existing models are editable ✔ ✔ ✔ FlowItem Bin ✔   ✔ ✔ ✔ Global Tables ✔   ✔ ✔ ✔ Time Tables ✔   ✔ ✔ ✔ MTBF/MTTR ✔   ✔ ✔ ✔ Down Behavior ✔   ✔ ✔ ✔ Dashboards ✔   ✔ ✔ ✔ Groups ✔   ✔ ✔ ✔ Process Flow (all options) ✔   ✔ ✔ ✔ Global List (all options) ✔   ✔ ✔ ✔ Statistics - Statistics Collector ✔   ✔ ✔ ✔ Statistics - Milestone Collector ✔   ✔ ✔ ✔ Statistics - Calculated Table ✔   ✔ ✔ ✔ Statistics - Experimenter     ✔ ✔ ✔ Statistics - Tracked Variable     ✔ ✔ ✔ FlowItem (all options) ✔   ✔ ✔ ✔ Modeling Logic (all options)     ✔ ✔ ✔ Visual - Model Floor ✔   ✔ ✔ ✔ Visual - Model Background ✔   ✔ ✔ ✔ Visual - Video Recorder     ✔ ✔ ✔ Visual - Fly Path     ✔ ✔ ✔ Connectivity - Database Connector ✔   ✔ ✔ ✔ Connectivity - Excel Import/Export ✔   ✔ ✔ ✔ Connectivity - Visio Import     ✔ ✔ ✔ Connectivity - Emulation (Modbus and OPC DA connections only. Other connection types require an Emulation license.) ✔   ✔ ✔ ✔
View full article
This is a demo model for the new warehouse functionality found in version 2019 Update 2: warehouse-demo-model.fsm The basic premise of this model is that items of a particular type come in, and must be placed in slots for that type. Orders also come in, requiring items of a particular type, that must be retrieved from storage. The model is meant to be a general concept model. It demonstrates the use of many of the new features in 19.2, and embodies some high-level "how-to's" of warehousing that are discussed in the user manual. Most logic for the model is implemented in a process flow. The process flow logic is separated into three main categories, namely initial inventory, inbound, and outbound processes. Further, the outbound process demonstrates both random-based order generation as well as history-based order generation. Initial Inventory The model includes a Global Table of Initial Inventory. The process flow's initial inventory section reads this table, and then creates items and places them into slots based on that initial inventory. This logic relies on the Address Scheme defined in the Storage System object, and uses direct addressing to get a slot using Storage.system.getSlot(). Inbound I use the process flow to assign a slot to each incoming item. I use an Assign Labels activity called Find Slot to do this. This uses a pick list option that wraps a call to Storage.system.findSlot(). The query matches the Type of the item with the Type of the slot, and also ensures that the target slot has space to fit the incoming item. The query also randomizes the order. Randomizing the order would likely not be necessary in most situations, but it makes the demo look nice. If the Find Slot activity properly finds a slot to store the item, then I go ahead and assign the the item to that slot, and have an operator place it in the rack. Outbound I also use the process flow to generate orders, and to reserve items in the storage system for those orders. In most warehouse simulations, order generation can be driven in two ways. First, you can use random probability distributions to generate orders based on general throughput metrics. Second, order generation can be based on historical data. This model gives an example of each method. In the random method, orders are generated randomly every ~30 seconds. Each order includes a number of SKU line items (again, random) and each line item includes a quantity of that SKU (again, random). Order tokens spawn line item tokens, which in turn spawn tokens associated with individual picks (the Fill Out Individual Picks process). For each pick, the token finds an item in storage that matches the target SKU. This is an Assign Labels activity (Find Item by SKU) with a pick option that wraps a call to Storage.system.findItem(). It finds an item that matches the required type, again using a query. Once the item is found, it makes reserves the item as "outbound" by assigning the Storage.Item.assignedSlot property to null (Set to Outbound activity). This ensures that no other process will find that same item for picking. The history-based order generation process uses much of the same functionality as the random-based, but it instead reads an "OrderHistory" table to determine when orders are started and what those orders contain. The OrderHistory table represents a simplified format for what you would likely see in a standard orders table. First, the process flow creates a transformed table that aggregates each order into a single row (this could technically be done as post-import code, but I do it in the process flow for visibility). Then the process flow loops through that transformed table, waiting for the start time of each order, then spawning that order. Custom Rack Visualization I have also customized the visualization of the racks. I have added a text to the front (and bottom on the floor) of a rack slot that will show the address of that slot. Further I've given the text a background that is color-coded to the SKU that that slot is designated to store. This was all done through the Storage System's Visualizations tab. I customized the Rack visualization.
View full article
Finding the right answer should be easy. Together we can build and maintain a well organized, growing knowledge base by practicing a bit of good Question and Answer hygiene. Below are 12 tips for using Answers in a way that will help the whole FlexSim community get maximum value from the site, and keep our content organized, efficient, and intuitive. These tips are adapted from this Devada article. Devada makes AnswerHub, which powers this site. Search existing questions before asking. Use the advanced search functionality to look for a question you may have before asking it. You may find your question has already been asked and answered. This saves you and other community members time and effort. Please also search our online user manual. Your answer may be in FlexSim's documentation. Post a model that demonstrates your question. The best case is to make a simple model that demonstrates the question or issue. If the model is sensitive, you can post a private question (see the Private Questions item below for more info). Make your question titles descriptive. Making a question's title descriptive makes it much easier for other people searching the site to find what they need. Question titles like Problem with conveyor are not very helpful when searching, whereas titles like Item gets stuck at photo eye when using area restriction are much more helpful. The question title should not be too verbose, but it should describe the problem well. Post content in the right space. When creating content, it's important to select the appropriate space for it to be posted. Choosing the right space for your content will not only keep the community organized, it's also more likely to be viewed and responded to by the right community members. Need help with some aspect of FlexSim or your simulation? It goes into the Software & Simulation Questions space. Starting a discussion that doesn't have a specific answer? General Discussion is the space it should go in. Don't post an article to ask a question - do that with a question. Don't use a question to request a feature - that should be posted as an idea. Mark correct answers as accepted. It's important to accept a correct answer to a question, especially the questions that you asked. This will make finding the right answer much easier for other members and let the community know that your problem has been solved. Let others know what answers helped you solve questions by upvoting or liking correct answers to show community support. Share your knowledge by answering questions. See a question you know the answer to? Submit an answer with text, images, links, videos, and more to support your answer and to help fellow community members. Use comments and replies. Only post an answer when you're actually answering a question. You can use comments, or directly reply to others' comments to provide support, additional information or ask for further explanations when necessary. Ask experts directly. Want a reliable answer quickly? You can ask an expert directly after creating a question and the expert will be notified. Use the 'at' symbol @ and start typing someone's name, and they will be notified that they were referenced in a post. Be sure to use the autocomplete as you type their name, or you may type it incorrectly and the user will not be notified. A properly formatted @mention automatically becomes a link. If it's not a link (like this: @Ben Wilson!), try again. Avoid overdoing @mentions. Don't make the mistake of @mentioning more people than is necessary to try to draw attention to your question: Your question is just as important as any other question. The community will help you to the best of our ability regardless, so there is no need to spam multiple users in hopes of bumping up your priority. If anything, annoying active members on the community you will only hurt your cause. Monitor reputation points and the leader-board. See how you rank in your community with reputation points. Reputation reflects engagement levels like questions asked, answers submitted, upvotes, and more. Become an expert yourself. Have an area of expertise? By providing knowledgeable answers you can be recognized as a topic expert. The system identifies these users based on the number of accepted answers you provide within a topic. Additionally, you can self-identify areas of expertise in your profile settings. Topic experts receive an elevated role in the community and get notified when content is posted within their area of expertise. Follow topics of interest. Want to continue learning about a specific topic in your community? Follow a topic and receive activity updates in your inbox instantly, daily, or on a weekly basis. Change notification frequency and other settings within your profile. Visit the community often. The more we contribute to the community, the more valuable it becomes for everyone. Have an article you want to share? Post it. Want to share an idea and generate a discussion among other FlexSim users? Answers is a great place to facilitate "ideation" and collaboration. Additional pointers for using answers.flexsim.com: Use the latest version of your internet browser. Mozilla Firefox, Google Chrome, Microsoft Edge, Opera, and other modern browsers should be fully compatible with this Answers site. For the safest, fastest, and most compatible browsing experience, please keep your browser version up-to-date with its latest release. Internet Explorer is an older browser and is not supported. Preparation We expect you to have some foundation of FlexSim knowledge and experience before asking a question. If you're new to FlexSim, before asking questions here, please take the time to go through the in-software tutorials. Topics - when you create a post, whether it's a question, article, or idea, you must tag your post with at least 1 topic (and up to 5 topics) to help identify the main issues of your post. As you add topics, autocomplete will suggest preexisting topics. Please select a preexisting topic if it is a good match, rather than creating a new, slightly different spelling of an existing topic. Also, please try to keep new topics to only 1 or 2 words. Ask one question at a time. When composing a new question, limit yourself to a single question. Don't include multiple questions in one post. Each question deserves its own place. When you separate multiple questions into individual posts, it's more likely that more users will participate in your questions, getting you more answer options more quickly, often from multiple individuals. It also makes each post smaller and easier to digest, encouraging more participation. Follow-up questions. Sometimes it's tempting to ask a follow-up question as a comment to an answer, or even more inappropriately, as a new answer to your first question. New questions that can stand alone should be posted as brand new questions. Only clarifying questions should be asked that expand on the original question/answer/comment that is being discussed. This keeps each question post laser-focused on the top question, and each answer directly pertaining to the main question. An answer should really be an answer. Each answer should directly address the top question in a post. An answer is never a 'thank you', a comment, or another question. Those each have their place (usually as a comment), but none of them should be posted as an answer. A question can have multiple answers. The question asker (or 'OP' - original poster) should 'accept' the answer that worked best for them. Users can up-vote answers that are helpful, or down-vote those that are not. The top answers will bubble up to the top. Conversations go in comments - If you need to clarify a part of someone's question ("what version of the software are you using?"), add a comment to that question. If you want to respond to someone's answer ("thank you!" or "that didn't work for me because..."), add a comment to that answer. Need to respond to someone else's comment? Reply specifically to that comment. Simple and specific questions are best. Simplify your question by creating a sample model that shows the issue, rather than posting a large model (perhaps containing proprietary information) where only one small part of it pertains to the question. Use images to show what is going on and what should be happening. Animated GIFs are even better (example). Public questions are best. They add to the public knowledge base. They will get community participation, and thus get more answers, faster responses, and broader participation. They can help others in the future. Whenever possible, simplify your question for a general audience. Private questions are for private information. If you have a question pertaining to your specific license, make it a private question. Only FlexSim US can see the contents of private questions. AnswerHub takes reasonable measures to help protect information (see their privacy policy's Security heading) but this AnswerHub community should not be considered a secure site. Be sure to follow your organization's rules regarding posting of proprietary data, and when in doubt use approved methods to share confidential information. Consider reaching out directly to your local FlexSim representative for phone or email support. Post attachments: Attachments types - If you find that you can't upload a particular file type, simply compress it to .zip and upload that way. Make a note of that in your post so that we can consider allowing your file type. Attachment sizes - We've tried to be quite generous with total allowable upload sizes. If you find that your attachment(s) are too big to upload, first try compressing to .zip. If that still doesn't get your attachments small enough to post, you may be able to use a 3rd party file hosting service such as Dropbox or SugarSync, and include a link to your uploaded file in your post. Make a note of that in your post so that we can consider increasing the file size limit if this becomes a common problem. Attachment count - Again, we've tried to be quite generous with the total number of attachments that can be added to a post, primarily because images count against your attachment count. Let us know if you're trying to make a post but run into the max attachment limit. Advanced search functions: Simple search A search that uses one or more words, separated by spaces. For example: Enter transporter resource to perform a search for transporter, resource, or transporter resource. Refined search You can refine your search by adding different symbols (+, -, [, or ]) to your search. For example: Entering transporter +resource in the search bar returns results that include transporter and resource, but resource is a required term. Entering transporter -resource in the search bar returns results that include the term transporter, but excludes any that contain the term resource. Entering in the search bar returns only results that are tagged with the transporter topic. Entering [resource] in the search bar returns only results that are tagged with the transporter and resource topics. Google search This Answers community includes Google Custom Search to easily enable the use of Google's powerful search engine across all FlexSim web sites, including this Answers community, our old, archived community, our online user manual, and more. Please see this question and answer for details. If you have any questions, comments, or tips of your own that you'd like to share, please start a discussion in the comments below. We can update the article above with the best suggestions or illuminate anything that might be confusing.
View full article
Interacting with your licenses isn't something you do every day, but it doesn't need to be intimidating. We've documented all the main procedures you'll use to manage your FlexSim licenses like a pro.   When you purchased your FlexSim licenses you chose one of two methods for licensing your software. Click below to jump to the licensing procedures for your style of licenses:   Network Licensing Standalone Licensing Need a refresher on the differences between network and standalone licensing? Our Standalone vs Network Licensing.pdf is a basic intro or check out our in-depth article on License Models. Network Licensing With an in-house license server you don't activate your licenses directly in the software (as in standalone licensing). Instead, your FlexSim software is configured to obtain a seat from a license server in your organization's network. Your organization will need to provision, install, and maintain a license server.   Here are instructions for all the primary server licensing tasks.   Install, Configure, Activate Here are our instructions for installing, configuring, and licensing your server, and for configuring FlexSim to get a seat from your license server. This document covers both online and secure/offline scenarios.   PDF installation guide Online Answers articles index We have some shorter guides focused specifically on just the license activation step. If you already have an installed and configured license server, these guides are provided as a convenience for use in subsequent licensing procedures, like upgrading your licenses.   License Server - Activation - Online License Server - Activation - XML / Offline   Return You may occasionally need to migrate your licenses to a new license server or return your license as part of a license version upgrade.   License Server - Return - Online License Server - Return - XML / Offline   Repair In rare circumstances your activated license can become "broken". This means that even though the license is still activated on your server it is no longer able to serve seats to client PCs. This can happen if your server hardware or operating system changes significantly.   License Server - Repair - Online License Server - Repair - XML / Offline   Upgrade FlexSim releases new feature-versions several times per year. If the licenses activated on your license server are lower than the version of FlexSim software you're trying to run, FlexSim software won't be able to be licensed by your license server. You can learn more about how licensing works for a given version number in our Answers article FlexSim Version Numbering.   In this case you'll need to upgrade the activated licenses on your license server. If your maintenance is current, follow the procedure linked below to upgrade your license server for use with the latest versions of FlexSim. If your maintenance is expired contact your local FlexSim distributor to renew.   This article covers both online and secure/offline scenarios.   License Server - Upgrading your hosted licenses   Miscellaneous These items don't pertain to any particular licensing procedure but may be useful in some situations.   License Server - View licenses License Server - Delete fulfillment License Server - Troubleshooting tips License Server - Client/Server connectivity   Standalone Licensing With standalone licensing you'll activate a license code (also called an Activation ID) directly in FlexSim.   Below are detailed instructions for all the primary licensing tasks used in managing your standalone licenses:   Activation To apply a license to your computer, follow the linked instructions depending on whether your computer or network allows FlexSim to communicate online.   Standalone - Activation - Online Standalone - Activation - XML / Offline   Return Returning your license removes it from your computer and makes your seat available for a new activation. This is useful if you need to free up a seat for a colleague or move your license to a different computer. You may also return your license as part of the upgrade process for a new version of FlexSim - returning the old version so that you can activate an upgraded Activation ID.   Standalone - Return - Online Standalone - Return - XML / Offline   Repair In rare circumstances, your activated license can become "broken". This means that even though the license is still activated on your computer it no longer enables additional features allowed by your license type. This can happen if your computer hardware or operating system changes significantly.   There is no online method available. Please use the XML / Offline method. Standalone - Repair - XML / Offline   Upgrade FlexSim releases several new feature-versions per year. An upgraded version of the software requires an updated license key to enable its licensed features. Licenses with a current maintenance subscription are eligible to be upgraded to the new version. You can learn more about how licensing works for a given version number in our Answers article FlexSim Version Numbering.   If your maintenance is current, follow the procedure linked below to upgrade your license for use with the latest versions of FlexSim. If your maintenance is expired contact your local FlexSim distributor to renew.   This article covers both online and secure/offline scenarios:   Standalone - Upgrading your license   Miscellaneous These items don't pertain to any particular licensing procedure but may be useful in some situations.   Standalone - View licenses Standalone - Delete fulfillment
View full article
You should have already completed all preceding steps found in the article Hosting your FlexSim licenses with lmtools, including all those under the headings "Preparation and Prerequisites" and "Activate licenses to your license server". At this point you're ready to install, configure, and start the service that will serve your FlexSim licenses.   Create the service Configure service permissions Start the service Check the service status Troubleshooting problems with the service   Create the service   We'll use lmtools to create your new licensing service.   On your license server, in your extracted download folder of FlexSim license server materials, right-click lmtools.exe and choose Run as administrator. Go to the Config Services tab. Create a new licensing service by typing FlexSim_License into the Service Name input field. The Service Name field looks like a dropdown selector, but you can click in it to type a new name. Use the 3 Browse buttons to specify the paths to files (lmgrd.exe, flexsim.lic, log.log) that are also included with the FlexSim license server materials. Check the boxes for Use Services and Start Server at Power Up. Press the Save Service button in the upper right. Confirm the save by choosing Yes. You may receive an error message regarding "Windows preferred path". This is normal and this message can be safely ignored.   Configure service permissions   Your new FlexSim_License service needs permissions set to function properly.   Click the Windows Start button or press the Windows key, then type “Services” into the search box in the Start menu, and press Enter. Windows will search for and open Windows Services Manager. Find FlexSim_License in the list of services. If it is missing from the list, see the section Troubleshooting the licensing service below. Open the FlexSim_License service’s Properties window by double-clicking its name. Go to the Log On tab. Choose the option to Log on as: Local System account. Press OK to close the FlexSim_License Properties window.   Start the service   While still in Windows Services Manager, use the Start link to start your new FlexSim_License service.     You should see a status bar showing the startup progress. The service usually starts in under a minute.   If there are any errors or other problems with starting the service, skip to the section Troubleshooting problems with the service.   Check the service status   After the service is started, head back to lmtools to check the log. You can view the service log from the Config Services tab, press the View Log... button, located toward the lower right of the Config Services panel.   You should find the following information in your log file:     lmgrd.exe is listening on port 26914. This is the port the licensing service will use when listening for client PC communication. The bootstrap license file flexsim.lic was found and loaded. (This is not a license file specific to you and does not contain your license info. FlexSim licenses use Trusted Storage and licenses are activated to your license server using flexsimserveractutil.exe). The flexsim.opt Options file was found and loaded. A list of product features activated in your server's Trusted Storage. Your feature set may differ somewhat from this example, depending on your license and product, but you should see several of the features above. 900 seconds is the minimum timeout allowed by FlexNet, and we configure our installation to use this minimum value using the options file. The flexsim.exe vendor daemon is using port 56914.   To close the log, press the Close Log button, toward the lower right of the Config Services panel in lmtools.   Troubleshooting problems with the service   Did everything work? If not, perhaps you have one of these issues:   The FlexSim_License service is not listed as an installed service in Windows’ services. The FlexSim_License service does not start manually. The FlexSim_License service does not start up automatically when the computer restarts.   If any of these apply to you, please check the following:   You ran lmtools as a user with admin rights, and right clicked the program to choose Run as Administrator. On the Config Services tab, you checked the boxes Use Services and Start Server at Power Up. There isn’t already a process running or service installed named FlexSim_License. lmgrd.exe, flexsim.exe, and all other files downloaded together with them are in the same folder, and in a file path that does not contain any folder named “FlexSim” (case insensitive). The FlexSim_License service must run as an account with proper permissions. It’s possible that the Local System Account setting specified in Configure service permissions above does not have adequate permissions, and you will need to specify the service to run under a different account. Work with your server administrator or IT department to determine an account with the proper permissions to run your license service. You could have a port conflict, where one or both of the ports specified in your flexsim.lic license file are in use by another service on your license server. Check the section Resolving port conflicts. Some anti-virus solutions prevent unrecognized services from running or accessing necessary functionality. If your license service won't start, try temporarily disabling any anti-virus solution installed on your license server. If this fixes the issue, work with your IT administrator to modify your anti-virus settings. Remember to reactivate your anti-virus software after this experiment.  
View full article
Note: the demo models were created specifically for the FlexSim user community who speak spanish, and all the explanations, statistics, and documentation available in the dashboard, GUIs, and Model Documentation are in Spanish. Nonetheless, given that 3D animation is a universal language, you are welcome to download these models regardless of the language you speak. Manipulación de material / Material handling Demo_Crossdocking.fsm En este modelo, llegan tres tipos de productos a dos zona de recepción. Un primer grupo de operarios se encarga de transportarlos a una zona de almacenamiento intermedio. Desde allí, otro grupo de operarios los clasifica según la ciudad a la que serán despachados. In this model, three types of products arrive at two reception areas. A first group of operators transports them to an intermediate storage area, where another group of workers sorts them according to the city they will be delivered to. Preparación de pedidos / Picking Demo_Picking.fsm En este modelo, los pedidos llegan de manera aleatoria a lo largo del día y son revisados y preparados por un operario. En este modelo, se puede modificar si los operarios realizan la preparación a pie o utilizando un vehículo, así como la ubicación del almacén de estibas y el número de operarios asignados. In this model, orders arrive randomly throughout the day, which are reviewed and prepared by an operator. In this model, you can change whether the operator does the picking on foot or using a vehicle, the location of the pallet zone, and the number of assigned operators. AGV - Vehículos de guiado automático Demo_AGV.fsm Este modelo demuestra la aplicación del módulo de AGVs de FlexSim, que permite simular sistemas que utilizan AGVs para el transporte automatizado de material. En este modelo, un AGV con capacidad para cinco productos se encarga de transportarlos entre dos zonas dentro de un proceso. This model demonstrates the application of the AGV module in FlexSim, which allows simulating systems that use AGVs for auomated material handling. In this model, an AGV with a capacity of five productos is responsible for transporting them between two zones within a process. Preparación de kits / Kitting Demo_Kitting.fsm Este modelo representa un proceso productivo que utiliza la técnica de preparación de pedidos. Mediante parámetros, es posible activar o desactivar estaciones de trabajo para evaluar el impacto en la productividad del proceso. This model represents a kitting process. Through parameters, it is possible to activate or deactivate workstations to evaluate the change in throughput statistics. Centro de vacunación / Vaccination center Demo_HC.fsm En este modelo se representan un sistema de atención de pacientes en un centro de vacunación. Los pacientes llegan de forma aleatoria, se registran y esperan hasta que una enfermera los vacune. This model represents a patient care system in a vaccination center. Patients arrive randomly, complete a registration process, and wait until they are vaccinated by a nurse. Cajero automático / ATM Demo_ATM.fsm En este modelo, se representan un sistema de retiro de dinero en cajeros automáticos (ATMs). Los usuarios llegan de forma aleatoria y realizan un retiro si hay un cajero disponible; de lo contrario ,esperan en la fila. This model represents a cash withdrawal system at ATMs. Users arrive randomly and proceed with a withdrawal if a cash machine is available; otherwise, they wait in line. Fluidos / Fluid Library Demo_Fluidos.fsm Este modelo representa un sistema de embotellado. Se generan, mezclan, procesan y finalmente embotellan dos tipos de fluidos. Después de embotellados, un operario los transporta a la zona de empaque. This model represents a bottling system. Two types of fluids are generated, mixed, processed, and finally bottled. After bottling, they are transported to the packaging area by an operator. Navegador GIS / GIS Navigator Demo_GIS.fsm Este modelo muestra cómo se utiliza el módulo GIS de FlexSim para determinar la ubicación óptima de un nuevo almacén, teniendo en cuenta una red de distribución específica. This model demonstrates how the GIS module of FlexSim is used to determined the optimal location for a new warehouse, considering a specific distribution network.
View full article
Hi everyone, recently @Arun Kr posted this idea to add a utilization vs. time chart to the available chart types in FlexSim. I had previously build a relatively easy to set up Statistics Collector for use in our models. I have since cleaned up the design a bit and thought to post it here, since this seems to be a commonly desired feature. utilization_vs_time_collector_24_0_fm.fsm All necessary setup is done through labels of the collector. The first three are actually identical to labels found on the default Statistics Collector behind a state bar chart. - Objects should point at a group that contains all objects the collector should track the utilization for. - StateTable is a reference to the state table that will be used to determine which state counts as 'utilized'. - StateProfile is the rank of the state profile that should be read on the linked objects (0 for default state profile). - MeasureInterval is the time frame (in model units) over which the collector will take the average of the utilization. - NumSubIntervals determines how often that measurement is actually taken. In the example image above (and the attached model) the collector measures the average utilization over the last 3600s 12 times within that interval of every 300s. Each meausurement still denotes the utilization over the complete "MeasureInterval". The graph on the left takes a measurement every 5 minutes, the one on the right every 60 minutes. Each point on both graphs represents the average utilization over the previous hour from that time point in time. - StoredTimeMap is used to allow the collector to correctly function past a warmup time, by storing the total utilized value of each object up to that point. This should no be manually changed. Since this last label has to be automatically reset, remember to save any changes made to the other labels by hitting "Apply". The collector works by keeping an array of 'total utilized time' value for each object as row labels. Whenever a measurement is taken, the current value is added to the array and the oldest one is discarded. The difference between the newest and oldest value is used to calculate the average utilization over the measurement interval. The "NumSubIntervals" label essentially just controls how many entries are kept in that array. To copy the collector into another model you can create a fresh collector in the target model. Then copy the node of this collector from the tree of the attached model and paste it over the node of the fresh collector. I hope this can help to speed up the modeling process for some people (at least until a chart like this is hopefully implemented in FlexSim) or serve as inspiration for how one can use the Statistics Collector. I might update the post with a user library version if I get to creating it (and if there is demand for it). Best regards Felix Edit: Added user library with the collector as a dragable icon to the attached files. Edit2: I noticed a bug while using the collector. Having the tracked objects enter states that are marked as "excluded" in the state table would lead to incorrect utilization values (possibly even below 0 or above 100%). Replaced the library with an updated version that fixes this. Edit3: I fixed another bug that resulted in a wrong utilization value for the first measurement after the warmup time if the object spent time in an excluded state prior to the warmup. utilization-vs-time-collector-library-20250212.fsl
View full article
FlexSim 2022 Beta is now available. (Updated November 23) 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. Subsequently 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 Development space. FlexSim 22.0.0 Release Notes Added several new features to the Experimenter including: Experimenter can define and run multiple different jobs. Experimenter results are stored in a database file. Additional replications of a scenario can be run without needing to rerun previous replications. Improved visuals for status of replications. Added a Reinforcement Learning tool. Added Label charts. Added Tracked Variable charts. Standardized charts created by Pin buttons. Added sort options to table views. Updated MTBF/MTTR time fields to show unit conversion options. Added InObjectsInternal and OutObjectsInternal properties to the Visual Tool class. Backwards Compatibility Note: The following changes may slightly change the way updated models behave. Deprecated the optquest() command. It no longer executes any logic when called. The associated OPT_* macros have been removed. FlexSim now interacts with OptQuest through the Optimization Job object. Changed the default query handlers that deal with the Experimenter in MAIN:/project/exec/globals/serverinterface/queryhandlers. Custom applications that create web queries may need to be updated. Process Flow Added Process Flow Activity Statistics charts.
View full article
FlexSim 2025 is now available for download. You can view the Release Notes in the online user manual. FlexSim 25.0.0 Release Notes For more in-depth discussion of the new features, check out the official software release page: FlexSim 2025: Container Object, Task Sequence Queue, and more If you have bug reports or other feedback on the software, please create a new post in the Bug Report space or Development space.
View full article
Attached is an example model that simulates a Kiva system. kivasystem.fsm See Dev Talk: Kiva System Modeling for the steps I took in building the model.
View full article
Introduction Several times per year we release a new feature-version of FlexSim Simulation Software. In order for client PCs to be able to run a licensed version of the upgraded software, you'll need to upgrade the activated license(s) on your license server. Licenses with a current maintenance subscription are eligible to be upgraded to the new version. If you don't understand how licensing works for different FlexSim versions, please review our Answers article FlexSim Version Numbering. Overview There are 5 main steps to upgrading the licenses hosted on your lmadmin or lmtools license server: Return the licenses you intend to upgrade Upgrade your licenses Activate the upgraded license Reread the license Upgrade client PCs Several of these steps have their own fully documented procedures. We'll link you to those resources below. 1. Return the licenses you intend to upgrade The steps to return a license-server-based license are fully documented. Choose the link below that best matches your needs, depending on whether your license server can connect to the Internet: License Server - Return - Online License Server - Return - XML / Offline Be sure to return ALL licenses you wish to upgrade. 2. Upgrade your licenses NOTE: Licenses with expired maintenance will not upgrade. Timed licenses do not upgrade. Only permanent (not timed) licenses under current maintenance can be upgraded. Log in to your FlexSim Account. If you were already logged in to your FlexSim Account, in the top navigation menu hover over your initials icon and choose Reload Account. Now in the top navigation menu, choose Licenses > List. Check that the available seat count is equal to the total. All of a license’s seats should be returned for it to upgrade. Click on the Upgrade Licenses button. If you have several licenses to upgrade and all are owned by or shared with your FlexSim Account, they will all be upgraded at once. Please be patient while the upgrade process works in the background. When the page refreshes, eligible licenses will have a new activation ID for the latest version of the software. Your license code indicates its version at the end of the code to help you know what versions your license will properly activate. Review license code format. 3. Activate the upgraded licenses The steps to activate a license-server-based license are fully documented. Choose the link below that best matches your needs, depending on whether your license server can connect to the Internet: License Server - Activation - Online License Server - Activation - XML / Offline 4. Reread the license Your license server needs to start serving up your newly activated licenses. You can either restart your license manager service, or use your license manager's option to reread your licenses. The steps to reread your licenses differ depending on which license manager you are using to host your licenses. Use these links to jump to instructions for the license manager you're using: lmadmin lmtools+lmgrd 5. Upgrade client PCs Finally, upgrade your PC with a version of FlexSim appropriate for your new license (learn how licenses work across versions). After installing a new version of FlexSim, you will need to configure it to get a license from your license server. There are two ways a client PC can be configured. Choose the method below that most closely matches the main use case for your client PC: Single-user client PCs - this method configures settings that are saved on a per-user basis. Multi-user client PCs - usually appropriate for a university computer lab or other shared-PC situation, where the configuration should be computer-based. Having trouble licensing your client PC? Verify client PC licensing to find out how to tell if your client PC is successfully getting a license from your new license server. If you have any questions or problems, please search our Answers Community for possible solutions. There is a good chance someone else has already asked your question. Still not finding what you're looking for? Submit a new question and we'll check it out. If you're including any confidential information, such as license codes, be sure to mark your question as private! You can also contact your local FlexSim distributor for live phone, web, or email help.
View full article
FlexSim 2024 is now available for download. You can view the Release Notes in the online user manual. FlexSim 24.0.0 Release Notes For more in-depth discussion of the new features, check out the official software release page: FlexSim 2024: Workspaces, Person Visuals, USD Support, 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
When installing FlexSim, has the installer ever quit, saying "Installation Cancelled" or "FlexSim must close"? Installation Canceled Installation was cancelled by user. Or has your FlexSim installation ever had errors upon starting the software? FlexSim has encountered a problem. Your work is saved in recovery files. Please notify FlexSim Technical Support. Retrieve your recovery files, then email FlexSim. Do you want to restart? FlexSim encountered an unrecoverable error and must close. Please notify FlexSim Technical Support about this issue. This can be frustrating any time, let alone for a brand new FlexSim installation. Here are some possible solutions that may help FlexSim install or start properly: 1. Meet the System Requirements Make sure that your computer meets FlexSim's minimum system requirements. If your computer's hardware or operating system is out of spec, you may not be able to install FlexSim, or it may not start or work properly. Don't overlook the disk space requirement. You'll need about 2.5 GB free for the installer and the completed installation in order to install FlexSim. Low disk space will cause the installation to fail. Graphics specifications are particularly important, as incompatible/nonexistent graphics hardware or out of date graphics drivers may cause strange graphics behavior or other issues. See this article for more graphics considerations, tips, and guidance for installing or upgrading graphics drivers. 2. Windows Updates, Driver Updates FlexSim relies on some newer Windows components and libraries provided by Microsoft in patches and updates. Make sure your computer is up to date with all Windows updates. In addition to Windows updates, be sure to upgrade your system's graphics drivers, as FlexSim relies on fixes and features found in the latest graphics drivers from NVIDIA, Intel, or AMD. It is not enough to just use Windows Update to check for new graphics drivers - you should check the websites for your system manufacturer or graphics vendor specifically for updated graphics drivers. See our graphics article for more detailed information. 3. Reboot your computer Windows has improved enormously over the years, but even with modern Windows sometimes a good, old-fashioned reboot can do the trick, especially if you have recently installed or uninstalled other software or Windows updates. 4. Run as Administrator Software Installation: Ensure that you have the proper privileges on your PC to install new software. Install FlexSim by right-clicking the installer file and choosing Run As Administrator. If you don't have admin rights, you will be prompted to enter credentials with admin rights. Enter the proper credentials to allow the software installation to proceed. Startup Issues: Try starting FlexSim with higher permissions by right-clicking the program icon and choosing Run As Administrator. If you don't have admin rights, you will be prompted to enter credentials with admin rights. Enter the proper credentials and the software should start with elevated permissions. Does this solve the problem? Some users have reported that some FlexSim components are blocked by default, but can run properly when FlexSim is started with elevated privileges. If you find this is the case for you, work with your IT group to determine how to unblock the DLLs or other components required by FlexSim. 5. Delete FlexSim's saved settings Sometimes when FlexSim has trouble starting up, it can be due to a corrupted prefs.t file. FlexSim's prefs.t file stores your FlexSim settings and preferences and is located at: %APPDATA%\Flexsim\FlexSim <version> The %APPDATA% address is a shortcut to your Windows user account's Roaming directory. This animation shows how to get to your %APPDATA% directory: With FlexSim closed, delete this prefs.t file. Then try starting FlexSim. Are the problems resolved? 6. Reinstall FlexSim Completely uninstall FlexSim and try a new installation. It may be worth downloading a new copy of the full installer to ensure there was no corruption in the install package. You could also try the .msi installer, instead of the .exe. When installing using the .msi you can save a log of the install process. This could help with debugging if there are still problems. Whichever method you use when reinstalling FlexSim, be sure to right-click the installer and choose to Run as Administrator (see the Run as Administrator section above). 7. Update your computer's .NET installation FlexSim relies on Microsoft's .NET Framework for some functionality. Windows 10 includes a compatible .NET version, or if a compatible version is missing the FlexSim installer will try to download and install .NET directly from Microsoft. If your computer/network does not allow this you may need to update .NET yourself. Click here to download the .NET framework directly from Microsoft. After installing the .NET Framework, please revisit the Windows Updates section above. Microsoft may provide new security fixes that should be applied to your .NET installation. 8. Reinstall Microsoft Visual C++ Redistributable These are run-time components provided by Microsoft that are required to run FlexSim. Normally these components are installed during FlexSim's installation process. If FlexSim is encountering errors, it could be caused by a broken or out of date C++ redistributable. Click here to download the latest Visual C++ Redistributable directly from Microsoft. After reinstalling the Visual C++ Redistributable, please revisit the Windows Updates section above. There may be new security fixes for the redistributable. 9. Antivirus We have seen instances where FlexSim is blocked by an overzealous Antivirus software. If FlexSim doesn't start up at all, despite a new installation, this could be the case. To test this, temporarily disable your antivirus and try to install or start FlexSim. If the problem clears up then your antivirus may indeed be blocking FlexSim. In this case, work with your IT department to configure the appropriate settings to allow FlexSim to run alongside your antivirus solution. Remember to re-enable your antivirus software after this test. 10. Windows Event Viewer If FlexSim still won't install or start, try checking the Windows Event Viewer to see if there are any errors related to installing or starting FlexSim. If so, please send those our way so that we can troubleshoot further. In case you've never used it before, here is a tutorial covering the Event Viewer. Add your comments below on what did or didn't work for you, other problems or symptoms you encountered, or tips and tricks that helped you solve them. Fixes for older versions The following suggestions apply to outdated versions of FlexSim. Update OpenSSL DLLs Applies to FlexSim versions 7.0.0-20.2.0 (excluding LTS versions 20.0.9+) Some older FlexSim installations may crash shortly after FlexSim opens, when FlexSim's start page contacts our remote servers for dynamic content, due to a new system incompatibility with the openssl library that shipped with these older FlexSim versions. Newer versions of FlexSim include updated files that resolve this problem. Install the latest version of FlexSim to obtain updated versions of the following two files: C:\Program Files\FlexSim <version>\modules\Emulation\openssl\libeay32.dll C:\Program Files\FlexSim <version>\modules\Emulation\openssl\ssleay32.dll Copy those updated DLLs to your affected FlexSim installation, under its program\Webkit folder, overwriting the older version of those files. Alternate workaround: disconnect your computer from the Internet, both wired networks and Wi-Fi. Start FlexSim. Go to File > Global Preferences > Dynamic Content tab. Deactivate all of the options there. You can now reconnect to the Internet and FlexSim may work properly the next time you start the application. Uninstall KB4571756 Applies to FlexSim versions 7.7.0-16.2.2 A Windows 10 patch released in September 2020 may prevent FlexSim versions 7.7.0-16.2.2 from starting. If you are using one of these older versions of FlexSim and the program will not start, try removing this Windows update: https://support.microsoft.com/en-us/help/4571756/windows-10-update-kb4571756
View full article
Attached is a sample model that uses Google's OR-Tools python module to find optimal AGV dispatching solutions. I recently stumbled on Google's OR-Tools, which includes several classes for finding optimal solutions to things like vehicle routing, scheduling, bin packing, etc. Since FlexSim now has a mechanism for easy connection to python, I decided to try and see if/how it could be connected to FlexSim for testing AGV dispatching strategies. I threw together this model just to see how/if the connection can work. All source/destination locations are chosen at random, and work inter-arrival rates are random with a user-defined mean inter-arrival time. To get this model running on your side: Install a version of python Run the following from the command-line: python -m pip install ortools In FlexSim, make sure your preferences are configured for the correct version of python, and that python is part of your PATH environment variable. Open the model. In the Parameters table, set DispatchMode to 'VRP Solver'. This model uses the Vehicle Routing Problem solver to find optimal AGV assignment strategies. The main work generation logic is in the 'Work Generation' process flow. At random intervals, work requests arrive. They are assigned to random source and destination locations. Then, when dispatching in 'VRP Solver' mode, the logic calls the optimizeVRP() user command. This command packages the current state of the model into a valid vehicle routing problem, and then passes it to the py_optimizeVRP() user command, which is implemented in python, in the AGVVRP.py file. The command creates the VRP problem using the OR-Tools classes, and then calls the solver, returning the results. OptimizeVRP() then interprets the results and assigns AGVs as needed. Note that the VRP is re-solved every time new work arrives. You'll see little 'freezes' in the execution of the model, because it is solving the VRP at each work arrival. Note that the standard Vehicle Routing Problem is slightly different from the problem this model needs optimized: In an AGV model, there’s no depot. Instead AGVs may be currently located anywhere in the warehouse. There’s no ‘depot-loaded’ capacity of an AGV, and no ‘demand’ at customers. The standard VRP is a situation where trucks are loaded at the depot, and then depleted as they visit each customer in the route. This is not present with single-capacity AGVs. When an AGV picks up at an origin location, it must immediately deliver to the destination location. In order to wrangle the AGV problem into a valid vehicle routing problem that can be solved by OR-Tools, I constructed the problem as follows: I made each AGV’s ‘current location’ a node in the graph The distance from the depot to the AGV’s current location is 0 The distance from the depot to any other node in the graph is prohibitively large. This will cause vehicles to always go to their 'current location' first, with 0 cost. The distance from any node in the graph back to the depot is 0 A given AGV must visit its current location as part of its route. This can be added as a constraint to the problem in OR-Tools For immediate unload after loading, I initially tried adding this rule as a constraint, but the solver hung when solving. So, instead of graph nodes being locations in the facility, I made graph nodes represent ‘tasks’, i.e. visiting this node means picking up the item AND dropping it off. As such, the ‘cost’ of ‘visiting’ a ‘task’ node is the cost to travel from the ‘destination’ of the previous node to the ‘origin’ of this ‘task’ node, plus the cost to travel from the ‘origin’ of this task node to the destination of this ‘task’ node. Once I did this, OR-Tools was able to solve the problem 'optimally'. By optimally, I mean it was finding the AGV routing that minimized the maximum 'travel makespan', which is the maximum distance route of all of the AGVs. Once I had done this, I wanted to compared it with various heuristic-based scenarios. So I set up a 'Closest' dispatch mode. Here, when an AGV finishes a task, it will take up the next task whose pickup point is closest to its current position. I also created a 'FIFO' dispatching mode, which is that work will be dispatched to AGVs always in FIFO order. These three dispatching modes I compared with the experimenter. My initial experiments showed some interesting results. Most interesting was that in 'VRP Solver' mode, work task time-in-system was relatively high. This is because the objective function completely ignored time in system of the work, and was only optimizing for vehicle travel distance. So some work was being pushed off until much later because vehicles could get better travel distances by pushing it off. To account for this, I added a 'soft upper bound', which is kind of like a 'due date' for the work. Namely, work is due to be finished 800 'meters-of-agv-travel' after it arrives. This was a quick-and-dirty workaround and could certainly be improved, but it did serve to get the time in system for VRP Solver mode down. Below are some of the resulting experimenter results. AGVTaskTime - Time from starting a task to finishing it (i.e. a kind of takt time) The VRP solver performed the best across all scenarios here, and was especially better than the other strategies in low-demand scenarios. This intuitively makes sense. When there are a lot of under-utilized AGVs, the closest and FIFO strategies will always dispatch idle AGVs to do work, which could potentially make them travel long distances. However, the VRP solver can find opportunities to decrease travel distance by waiting to dispatch an AGV that will be near a task in the future, and leave other AGVs idle. Note that I think the 'closest' strategy only finds the 'closest' next task for an AGV that just finished a task, not the 'closest' idle AGV for an arriving task. Obviously that could be changed for a better performing 'closest' strategy. On the other hand, I think in this model all idle AGVs go back to the same park location, so such a change would require distributed park locations to take advantage of closer idle AGVs. AGVWorkStaytime - time-in-system for a given AGV task Here the 'closest' strategy actually performed better than the VRP. This would seem counter-intuitive at first, but upon further evaluation, it does make sense. The VRP, in its current form, only optimizes for total AGV travel distance. It completely ignores job time in system/due dates/etc. So the solver will always assign a route that is shorter even if that route pushes back jobs that have been in the queue for a long time. The solver also re-solves every time a new job arrives. So we may be having scenarios where some jobs are always 'better' to be pushed to the end of the route, and so they keep getting pushed back, resulting in poor time-in-system performance. The solver does include soft and hard job 'due dates', so we could make adjustments to the problem to make the VRP get better time-in-system results. AvgAGVUtilization AvgAGVUtilization is where the VRP especially shines in low-demand scenarios. It finds opportunities to leave AGVs parked because there will be opportunities for busy AGVs to take up jobs in the future with minimal extra travel overhead, whereas the 'FIFO' and 'Closest' strategies will always dispatch idle AGVs to unassigned jobs, causing extra unnecessary empty travel. I am still a bit perplexed by the high-demand scenarios though. Here the 'Closest' and 'FIFO' strategies both beat the VRP in the 120/hr and 102/hr scenarios. This probably would warrant further investigation as to why the other strategies do better here. It may be that, in these scenarios, the AGVs cannot keep up with demand. So there is a queue of jobs that is ever-increasing. The VRP solver is optimizing the full plan, meaning it is scheduling job assignments, and finding travel distance minimization opportunities, that are way out into the future. And it is not getting the opportunity to execute those optimized routes because the problem is being re-solved at each job arrival. With an increasing job queue, the 'closest' and 'fifo' strategies might be actually doing better specifically because they are short-sighted. Just take the closest job to you. On the other hand, if we have increasing job queues (i.e. the AGVs can't keep up), then the AGV utilization should be around 100% anyway, which it's not. Anyway, it's something still to churn on. ThroughputPerHour The throughput per hour indicator tells us whether the AGVs actually kept up with the jobs. If the AGVs were able to keep up with jobs, then the resulting means should be right around the scenario's throughput/hr number. It looks like FIFO got way behind on both the 120/hr and 102/hr scenarios. 'Closest' and VRP both got a little behind in the 120/hr scenarios. One exciting possibility of using this design is that the python script is not technically dependent on FlexSim. So you can use FlexSim to test your python-based optimization, and then you can deploy that python script in a live setting. AGVVehicleRoutingProblem.zip
View full article
FlexSim 2025 Update 1 is now available for download. You can view the Release Notes in the online user manual. FlexSim 25.1.0 Release Notes For more in-depth discussion of the new features, check out the official software release page: FlexSim 2025 Update 1: Change Object Class, Exports, AGVs, Timed Travel, and more If you have bug reports or other feedback on the software, please create a new post in the Bug Report space or Development space.
View full article
Top Contributors