FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
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
Attached is an example simulation of a rail hump yard. Trains in this hump yard are processed in three stages: Arrival - A train engine delivers an arriving train into the arrival area of the yard and then leaves Classification - The shunt engine takes trains from the arrival area to the hump. From there the train is uncoupled into sets of cars for classification, and each set of cars 'falls' to its designated departure train and couples to it. Departure - Once a train has been composed, it is transferred to the departure area, where it waits a random time until departure. I've tried to keep the logic as simple as possible so you can understand the process flow. I've implemented no traffic control between train engines/shunt engine, so they will occasionally run over each other. However, I have used AGV routing constraints to dynamically block off sections of track that are filled by trains, so the engines will move around them. HumpYardSample.fsm
View full article
Pools of features, organized by version A license is actually a set of features. Different license types are made up of different sets of features. This table shows the various features that make up different FlexSim license types (Enterprise, Educational, Runtime, etc): Each license is set to a given version, and each of the contained features is at that version. With that background, once a license is activated on a license server, its features are added to a pool of license features at a given version. So for instance, let's say you have the following 2 licenses activated to your license server: Enterprise 23.0 - 2 seats Runtime 22.2 - 1 seat Once these licenses are activated to your license server, the server actually has no idea it has 2 Enterprise and 1 Runtime. It sees only the following pools of license features: dragdropconnect 2 seats [23.0: 2 seats] (the Runtime license didn't provide one of these) compile 3 seats [23.0: 2 seats, 22.2: 1 seat] xmlsaveload 2 seats [23.0: 2 seats] (the Runtime license didn't provide one of these) ... commercialuse 3 seats [23.0: 2 seats, 22.2: 1 seat] createobjects 2 seats [23.0: 2 seats] (the Runtime license didn't provide one of these) modeltree 1 seat [22.2: 1 seat] (not a feature of Enterprise licenses) FlexSim software is feature-greedy By default, when a FlexSim install contacts a license server for a license, it will try to get 1 of every feature at the software's version or later. In this way we say that FlexSim software is "greedy". For instance, under the above scenario, when you start FlexSim 22.2, the software will default to pull the following features: dragdropconnect compile xmlsaveload stochastics consolescript nomodellimit entiretree commercialuse createobjects modeltree The italicized features are Enterprise-specific. The bold feature is Runtime specific. The software just tries to get one of each feature, so now its feature set is a hybrid of Enterprise+Runtime. In the software it reports a "Custom" license: If a 2nd person were to open the 22.2 software, they would get that same set, minus the one modeltree feature from Runtime, essentially giving them the 2nd Enterprise seat. If a 3rd person tried to open the software in version 22.2, they would get a slightly hobbled version of a Runtime license, without the modeltree feature. Any in-software features that relied on that being present would be blocked. Only checkout features for license type The software includes an option to limit what features it will ask for: In this way you can ensure that the right people are getting the right feature set.
View full article
Have you received this licensing error? Operations error: 7284 Cannot perform support actions on inactive fulfillment record FID_ ... (entire fulfillment ID listed) You may encounter this error during an attempted license return or repair. This error means that the fulfillment was already returned. A fulfillment is an activation of a license. Once that activation has been returned to the main license server, the fulfillment becomes inactive. It is meaningless to return or repair a fulfillment that has already been returned. So, how do you have an inactive fulfillment still on your computer if it was supposedly returned? There are a couple of ways this can happen: Someone requested that the license be force-returned. Sometimes a license can be lost, so a client contacts their local distributor to force the license back. Later on, the license is found activated on a PC, however it will not be returnable because the license was already force-returned. You returned your license normally, but later restored your computer from a backup or otherwise rolled back to a previous state. This may break your license, but in trying to repair the old fulfillment, the main license server reports to you that actions cannot be taken on that inactive fulfillment - it was already returned. The point with this error is that FlexSim's main license server has a record that your fulfillment was already returned. The fulfillment you are trying to return or repair is inactive - no actions can be taken on it. The solution is to delete the fulfillment record from your PC: License Server - Delete fulfillment Standalone - Delete fulfillment
View full article
I created this custom visual tool because I had a situation where we needed to see the progress of activites in the 3D View. I basically just change the size of a plane based on the completion level and calculate a percentage. Model is attached and contains some explanations. Enjoy, Custom visual tool.fsm
View full article
This model shows a two-floor healthcare facility with an elevator connecting the two floors. Patients are moved on a gurney from different rooms and across floors. There is a dashboard with two checkboxes so you can turn on and off the visuals for the different floors. One unique feature of this model is that each patient has a constant companion who follows them throughout their care process. This could be used either to demonstrate that companions can be modeled in FlexSim, or as a basis for another modeler to copy. FlexSim-HC-2023-MultiFloor_With_Companion.fsm
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
RailWorks 23.0.1 is now available ( 24 January 2023). This version of RailWorks is intended for use with FlexSim 2023. All versions can be found in the Downloads section of your FlexSim account on the 3rd party modules tab. Please do not hesitate to report any bugs, usability improvements and feature requests to dev@flexsimbrasil.com.br About RailWorks The FlexSim Brasil RailWorks module consists of premade custom objects, designed to represent a real environment for the Rail problem modeling, with less configuration. Our approach is to unite 3D modeling with the Process Flow functionality, allowing object configuration and visualization through the native 3D FlexSim solution, and the rail system events to be triggered by the Process Flow, using not only defaults FlexSim Process Flow activities, but also new ones developed by our team. For any questions, please email dev@flexsimbrasil.com.br Release Notes The following is a list of features and fixes that have been included in the latest RailWorks releases. RailWorks 23.0.1 (24 January 2023) Release for FlexSim 2023.0 RailWorks 22.2.3 (24 January 2023) Bug Fix: Fixed various bugs affecting the locomotive movement. Feature: Added automatic train detection and anticipation of movement. Feature: Added a wait logic on locomotive to continue with movement when rail is not on use.RailWorks 21.2.4 Feature: Added GIS Portal object for integration with GIS Map. Release for FlexSim 2022 Update 2 All bug fixes in RailWorks 21.2.4 below. RailWorks 22.2.2 (12 December 2022) All bug fixes in RailWorks 21.2.3 below. RailWorks 22.2.1 (25 November 2022) Release for FlexSim 2022 Update 2 Bug Fix: Fixed various bugs affecting the definition of traveling routes Bug Fix: Fixed various bugs affecting the locomotive and wagon movement amongst the rail tracks Bug Fix: Fixed a bug affecting the usage of multiple locomotives at same railway Bug Fix: Fixed a bug affecting the offset distance in Control Points Bug Fix: Fixed a bug affecting the Decouple activity and Couple by another Locomotive Retroative Release: New versions released with bugs fixed from 2021.2 to 2022.2 All bug fixes in RailWorks 21.2.2 below. RailWorks 22.1.4 (24 January 2023) All bug fixes in RailWorks 21.2.4 below. RailWorks 22.1.3 (12 December 2022) All bug fixes in RailWorks 21.2.3 below. RailWorks 22.1.2 (23 November 2022) All bug fixes in RailWorks 21.2.2 below. RailWorks 22.1.1 (26 July 2022) Release for FlexSim 2022 Update 1 Refactor: Changed the model limit control and system functionality Feature: Added the PreCreate activity in ProcessFlow Bug Fix: Fixed various bugs affecting the locomotive and wagon movement. Bug Fix: Fixed a bug affecting the model limit creating new models. Bug Fix: Fixed a bug affecting the model limit window with multiple modules installed. All bug fixes in RailWorks 21.2.1 below. RailWorks 22.0.4 (24 January 2023) All bug fixes in RailWorks 21.2.4 below. RailWorks 22.0.3 (12 December 2022) All bug fixes in RailWorks 21.2.3 below. RailWorks 22.0.2 (23 November 2022) All bug fixes in RailWorks 21.2.2 below. RailWorks 22.0.1 (26 July 2022) Release for FlexSim 2022 Refactor: Changed the way that Rails can be resized and moved. Feature: Added the RailWorks manual to FlexSim. Feature: Added travel offset to the MoveTrain activity. Feature: Added speed profiles to the Locomotive. That means that you can now set the speed of a Locomotive based upon if it is coupled to a Wagon or not. Feature: Added acceleration and deceleration of locomotives. Feature: Added RailwayTimetable, providing observability for the model as it saves every important event in RailWorks, like the time when a locomotive arrived at a station, as an example. Feature: Added a new model to the Stations: Fuel Station. Feature: Added a new model to the Stations: Flow Station. Feature: Integration with FloWorks. Feature: Added loading modes to thee LoadWagon activity. Bug Fix: Fixed various bugs affecting the locomotive movement. Bug Fix: Fixed a bug affecting the load and unload actions. Bug Fix: Fixed a bug affecting the Experimenter. All bug fixes in RailWorks 21.2.1 below.
View full article
You've installed, configured, and started your license server. FlexSim is installed and your client PCs are set to get a license from your license server. How can you tell if they're communicating and licensing properly? You can check both the client PC and the license server to make sure that licensing is happening: Client PC Within FlexSim software on the client PC, go to the main menu, Help > About FlexSim. The popup should indicate the activated license type. Test licensed features to see if they work. Check the article FlexSim Feature Limitations by License Type to see what features should be available given your license type (Enterprise, Educational, Student, Runtime). For instance, the Experimenter feature should be available to each of those license types. License Server In lmtools logs (Config Services > View Log…), you should see that a seat is in use. (See How do I read/analyze my vendor daemon logs? What do the various lines mean?). In lmadmin logs you should see that a seat is in use. If your client PC is not getting licensed and/or your license server logs don't indicate communication with a client PC, check the license server troubleshooting steps.
View full article
17 Mar: Bug fix releases 22.0.5, 22.2.3 and 23.0.1 are now available. FloWorks 23.0.0 is now available (06 January 2023). This version of FloWorks is intended for use with FlexSim 2023. If you are using FloWorks with FlexSim 2022 (LTS) you can upgrade to FloWorks version 22.0.4. If you are using FlexSim 2022 Update 2, you can upgrade to FloWorks version 22.2.2. All versions can be found in the Downloads section of your FlexSim account on the 3rd party modules tab. Please do not hesitate to report any bugs, usability improvements and feature requests to support@talumis.com. About FloWorks FloWorks is a 3rd party module developed and maintained by Talumis BV (talumis.com). It provides faster and more accurate modelling and calculation of fluid systems than the default FlexSim fluid library. It is especially useful within the oil, gas, and bulk industry both for production and supply chain optimization. This module requires a FloWorks license with active maintenance. For any questions, please email support@talumis.com. Release notes FloWorks 23.0.1 All bug fixes in FloWorks 22.0.5 below. FloWorks 23.0.0 (6 January 2023) Improvement: FlowConveyor snapping improved between conveyors. Improvement: Made FlowConveyor properties available in property tables. Improvement: Extra FlowConveyor options added, such as virtual length support. Improvement: Compare Properties enabled for all active FloWorks objects. Improvement: Toolbox items "Level Triggered Event" and "Time Series" support disabled icon. Improvement: MassFlowConveyor supports stacked products. All bug fixes in FloWorks 22.0.4 below (please note the Known Issues information there). FloWorks 22.2.3 All bug fixes in FloWorks 22.0.5 below. FloWorks 22.2.2 (6 January 2023) All bug fixes in FloWorks 22.0.4 below. FloWorks 22.0.5 Bug fix: Content issues when using warmup time. Bug fix: Input and output trigger ammount issues when using warmup time. Bug fix: Solver crashed with (large) networks that contains cycles. Improvement: Complete new solver mode added, that improves solver times. Improvement: OnEmpty and OnFull are now fired when setting the content using script or ProcessFlow activity. FloWorks 22.0.4 (6 January 2023) Bug fix: Solved FlexSim crashing when FlowControl had invalid references in member list. Bug fix: Legacy flow conveyors were (silently) failing in some cases. Bug fix: Flow Amount for ItemToFlow and FlowToItem can be set correctly. Bug fix: When copying an object it sometimes lost its Flow Control reference. Bug fix: Requesting statistics through FlowObject.stats raised an error. Bug fix: When setting flow content through code the state is now correctly updated. Improvement: Small wording fixes in the user manual. Improvement: Updated tutorials. Improvement: Updated several outdated or incorrect tooltips.
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
Trusted Storage FlexSim is licensed using FlexNet's Trusted Storage. Trusted Storage is a secure storage area FlexNet creates on your license server where it keeps encrypted and hashed license information for licensing FlexSim. Before you can activate a FlexSim license to your license server, its Trusted Storage must be configured. This is done by your license server authenticating with FlexSim's main license server. Below we'll cover configuring Trusted Storage on your license server. If you're here looking for instructions for standalone licensing, check out the article Standalone - Configure Trusted Storage. I haven't configured Trusted Storage before - why now? When your license server communicates over the Internet with FlexSim, this initial Trusted Storage configuration happens automatically and invisibly during the course of the license server's first license activation. The first time you activate a FlexSim license to your license server, your license server and FlexSim's main license server authenticate with each other, configuring your local Trusted Storage, and then immediately activating the requested license. In other words: Internet-connected activation = automatic and transparent Trusted Storage configuration. But you're here because your license server can't communicate over the Internet with FlexSim's main license server. Consequently, your Trusted Storage configuration must be completed manually before activating any license. Create a Trusted Storage config request On your license server, in your extracted download folder of FlexSim license server materials, navigate into the folder flexsimserveractutil. Right-click flexsimserveractutil.exe and select Run as administrator. In the FlexSim ServerActUtil program, go to Tools > Manual Activation > Generate Request. Enter a valid Activation ID. You can use our special activation ID configure-ts, but any valid activation ID can work. Enter 1 for the Count (seat quantity). Click Browse to select an Output File. Choose a filename for the saved request. We used configure-ts.xml. Press Save. Press Generate. You've just saved a new XML activation request in the location you selected. You can confirm this is a Trusted Storage config request by viewing the saved XML file in a text editor like Notepad. A configuration request will lack the TrustedHostInformation tag. If your configure.xml file contains that tag, that means your Trusted Storage is already configured. In that case, you can move on to the offline license activation steps for your license server. Otherwise, continue configuring your Trusted Storage below. Submit your Trusted Storage configuration request Transfer your Trusted Storage config request XML file from your chosen save location to a computer with Internet access. From your Internet-connected computer, open a web browser and login to any FlexSim Account - even a new guest account will work. Click the Licenses link in the header, then choose Manual XML in the Licenses submenu. Upload your XML request file by dragging it onto the drop zone. Your uploaded XML request will be processed. Upon completion, you will be prompted to download the XML response. Did you get a red error message instead of a green success indicator? A message "Fulfill count exceeded the available seat count" means that Trusted Storage is already configured on your license server. In that case, move on to the offline license activation steps for your license server. Otherwise, continue below to finish configuring your Trusted Storage. Process your manual activation responses Transfer your downloaded XML activation response to your offline license server. In the FlexSim ServerActUtil program, go to Tools > Manual Activation > Process Response. Browse to an XML activation response file. Press Process. FlexSim should give you an indication of successful processing of your config request. At this point your Trusted Storage should be fully configured. You are ready to activate your licenses. 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
This Kiva system demo model showcases some of the new AGV/AMR features that were added in FlexSim 2023, including new events and parameters to help with deadlock and allocation failure, and dynamic barrier management. You can update the layout through five parameters, and then click the “Build” button to re-build the system. FlexSim-2023-Kiva-System-Demo.fsm
View full article
Download the files Download FlexSim’s latest lmtools-related files here: https://flexs.im/lmtools-download You can browse archived versions of both lmtools and lmadmin here: https://flexs.im/licenseserver-archive Extract the download Once the download is complete, right-click the .zip archive and choose to Extract All… Save to a folder directly on your root drive. Your lmtools download folder Your extracted folder should end up looking something like this: In later instruction steps, any time we refer to the downloaded files, these are the files we're talking about. Note on location Technically you could save your download files in any folder, but we recommend right at the root drive level for convenience. If you choose to save your download folder in an alternate location, please make sure that the directory path doesn't include any folder named "FlexSim". Since Windows files are not case sensitive, this prohibition also applies to variations like "Flexsim" or "flexsim". We have seen instances where some versions of FlexNet licensing encounter errors when the name of the vendor daemon ("flexsim" in our case) is the same as a folder in the path. A folder that includes "FlexSim" as part of a larger name is fine. For example "FlexSim_Licensing" is a fine folder name. Examples of good paths: C:\FlexSim_LMTOOLS C:\licensing\vendors\FlexSim_LMTOOLS\ C:\Program Data\FlexSim_License\ Examples of bad paths (incompatible folder names bolded): C:\flexsim\ C:\licensing\vendors\Flexsim\ C:\Program Data\licensing\FlexSim\files\
View full article
tl;dr must be stable and persistent, always able to maintain a constant connection with the client software don't use a user's personal computer as a license server use a currently supported Microsoft OS bare-metal hardware, virtual hardware, cloud hosted - all are fine if the hardware meets the OS specifications, it meets the license server specifications configure your network and firewalls to allow the client-server communication Use an always-on, accessible server (not a user's PC) Your license server should be on a stable, persistent system that is always on and always accessible via a stable IP address or fully qualified domain name. A user’s personal system is not a good license server, unless they are only serving licenses to themselves, in which case please consider contacting your local FlexSim distributor to exchange for a standalone license. Operating System Hosting FlexSim licenses requires a currently supported version of Windows (desktop or server versions are supported). FlexSim and FlexNet do not support Windows operating systems that have reached their end-of-life. See Microsoft guidance on product lifecycle. You should perform all Microsoft Updates so that your operating system is fully patched prior to installing the license server software. In the future we hope to allow FlexSim licenses to be hosted on Linux or Mac license servers, in addition to Windows. Work toward multiplatform is ongoing. We do not currently have an estimated timeline. Server Hardware If your license server hardware meets the specifications required for the chosen Microsoft OS, it will be adequate to run the license server software. Hosting licenses is generally NOT a demanding workload. Please do not confuse these minimal license server hardware requirements with the different and more demanding system requirements for running FlexSim Simulation Software. Cloud Hosting Your license server could be hosted by a cloud provider or on premises, on a virtual machine, or a bare-metal OS. Keep in mind that your license server should be a stable, persistent server that client PCs can remain connected to. If your server setup works by creating and destroying new instances of a virtual machine each time you reboot, it is NOT suitable for use as a license server. You will lose your Trusted-Storage-based FlexSim licenses when the virtual machine is terminated. Networking, firewalls, connectivity For the client software to remain licensed, it must maintain a constant network connection to your license server. The exact details of such a configuration are up to you. If you want to limit client-server connections to the local network, allow access to the license server worldwide over a VPN, or make your licenses available over the public Internet, these are all decisions you must make and configure your network and firewalls accordingly such that your FlexSim client PCs can maintain a constant connection to the license server. Further networking guidance, including information regarding firewalls and port numbers, is found in the individual instructions for lmtools or lmadmin.
View full article
Have you received this licensing error? Operations error: 7032 Invalid fulfillment ID: FID_ ... (entire fulfillment ID listed) You may encounter this error during an attempted license return. This error means that the license server has no record of your license activation, and therefore is not able to recognize the return action from your unknown activation. This error should only be encountered under a few rare circumstances: 1. Rollback on FlexSim's main license server FlexSim's main license server could be rolled back to an earlier time due to a necessary database restoration in order to mitigate database corruption or other unforeseen issues or circumstances. License actions, such as license activations or returns, that occurred after the last viable backup was saved, but before its restoration, will be lost. The solution for any license affected will consist of one or both of the following: If an activation occurred during the lost time period you would need to manually remove any un-returnable fulfillments. Standalone - Delete fulfillment License Server - Delete fulfillment If a license return occurred during the time period, you should contact your local FlexSim distributor to request a force-return. Explain the error and this situation. 2. Change to FlexSim's licensing infrastructure Your FlexSim product has reached End-of-Life and the license server under which your license was originally activated has been retired. This situation is outlined in FlexSim's End User License Agreement > Software End-of-life. As of this writing, FlexSim has never retired any of our FlexNet licensing infrastructure and we currently have no plans to do so. This item is included here for completeness' sake and in the event that such future licensing changes occur. If you are using software past its End-of-Life date and you think this problem may be affecting you, please contact your local FlexSim distributor.
View full article
Why would I delete a fulfillment? You may need to manually delete a fulfillment from your PC if: Your license is broken. Sometimes you can fix this problem yourself by attempting a repair. However, you may get a message that the repair failed. "Repair: failure. Online return/repair request for the activation ID is not originated from the original client machine." In this case contact your local FlexSim distributor to explain the situation and let them take a look. Reference this post. If they determine it is best to delete the broken fulfillment, follow the instructions below to do so. Your distributor will then force-return the broken license so that it will be available for a new activation. You mistakenly requested a force-return of a license. If you later find the fulfillment that you thought was lost, that fulfillment is no longer able to be returned normally (because it was already force-returned). In these cases, and in a few other rare circumstances, you may find it necessary to manually remove a fulfillment from your computer. This process occurs exclusively on your computer without any communication with FlexSim's main license server. Delete your fulfillment FlexSim 23.0 or greater For FlexSim version 23.0.1 or greater, you can delete fulfillments using the License Activation window. From FlexSim's main menu, choose Help > License Activation. Under the Advanced tab, find the Delete sub-tab. Choose the fulfillment you'd like to remove from your computer and click Delete. Confirm your choice to remove the fulfillment from your computer. Currently licenses that are *BROKEN* do not show up in this list (how do licenses become broken?), so if this applies to your situation you will need to use the Older versions method below. Older versions Older FlexSim versions do not have a graphical interface for removing fulfillments, but you can still do so using a FlexScript command. Find the fulfillment ID The first step is to find the fulfillment ID of the license you want to return. This is an identifier unique to the activation you're removing. View your licenses to find the fulfillment ID you wish to remove from your PC. Prepare your delete command Once you know your broken fulfillment ID, you're ready to build the command that will remove it from your computer. licenseactivation(LA_DELETE_FULFILLMENT_RECORD, "paste entire 'FID_...' fulfillmentID here"); Be sure to paste the complete fulfillment ID into the 2nd parameter. Depending on your software's licensed state, you may be able to run this command directly in a script window. If not, we'll work around that limitation by using an object's reset trigger. Execute the delete command There are two ways to manually delete your fulfillment: Run the command in a script window Use a 3D object's reset trigger Run in a Script window If your FlexSim installation is still licensed, you can open a Script window to run FlexScript commands: Run the command console. You will be prompted to confirm that you truly want to remove the fulfillment: Choose Yes to remove the fulfillment. Use a 3D object's reset trigger If your FlexSim software is not licensed the Script command console is not available. Instead, do the following: Create a new model. Drag any object into the 3D view. Create a reset trigger on that object. Enter the FlexScript command into the reset trigger. Press OK to save the script. Reset the model. Choose Yes to confirm that you truly want to remove the fulfillment. 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
You may find occasion to check the status of your licenses. Perhaps you're trying to diagnose some issue, or you want to check which license is activated, or how many seats. Here we explain how to view the licenses activated to your license server, and their status. Assumed configurations All steps below assume that you followed the installation instructions as described in our license server installation instructions, and that all FlexSim's license server files were extracted to the location C:\FlexSim_LMTOOLS. Throughout these instructions we will reference files inside that folder. View License Rights On your license server, run the flexsimserveractutil.exe program (C:\FlexSim_LMTOOLS\flexsimserveractutil\flexsimserveractutil.exe) by right-clicking and selecting Run as Administrator. In the FlexSim ServerActUtil program, go to Tools > View License Rights. An information block is printed for each license activated to your license server. You will find listed the unique fulfillment ID for each activation, along with the license code (also called an activation ID and listed here as entitlement ID), its status (fully trusted/enabled, broken, etc.), the number of seats activated, and for timed licenses, an expiration date. Take Action Check the article Licensing Procedures under the Network Licensing heading for instructions if you need to repair or return your license or do any other sort of license maintenance.
View full article
FlexSim 2023 is now available for download. For more in-depth discussion of the new features, check out the official software release page: FlexSim 2023: Enhancements to Bonsai Integration (AI), Emulation, AGV/AMR, and more You can view the Release Notes in the online user manual. FlexSim 23.0.0 Release Notes 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.
View full article
This supply chain demonstration model shows both a visual and statistical representation of a company's stock and backorder from day-to-day. The goal of the model was to predict shortages and backorder trends due to COVID-related disruptions. FlexSim's 3D view is used in a novel way to visualize the current stock and demand for each product. Each queue represents a different product SKU and each box represents a product unit, with red indicating product demand and blue indicating product availability. This model also contains a comprehensive set of dashboards to help visualize and interpret the data. Logistics_Supply-Shortages-Stockouts_v22-2.fsm
View full article
Top Contributors