FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
This sample model shows the flexibility and power of the mass flow conveyor object. It contains many examples of stations found in this production process, from depalletizing glass bottles all the way through final packaging. The model makes use of many custom shapes that add realism and visual appeal to the simulation. Mass-Flow-Bottling-Line-Custom-Shapes.fsm
View full article
Engage with the FlexSim community here on the FlexSim forum boards. Check out our learning resources. Customers with current licensing can request direct technical support from their FlexSim representative, via phone, email, web meeting, or support ticket.  
View full article
This model and library will allow you to produce a heat map of anything moving in the model - including AGVs and Flowitems. To add this to a model is simply a matter of : 1) Load the attached user library 2) Add objects to the group HeatMapMembers 3) Drop a heat map object (cylinder) into the model - reset and run. With this updated version you can now you can now have multiple mapper objects in the same model showing different groups - made easier by the addition of a 'groupName' label on the mapper. You can easily change the height at which the map is draw using the 'zdraw' label and alter the sampling interval and grid size using the 'heatInterval' and 'resolution' labels. The resolution is the number of divisions per model length unit. In the example model set to metres, a value of 2 gives 4 divisions per square metre. Currently non-flowitems are set to ignore time when the object is in an idle state. HeatMapAnything.fsl HeatMapAnything.fsm
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.   If your computer is not connected to the Internet, you will need to transfer FlexSim's installer to your computer on a USB drive or some other method.   You will also need to be able to transfer XML license files to and from your offline computer.   NOTE: If this is the first time a license has been activated on this computer, an initial XML request/response communication will be needed to configure your local Trusted Storage.   This means that for a first ever license activation on a given computer, complete the steps below for just a single Activation ID - that will configure your computer's Trusted Storage.   Once that is complete, repeat again the entire Manual XML activation process for that initial Activation ID and any other Activation IDs that will be installed to this computer.   Find your licenses   Log in to your FlexSim Account, click the Licenses link in the top menu. In the Licenses 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-FSENT16.2   Create manual activation requests   Open FlexSim Software. In FlexSim's main menu, Go to Help > License Activation. Click the Advanced tab. Go to the Manual Activation sub-tab. Enter a valid Activation ID into the field (see the Find your licenses heading, above). Click the Generate Request button. You will be prompted to save an XML file. Choose a location and filename to save your XML activation request. If this is your first time ever activating any FlexSim licenses on this PC, only generate an XML request for one activation ID (see red-highlighted note above). Otherwise, repeat steps 4-6 for all licenses you wish to activate on this PC, so that all your XML activation request files can be transferred at one time.   Submit your manual activation requests   Transfer your XML activation requests to a computer with Internet access. From your Internet-connected computer, open a web browser and login to your FlexSim Account. Click the Licenses link in the header, then choose Manual XML in the Licenses submenu. Upload your XML files by dragging them onto the drop zone. Your uploaded XML requests will be processed. Upon completion, you will be prompted to download each XML response.   Process your manual activation responses   Transfer your downloaded XML activation responses to the offline computer you are licensing. In FlexSim, using the same licensing interface where you generated your request, click the Process Response button. Browse to an XML activation response file. FlexSim should give you an indication of successful processing of your activation, and your activation will be complete. Repeat to process the XML activation responses for any other licenses you are manually activating.   IMPORTANT NOTE   If this is the first time a license has been activated on this computer, an initial request/response communication will only serve to configure your local Trusted Storage.   This means that for a first ever license activation on a given computer, after this first request/response has been successfully processed on the offline computer, a 2nd request using the same license code will need to be generated/uploaded/processed/downloaded/processed to fully activate your license.   This is a one-time event per-computer. Subsequent license activations to the same system require only one request/response XML pair. If you have any questions or problems, please search our Community for possible solutions. There is a good chance someone else has already asked your question.   Still not finding what you're looking for? Licensed users can submit a support request and we'll check it out.
View full article
This model is a proof-of-concept example demonstrating the integration of FlexSim with Python's Pyomo package to solve the Knapsack Problem. The model simulates a loading process of a logistic company. The truck has a weight capacity of 200 kg. The scenario includes 15 products, each with a specific weight and value. The product details are as follows: The objective is to determine which products to load onto the truck to maximize the total value of goods while ensuring the total weight does not exceed 200 kg. The ProductCreation Process Flow creates the products in a Queue. The General Process Flow has a Custom Code that creates a couple of Maps to store the products weights and values. It sets the capacity variable from the Parameters Table. These three parameters can be passed to python. Then it evaluates KnapsackProblem label on the Process Flow, passing those parameters in. The label is configured to connect to the KnapsackProblem function defined in the KnapsackProblem.py module. This function formulates the Knapsack Problem with Pyomo, solves the program, and then returns the optimal collection of products to be load onto the truck. Since the Decision Variables are binary, once the products are resolved, the values are stored in a Global Table, where 1 means that the product was selected. A Combiner uses this table to set the Component List. A forklift load the products and once completed, the truck leaves. When it enters the Sink a message is displayed showing the total weight and value loaded. Model Parameters There are two parameters that can be changed in this model. One is the Truck Capacity, which is the constraint of this problem. The value ranges from 100 to 300. There are three Global Tables in this model that store a different set of Weights and Values for each products. The table selected for the problem can also be changed using the GUI. Potential additions to this model could use priority for the products or include multiple trucks or constraints such as volume. Requirements to run the model In order to run this model, you need python properly configured, including: Install one of these python versions: 3.9, 3.10, 3.11 Install pyomo and highspy packages: python -m pip install pyomo highspy Make sure the python directory is part of your PATH environment variable. Configure your Global Preferences (the Code tab) to use the associated python version. This model was built in FlexSim 24.0 Knapsack_Problem.zip Troubleshooting If you are getting this error: exception: Code Binding Error: could not bind to function Node: /Tools/ProcessFlow/ProcessFlow>labels/KnapsackProblem Binding string: /**external python: */ /**/"KnapsackProblem"/**/ /** \nfunction name:*/ /**/"KnapsackProblem"/**/ Windows Error Code : 126 Check this post
View full article
Using Mixamo Fuse, Mixamo, and (optionally) 3ds Max, you can create animated characters for use with FlexSim. For modifying the existing operators' animations, see Adding More People Animations From Mixamo Character Creation You can customize a character’s look using Mixamo Fuse: After creating the character, you can save your character as a .fuse file in case you want to edit it again later in Mixamo Fuse. Character Rigging From Mixamo Fuse, you can press the Animate button in the upper-right corner to upload the character to Mixamo’s website to apply animations. You will need to log in with a Mixamo account. You will be presented with the Mixamo Auto-Rigger. After a few moments, your character will appear in a view with a default animation applied. Choose whether to enable facial blendshapes and select the appropriate level of detail for the skeleton, such as 2 Chain Fingers, and then press Update Rig. The auto-rigger will reapply and the view will be updated with the newly rigged character. If the settings are good for your needs, press the Finish button. Character Animating Once the character is rigged, you can select it on the Mixamo website and press Find Animations to find animations to apply to the character. You can search for animations and add them to packs. For each animation, you can adjust various parameters to fit your character to that animation better. Exporting the Character and Animations Once you have applied and customized animations for your character, you can add them to the Cart and checkout in order to have them available for download. After checking out, you can select an animation or animation pack to download on the My Animations page. You can apply the same animation sets to different characters using the Change Character button after selecting the animation set. Press the Queue Download button to tell the Mixamo server to create the files for download. You want to use the FBX format so that we can edit it with 3ds Max. The pose can probably be T-Pose or Original because the Original is probably a T-Pose anyway. I use 30 Frames per Second for consistency and ease of timing animations. Keyframe Reduction didn’t seem to do anything in my tests, and you can do it yourself with more control in 3ds Max so I use “none.” If you exported multiple animations, the output will contain one fbx file that is the character shape and several other fbx files that contain only animation data for each animation. (Update) Important Note: Starting with FlexSim 2017 Update 2, the rest of the steps in this document are no longer necessary. FlexSim 17.2 added support for embedded textures, specular maps, and gloss maps that fix the material issues directly without modification in 3ds Max. FlexSim 17.2 also added support for assigning animations to a shape from multiple files, so you can import the mixamo output files directly without having to merge all the animations into a single file. The following steps can be used if you want to optimize or otherwise modify the shape files, but are no longer required. Preparing the Character using 3ds Max Import the character shape .fbx file into 3ds Max and save the file as a .max file. You will want to resave as a .max file at different points with different file names as you progress so that you can easily revert back to a previously known working point if something messes up. The FBX Import window will show you lots of options you can modify. The defaults seemed to work fine. I tried messing with the “Units” scale factor and file unit conversions, but I was unable to find any options that improved the scaling in FlexSim. Ultimately, I found it best to just use Automatic and sort out the units myself using FlexSim’s shape factors. Export the file as fbx and bring it into FlexSim to see how it looks. Again, the default options seem to work fine. In FlexSim, the size will probably be 100x too big (no matter what “unit conversion” options I seemed to set in the import/export options). Resize the character to be 100x smaller. Fixing the Materials in 3ds Max When you first bring in a Mixamo Fuse character into FlexSim, it will probably look shiny and dark. That can be fixed in 3ds Max. Open the Material Editor using the button Double-click each material in the list of Scene Materials on the left to add it to the middle view for editing. Press the “Lay Out All – Vertical” button to arrange the nodes nicely in the middle view. When you imported the .fbx file, 3ds Max should have automatically unpacked its textures into a directory called CharacterFileName.fbm. When you double-click on a texture node in the Material Editor view, you should be able to see and edit the path where it is referencing each texture in the Material Parameter Editor pane on the right. Removing the shininess Each material has Ambient, Diffuse and Specular colors, in addition to any textures that are mapped to various channels. The operator is shiny everywhere because each material’s Specular color is set to White and their specular maps are mostly black. Since FlexSim doesn’t currently read specular maps and gloss maps, the white specular color is being applied everywhere instead of the black color from the specular maps. To fix it, click each specular map and gloss map in the center view and delete them with the Delete key. Then double-click on each main material and set its specular color to black to turn off the shininess. Save the .max file with a new name, and re-export the .fbx file to test it in FlexSim. The shininess should be gone. Brightening the darkness FlexSim uses Assimp to read fbx files. Assimp’s fbx importer is setting a default Ambient color value of dark gray to the materials instead of leaving it off. This is why the character looks darker than he should. To fix it, we can simply specify an ambient color of white on each material. For each material, set the ambient color to white and check the Ambient Color box under Maps: Save the .max file with a new name, and re-export the .fbx file to test it in FlexSim. The darkness should be fixed. Setting local texture paths Based on the procedure above, the texture paths are likely to be absolute paths when you export the fbx file. You can fix that by saving the .max file, the .fbx file, and the textures all in the same directory. In Windows Explorer, copy all the useful textures from the CharacterName.fbm directory into the same directory where you have been exporting the .fbx file. Then also save your .max to that same directory. Once everything is in the same directory, you can reselect the texture file paths for each material so that they are pointing at these files instead of the other files. Then, when you export the fbx file, each texture’s path will be relative so you can copy all the necessary files onto any computer and use them correctly. After changing all the materials, export the fbx file again. You should be able to copy the fbx file and all its textures into a directory on a different machine and have them display properly. Save your .max file with all the updated materials. Making part of the object change color To make a material show the FlexSim color, append _fsclr to its name in 3ds Max: Configuring Animations With the character loaded, you can import the fbx files with just animation data, and it will automatically apply that data to the shape. The slider at the bottom controls the currently applied keyframe. The buttons in the bottom corner play the animation, pause, or step between keyframes. Animation data can be stored beyond the relevant range. You can open the Time Configuration dialog by pressing the button in the bottom corner. In that dialog, you can specify the speed of the playback and set a Start Time (keyframe number) and End Time for the animation you want to see in the viewport when you play. This dialog is only changing the playback options in the software; the actual data outside the specified range is still preserved. You may need to adjust these values as you import/modify/combine animations into one Timeline. Keyframes If you push the button on the top toolbar, it will open the Track View – Curve Editor. You can edit and modify Keyframes through this view. Click in the left pane and press Ctrl-A to select everything in the model. You should see keyframes appear if you have animation data loaded. Sometimes this window doesn’t refresh correctly and you can’t find keyframes. You can try closing it and reopening it, or pressing the and buttons to re-center the view on the keyframes in the configured time range. To edit the animations, you need to be able to see the keyframes in this view. You can drag the current frame by dragging the yellow bar around. You can zoom by scrolling the mouse wheel. Ctrl-mouse wheel will zoom the timeline (X-axis) without zooming the key values (Y-axis). You can select keyframes by dragging a rectangle around them. You can delete selected keyframes with the Delete key. You can move keyframes by dragging them. If you hold Ctrl while dragging them, then it will force the movement to be only along the X-axis and not along the Y-axis so that you don’t actually edit the keyframe’s values, just its time. You can duplicate keyframes by holding Shift and dragging them. Again, holding Ctrl will prevent the new keyframes’ values from shifting by holding the Y-axis still. You can scale keyframes by selecting them, putting the key keyframe indicator on the first keyframe in the selection, picking the menu option Edit > Transform Tools > Scale Keys Tool, and then clicking and dragging on one of the selected keyframes to scale all of the selected keyframes towards the yellow bar. This can be helpful to sync the timing of animations, such as walking empty vs. walking loaded. Preparing Animations for Merging When you load an animation into the file, the Track View – Curve Editor will show you the individual components that have keyframe animations. Different animations may affect different components and the interpolation of transformation information between keyframes may get messed up when you merge different animations that affect different components together into one timeline. To fix this, you can stamp a keyframe at the beginning and end of each animation that stores each component’s position at that point. You can also duplicate the first and the last keyframes to make it easier to specify perfectly-repeating animation clips in FlexSim later. Stamp a keyframe by moving the current frame (yellow line) to the keyframe you want. Then select all within the Track View – Curve Editor to select every component. Finally, press the Set Keys button ( ) at the bottom of the main 3ds Max window to store each component’s value as a keyframe. Duplicate keyframes by holding Shift and dragging them. Also holding Ctrl will prevent the new keyframes’ values from shifting by holding the Y-axis still. Merging Multiple Animations into One File To merge multiple animations into one file, you need the export each of the animations as an animation file (XML Animation File (*.xaf)). Then you can import each of these animations into a specific range of keyframes in the timeline. From the .max file without any animations loaded, import one of the fbx animation files. It will automatically apply it to the shape. Click in the Perspective view and press Ctrl-A to select everything. Then prepare the animation using the information above. Lastly, select the menu option Animation > Save Animation to save the animation as an XML Animation File (*.xaf). Reload the .max file without any animations and repeat this process for each animation you want to merge. Reload the .max file without any animations loaded. Click in the Perspective view and press Ctrl-A to select everything. Then select the menu option Animation > Load Animation to load an animation into the timeline. On the right side of the Load XML Animation File dialog, you can specify the keyframe number at which the animation should be inserted. Do not insert the animation at keyframe 0; make sure that keyframe 0 is the bind T-pose. This will be important later if you want to edit the mesh without breaking the skeletal rigging. You also need to be sure to specify Absolute and not Relative. Select the animation you want to import, specify the keyframe you want to insert at, and then press Load Motion to load the keyframes into the animation. Do this for each animation file you want to merge. Use the Track View – Curve Editor to determine the keyframe at which to insert each subsequent animation. Save your .max file with all the merged animations to a new file. Modifying the Mesh without Breaking the Rigging Sometimes you may want to modify the mesh after you have applied animations. I can’t guarantee that this always works perfectly, but there is a way to make some tweaks even after animations have been applied. Before trying to edit a skinned mesh, be sure to save your work so you can revert back to a clean state if something don’t work correctly. First, you need to be sure that the bind pose is frame 0 and that you are set to frame 0 on the timeline. Second, click on a mesh in the scene and click on the Modifiers tab. You will probably see an Editable Poly with a Skin modifier applied. If you click on the Skin modifier and expand the Advanced Parameters, you will see an Always Deform checkbox. If you clear the Always Deform box, you can then click on the Editable Poly and modify it. You then need to recheck the Always Deform box on the Skin modifier once you are done making edits. Ensure that your animations still work after making edits. In my tests with the operator shape above, when I cleared Always Deform, the mesh moved up slightly. This made the Tops mesh not line up correctly with the Body mesh. To fix that, I cleared and immediately checked Always Deform for each mesh (each mesh then moved up the same amount). Then I verified that the animations still worked and that the arms still lined up correctly with the shirt. Reducing Polygon Count 3ds Max has features for reducing the polygon count of an object. You can apply these modifiers without breaking the rigging by following certain steps. You can display the polygon count of your shape by clicking in the Perspective view and pressing the 7 key on the keyboard. As stated above, before modifying the mesh, clear Always Deform on the Skin modifier. To reduce the polygon count, you can use the ProOptimizer modifier. After clearing Always Deform, click on the Editable Poly and then select ProOptimizer from the Modifier List to add it to the stack between the Editable Poly and the Skin modifiers. In the Optimization Options, be sure to check Keep Textures. Then press the Calculate button. Then you can specify a Vertex % and it will start to remove vertices from your mesh. After applying the ProOptimizer modifier, the normals on your mesh might be messed up. You can recalculate the normals based on a crease angle using the Smooth modifier. Apply the Smooth modifier after the ProOptimizer and before the Skin modifier. Check the Auto Smooth box and specify a Threshold. You can use a value of 89 to get a very smooth surface, only applying a crease to angles that are greater than 89 degrees. After making these changes, be sure to recheck Always Deform on the Skin modifier, and test your animation to make sure the rigging is all still working properly.
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
FlexSim 2020 Update 2 Beta is available. (Updated 22 July 2020) To get the beta, log in to your account at www.flexsim.com, then go to the Downloads section, and click on More Versions. It will be at the top of the list. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Updated the run speed slider so you can customize the ratio of display units to real seconds. Moved object properties windows into the context sensitive Properties window (formerly known as Quick Properties). Added a new Quick Properties window that appears next to your cursor when double clicking on an object. Added a pop-out button to the Labels panel of the Properties window. Added a Dark theme for FlexSim's UI. Added Unit edit buttons to more edit fields. Updated the Quick Library to match the current state of collapsed and expanded panels in the main library. Removed the View Settings window and moved all its options into the Properties window. Improved performance of Properties window and various other UIs. Added Object Property tables. Added Object class properties and methods to the Variant class in FlexScript. This removes the need to use .as(Object) if you know the treenode pointed at by a Variant is an Object. Added Object.resetPosition property. Added capture groups to the string.replace() method. Enabled several SQL clauses - NOT, NOT IN, DELETE FROM, INSERT INTO, and LEFT JOIN/LEFT OUTER JOIN. Added ARRAY_VAL() sql function for accessing a value in an array. Added unit conversions to the convert() command - convert(4.5, "ft/min", MODEL_UNITS). Improved performance of loading media by making it multi-threaded. Added Color.fromPalette options to several Set Color popups. Added a pickoption for the Source's On Creation trigger for attaching items to an Object process flow. Disabled the beeping noise when pressing Enter in edit fields. Fixed the Create Object edit mode sometimes not creating objects and just exiting (like when clicking on the library when the User Manual was active). Fixed a draw issue with tables drawing bold text sometimes. Fixed a bug with window docking. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Changed updatehotlinks() to only repaint the view if it applies a node with a viewsyncupdate attribute of 1. The keywords VALUES an DELETE were added to the sql parser. This means that previous models that use the term VALUES, Values, values, DELETE, etc. will get an error because sql now sees it as a special keyword. If you get this error, just wrap your term with square brackets: [Values] to tell the parser to not interpret it as a sql keyword. Agent Added the Agent module to the Flexsim Installer. Enabled A* walls as static agents. Added a neighbors() function to the Agent API. Fixed social forces for agents not in model space. Fixed bugs with using A* bridges. AGV The join tool now joins in all cases, defaulting to a straight path if it can't solve for a curved path. Conveyor The join tool now joins in all cases, defaulting to a straight conveyor if it can't solve for a curved conveyor. Emulation Added Allen-Bradley connections. People Improved performance of state history tables. Fixed listening to travel events on a person created with the Create Person activity. Process Flow Added new Kinematics activities. Added new Warehousing activities. Added an Enabled checkbox to the Source activities so that you can turn them off. Consolidated Fixed Resource and Task Executer process flow types into a single "Object" type. Added a right-click menu option to the 3D view so a user can right-click on an object and add an Object process flow directly. Added an Object Flow field to the Create Object activity and added a pickoption for attaching items to an instanced flow. Changed double clicking on an activity to be more consistent with the 3D view and now opens the activity's properties window. This window now has a name edit field so you can still easily rename the activity. You can also slow double click to only open the old name edit field. Improved performance of activity properties windows.
View full article
Article space for Production Engineer Book including FlexSim Examples from Brasil Este material de apoio faz parte do Livro Administração de produção e operações, manufatura e serviços: uma abordagem estratégica, dos autores Henrique Correa e Carlos Correa, em sua 5º Edição. Para auxiliar o aprendizado, este livro conta com exemplos em vídeo e modelos de simulações de processos disponíveis em diversos capítulos. O acesso ao material é gratuito e pode ser acessado através dos links abaixo nas descrições de cada capítulo. Aqui você encontrará o conteúdo detalhado, referente aos arquivos dos modelos de simulação (*.fsm) e os links dos vídeos no YouTube. Dessa forma, o leitor poderá usufruir dos arquivos de simulação criados para facilitar e enriquecer o seu aprendizado. Capítulo 10 Projeto do Produto e Seleção de Processos (Bens e Serviços) Call Center download modelo clique para assistir o vídeo Restaurante download modelo clique para assistir o vídeo Clínica download modelo clique para assistir o vídeo Loja de conveniência download modelo clique para assistir o vídeo Segurança de um aeroporto download modelo clique para assistir o vídeo Terminal Rodoviário download modelo clique para assistir o vídeo Hospital clique para assistir o vídeo Estacionamento clique para assistir o vídeo Capítulo 13 Localização e Arranjo Físico de Unidades da Rede de Operações Layout Celular clique para assistir o vídeo Layout em Linha clique para assistir o vídeo Layout por Processos (em breve) Layout Posicional (em breve) Capítulo 14 Capacidade Produtiva e Filas em Unidades da Rede de Operações Teoria das Filas download modelo clique aqui para assistir o vídeo Capítulo 15 Teoria das Restrições em Redes de Operações TOC Princípios 1-9 download modelo princípio 1 download modelo princípio 2 download modelo princípio 3 download modelo princípios 4 e 5 download modelo princípio 6 download modelo princípio 7 download modelo princípio 8 download modelo princípio 9 clique para assistir o vídeo Sistema Drum-Buffer-Rope (Tambor-Pulmão-Corda) download modelo clique para assistir o vídeo Capítulo 17 Gestão de Estoques na Rede de Operações Simulação de Reposição Periódica / Contínua (em breve) Capítulo 19 Sequenciamento, Programação e Controle de Operações Sequenciamento de Produtos e Otimização download modelo clique para assistir o vídeo Job-Shop download modelo clique para assistir o vídeo Capítulo 20 Just in Time (JIT) e Operações Enxutas (Lean) Produção Puxada vs. Empurrada download modelo clique aqui para assistir o vídeo Cartão Kanban Assista o vídeo e veja na prática um exemplo de simulação do sistema kanban. download modelo clique aqui para assistir o vídeo Desperdícios do Sistema Toyota de Podução (Lean) download modelo clique aqui para assistir o vídeo Setup Assista o vídeo da simulação de um processo de troca de piso da quadra de uma arena multiuso, utilizada para partidas de hóquei e de basquete. clique aqui para assistir o vídeo Informações Adicionais Os modelos de simulações e os vídeos apresentados foram construídos com o Software FlexSim, plataforma digital, a qual possui uma versão gratuita, FlexSim Express, disponível para download através da URL https://www.flexsim.com/pt/ Vídeo passo a passo download e instalação do FlexSim Express Vídeo requisitos de sistema hardware para utilizar o FlexSim Express Contatos suporte@flexsimbrasil.com.br / @Rodrigo Lamas / @Michael Machado
View full article
Recommended System Requirements This article complements FlexSim's System Requirements. We'll go over each of the major components, discuss their importance to a FlexSim model, and make recommendations to help you decide on the right hardware for your situation. CPU Single Model Run A single run of a FlexSim model (ie not an experiment or optimization run) is single threaded, which means it runs on only 1 CPU core. Buying a processor with more cores won't speed up a single simulation run. To complete single model runs more quickly, use instead a processor with a faster single core clock speed (gigahertz, or cycles per second) or better efficiency (instructions per cycle). In short, for the fastest individual model runs, you want the fastest processor possible, regardless of the number of cores. Experimenter or Optimizer - Multiple Simultaneous Replications When you're doing multiple simultaneous model runs using the Experimenter or Optimizer, FlexSim takes advantage of multiple CPU cores to run simulation replications in parallel. By default, FlexSim spawns as many replications as you have cores; for example, a Quad core processor enables four single-threaded simulation runs to process simultaneously, one on each core, getting you results four times faster than by using a single core processor at the same speed/efficiency. If necessary, you can manually limit the number of concurrent replications by setting the Max Cores value from FlexSim's Main Menu under Statistics > Experimenter > Advanced tab > Max Cores input field. Each replication consumes some amount of system RAM, so if you run out of RAM before you run out of cores, it may be necessary to limit the number of cores used to run replications. Conclusion If you’re primarily doing single simulation runs, choose a faster processor speed regardless of the number of cores. If you’re primarily doing experiments, choose a processor with a high number of processing cores (and make sure your system has enough RAM to support them - see Memory below). If you’ll be doing both, choose a processor that strikes a good balance between core speed and core count. Memory Considerations Random Access Memory, or RAM, is a PC's fast "working" memory, where it stores the data and programs it is currently running (don't confuse this with your much slower hard drive, where data is stored "at rest"). Most consumer Windows computers top out at 32 or 64 GB of RAM, though Windows is capable of supporting much more when coupled with high-end hardware (see limits per OS here). Your computer is always doing many other things besides just running FlexSim. Your operating system itself has memory needs for all the processes it is constantly running. You probably have an antivirus solution, maybe a backup software, and often other utilities running invisibly in the background. Then there are all the applications you currently have open - your email, a web browser, music streaming, etc. All of these are consuming RAM. As you plan your FlexSim hardware, be aware that you should have enough RAM to run all these other applications, plus your FlexSim model, plus have a good amount of extra RAM as a buffer. FlexSim's Requirements Many FlexSim models will use less than 4 GB of RAM in a single model run, but it all depends on your simulation and data. Some large and complex models can and do go above 4 GB of RAM utilization (sometimes well above). If FlexSim's RAM utilization starts approaching a high percentage of your total available system RAM, your computer will turn sluggish or totally unresponsive as it runs out of memory and begins paging out to disk for its memory needs (which is orders of magnitude slower than RAM). A FlexSim system should have 8 GB of RAM as a minimum. For the best experience we recommend 32 GB of RAM or more. Many modern high-end consumer PCs meet this recommendation. See FlexSim's latest minimum and recommended system requirements here. Experiments and Optimizations Experiments and optimizations run several replications of your model simultaneously, so make sure you have enough total memory in your system so that each replication can hit its peak memory needs, while still leaving enough memory for the system and other running applications (OS, antivirus, other background processes, etc.). In addition, the experimenter saves statistics data for each replication by default. Each completed replication will send its statistics collectors' data to the main FlexSim thread, where it will ultimately be stored in the results database file on the hard drive. However, several stages of the transfer process require two copies of the data. In addition, all child processes can transfer data simultaneously. So, if you have a model that generates 100MB of statistics data, and you run an experiment with 8 CPUs, and all 8 CPUs finish a replication at roughly the same time, you'll need at least 1600MB (100 MB x 2 x 8) to transfer the data successfully, on top of all the other RAM utilization. Example Scenario I've developed a simulation model and now I'd like to run multiple replications using the Experimenter. Watching my simulation run normally, while monitoring FlexSim's memory usage with Windows Task Manager, I see that over the entire course of its run my simulation peaks at about 2.1 GB of RAM at its highest utilization. My computer system has 16 GB of RAM. When FlexSim is not running at all, the system uses about 20% of its resources for the operating system and other background processes. This leaves about 12.8 GB of RAM free. How many concurrent replications of FlexSim can my PC support? 12.8 GB / 2.1 GB per replication = 6.1 concurrent replications So, I might get by with allowing 6 concurrent replications of FlexSim, but I feel like 5 is a safer bet to give the system a bit of headroom, and because running the experimenter and collecting results data also requires some additional memory overhead. Since my computer has a quad-core processor and uses simultaneous multithreading (SMT) (which allows each core to run two FlexSim replications at once), FlexSim's default would be to run 8 concurrent replications. My calculations showed that 8 concurrent replications would be too many, and will probably bog down my PC, slowing or halting the entire process. I will limit the number of concurrent replications the experimenter will use by setting the Max Cores value to 5. This option is set from FlexSim's Main Menu under Statistics > Experimenter > Advanced tab > Max Cores input field. Your settings will differ from this example. Check your computer's amount of RAM, the peak memory needs of your simulation models, and your baseline RAM utilization when you're not running any simulations. Factor in a reasonable % as a buffer. Use these values to determine how many concurrent FlexSim replications your computer may support. When allowing FlexSim to use its default of running the max number of replications your CPU supports, please keep in mind that many multi-core CPUs actually run multiple threads simultaneously per core (simultaneous multithreading - SMT). To fully take advantage of all the simultaneous replications that your PC could run at once, be sure to get enough RAM for all the replications your CPU is capable of. For example, a 4-core CPU with support for SMT could run 8 simulation replications at once. Make sure you have the memory to do so! If not, be sure to use the Max Cores option to limit the number of concurrent replications. Conclusion A system meeting FlexSim's minimum RAM requirement will have enough memory for a single model run of most simulation models. If your simulations are large or complex, or if you intend on running experiments or using the optimizer, you should meet the higher recommended spec of 32 GB of RAM or more. Disk Space Requirements The FlexSim installer may be up to 1.2GB in size, depending on the FlexSim version. After installation, FlexSim's program files use up to 1.2GB of disk space. Your model files, CAD layouts, images, custom 3D shapes, import data, exported reports, and other simulation related assets that you provide will take disk space in addition to the software's installation footprint. Disk Speed Most FlexSim models will run from memory, so hard drive speed isn't really an issue. However, if you're reading/writing with files/databases while the model is running, disk speed could make a huge difference; a Solid-State Drive (SSD) is a must in that case. Alternatively, try to do data reading and writing before and after the simulation run, if possible. FlexSim recommends SSDs in general because they make every interaction with your computer feel faster and more responsive. You won't regret an upgrade from a regular, spinning hard drive to an SSD. Conclusion Consider upgrading your hard drive to an SSD if you will be reading or writing to files or databases during a model run, or to generally improve system responsiveness. Graphics Recommended Graphics The better/newer/bigger/faster the graphics processor, the better the performance. Integrated graphics, where a smaller GPU is packaged into the CPU, have gotten much better in recent years, but a discrete GPU remains the most powerful graphics solution. FlexSim works best on Nvidia GeForce RTX or GTX GPUs, but Nvidia Quadro and AMD Radeon are also good solutions. Most recent integrated graphics solutions meet FlexSim's minimum graphics requirements, but in general will not perform as well as discrete graphics. Graphics Driver Updates It is also important to note that you should keep your graphics drivers updated to the latest version. If your graphics hardware meets FlexSim's minimum requirements but you are experiencing graphical issues in FlexSim, a graphics driver update may solve the problem. Please check out this article for some common symptoms and solutions to graphics issues within FlexSim. Virtual Reality FlexSim supports Oculus Rift/Meta Quest 2, HTC Vive, and Windows mixed reality virtual reality platforms (see demo models). Be sure to meet FlexSim's higher recommended specifications if you plan to use VR. Conclusion While recent integrated graphics solutions meet FlexSim's minimum requirements, a discrete graphics solution is a better choice. For maximum performance, FlexSim recommends a recent NVIDIA GeForce RTX GPU.
View full article
En este video aprenderemos a usar el ambiente de FlexSim HC para construir desde cero un modelo de atención de pacientes. Aprenderas a: Importar un plano de AutoCAD Crear objetos 3D Construir la lógica del modelo usando Process Flow Obtener estadísticas Diseñar un experimento Para más videos tutoriales pueden suscribirse al canal de YouTube de FlexSim Andina y acceder a nuestra lista de reproducción de FlexTips HC.
View full article
This model is a proof-of-concept example for combining FlexSim's GIS features with the power of mixed integer programming in python. The model simulates a distribution network of 'factories' (red icons) and 'warehouses' (blue icons). The factories produce the product you are selling, and then distribute the product to various warehouses in the network. Every day, each warehouse generates a random demand for the product. Once demand from each warehouse is known, the 'demand dispatcher' must determine which factory should produce and ship how much of the product to each warehouse, fulfilling all warehouses' demands at minimum total cost. Each factory has a maximum daily capacity of production and a per-unit cost of production. In addition, shipping costs must be taken into account from each factory to each warehouse. Given these factors and constraints, the problem of optimal dispatching boils down to the well-known min cost flow problem in optimization. I've created a simple python script that uses cvxpy to solve this min cost flow problem as a mixed integer program. The MIP is not exactly the same as the standard min cost flow problem, since total factory capacity may be more than total warehouse demand, and I'm using integer instead of continuous variables. Nevertheless, it is sufficient to demonstrate the capability. The Warehouse process flow generates daily demand for each warehouse and pushes it to a shared Demand list. The DemandDispatcher then pulls demand from the list, and marshals capacity, demand, and cost data into parameters that can be passed to python. Then it evaluates getMinCostFlow label on the process flow, passing those parameters in. The label is configured to connect to the getMinCostFlow function defined in the MinCostFlow.py module. This function formulates the MIP with cvxpy, solves the program, and then returns the optimal shipping quantities for each factory-warehouse pair, returning control back to FlexSim. Once the shipping quantities have been resolved, the DemandDispatcher process flow creates and labels 'Trucks' that are sent to each warehouse. Note that this travel mechanism is purely for animation purposes, letting you visualize how much product is being sent from factories to warehouses each day. Potential additions to this model could use inventory management strategies, simulating randomized lead times, etc. I've added several dashboards that show the cumulative average breakout for each warehouse of which factories supply that warehouse, as well as the cumulative average breakout for each factory of which warehouses that factory supplies. I've also added costing measures for the warehouses and factories. Some interesting insights that can be gleaned from this model are how shipping vs. production costs affect the balance of which factories will ship to which warehouses. For example, if your shipping costs are low relative to your production costs, then the min cost flow algorithm will push production to factories that are the lowest cost to produce, even if they are far away from the destination warehouse. High production cost factories are consequently relegated to little if any production. However, if shipping costs are high, the algorithm will localize production to the factories nearest their respective warehouses. In order to run this model, you need python properly configured, including: Install one of these python versions: 3.7, 3.8, 3.9, 3.10 Install the cvxpy and cvxopt packages: python -m pip install cvxpy cvxopt Make sure the python directory is part of your PATH environment variable Configure your Global Preferences (the Code tab) to use the associated python version. This model was built in FlexSim 22.1. MinCostFlow.zip
View full article
FlexSim requires modern graphics support to run well. Most modern computers from the last few years have no problem running most FlexSim models, but sometimes there are graphics configuration issues that keep FlexSim from working properly. Common symptoms The model 3D view is black or blank. You should see the model view default to a 3D grid. The 3D grid appears, but does not respond to user interaction. You should be able to click and drag the grid to pan (left-click-drag) and rotate (right-click-drag) the view. Click the grid to select it then scroll your mouse wheel - this should zoom the 3D view in and out. Unable to drag an object onto the grid. You should be able to click and drag an object from the Library and drop it onto the 3D grid. It should appear at the location of your mouse. Unable to interact with objects in the 3D view. You should be able to double-click an object to bring up its properties window, or single click to highlight, or click and drag to move it about the 3D grid. Conveyors or other objects are not drawing to the view. Unable to create connections between objects. User interface elements and other GUIs are not displaying correctly. Solutions If you are experiencing any of these issues, it is most likely a graphics compatibility issue. Here are common steps you can take to solve the problem: Open FlexSim's default workspace to reset any potentially corrupted view windows. To do so, from FlexSim's main menu, go to View > Open Default Workspace. Any open windows will be closed and the default 3D view and tool panels will be opened. This could clear up potential issues with 3D or Process Flow views, tools panels, or properties windows. Check that your computer meets FlexSim's minimum system requirements. Review FlexSim's minimum and recommended system requirements. Check this article for an in-depth explanation of hardware considerations. Update your graphics driver to the latest version. This almost always solves graphics issues and is the preferred solution whenever possible. It enables the maximum performance from your graphics hardware and eliminates bugs and glitches in previous drivers. Check out HowToGeek.com's article for a primer on updating graphics drivers. Always go directly to your graphics manufacturers website ( Intel, AMD, or Nvidia) to get the latest drivers for your graphics hardware. Do not trust that Windows Update always gives the latest graphics drivers - in fact it rarely does. Not every user has the proper administrator privileges on their computer necessary to update drivers, so you may need to contact someone in your IT department for help. Try a different graphics driver. If the graphics aren't working correctly and you downloaded the latest driver for your hardware directly from Intel, AMD, or Nvidia, try instead using the latest driver from the computer manufacturer such as HP/Dell/Lenovo/Asus/Acer, etc. If you are already using the latest driver from your computer manufacturer, try using the latest driver from the graphics card manufacturer: Intel, AMD, or Nvidia. 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 certain linked libraries used by FlexSim 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 required by FlexSim. Try turning off Shadows by going to File > Global Preferences > Graphics tab, and uncheck the option Use Shadows. Click the Apply button, then close. Restart FlexSim to see how it responds with this changed setting. Try switching to a different OpenGL Context by going to File > Global Preferences > Graphics tab, and make a new selection for OpenGL Context. Hit Apply, then close. Restart FlexSim and see how it responds. Start with Recommended, then try Core Profile (3.3). If Core Profile (3.3) still doesn't work, try Generic. The Generic context is the last resort option, and is equivalent to the Compatibility mode option in versions of FlexSim previous to 2017. Compatibility mode/Generic Context is not intended for long term use. Revert to this mode only if you must use a computer that doesn't meet FlexSim's minimum system requirements. Test with other 3D applications. Your computer hardware or operating system may have an underlying problem that is causing your graphics issue. You may be able to test this by starting different 3D-accelerated applications or games on your computer. Do other applications besides FlexSim have graphics issues? If so, and you have already tried upgrading your graphics drivers as described above, you may need to contact your IT department or your computer's manufacturer for support. You may have hardware or other issues that prevent your 3D graphics from working properly. Contact FlexSim to let us know that your computer meets FlexSim's minimum system requirements you have installed the latest drivers for your graphics card other 3D-accelerated applications on your computer work just fine but your FlexSim installation still has graphics issues. If this is the case, there may be a software problem in FlexSim that should be addressed. When contacting us about your graphics problem, please include the following: Describe your symptoms in detail. Screenshots are very helpful. For each of the troubleshooting suggestions above, what did you try? What was the result? Please include a screenshot of your FlexSim installation's About FlexSim popup (from FlexSim's main menu > Help > About FlexSim...). This gives us info about your FlexSim version, your graphics hardware, and your graphics driver: A screenshot of your Windows Device Manager, with Display Adapters expanded, is also helpful for our troubleshooting. This gives us additional information about your graphics hardware: Special Cases Nvidia Quadro cards have many different driver versions. We have had good success using the ODE driver (‘Optimal Drivers for Enterprise’). Another option that sometimes improves Quadro compatibility with FlexSim is to open your Nvidia Control Panel and change 3D settings to "3D App - Game Development": Your laptop may have both Intel Integrated graphics and Nvidia/AMD accelerated graphics, and the ability to automatically switch between them depending on the application's 3D requirements. This is a great feature and helps to maximize your battery life. FlexSim should be automatically recognized as a program that should use discrete graphics acceleration, but in case it is not, you may need to set it manually within the Nvidia or AMD Control Panel. Here is the Nvidia Control panel. You can specify an acceleration profile for FlexSim under 3D Settings, Manage 3D settings, Program Settings tab: Click 'Add' and browse to the flexsim.exe executable (default install path is C:\Program Files\FlexSim <version>\program\flexsim.exe). You then have the ability to tweak any and all settings for your FlexSim graphics. The defaults are usually fine, but feel free to play around to tweak things to your liking.
View full article
This model showcases the latest enhancements to the mass flow conveyor object, found in FlexSim 2023 Update 1. See several new features in action, including the Randomized fill order and Width Rules for conveyors. Mass-Flow-Bottling-Demo_23-1.fsm
View full article
FlexSim 2024 Update 2 is now available for download. You can view the Release Notes in the online user manual. FlexSim 24.2.0 Release Notes For more in-depth discussion of the new features, check out the official software release page: FlexSim 2024 Update 2: Curve Fitter, Process Flow Breakpoints, and more If you have bug reports or other feedback on the software, please create a new idea in the Bug Report space or Development space.
View full article
FlexSim 2017 Update 2 Beta is available. (updated 22 August 2017) To get the beta, log in to your account at www.flexsim.com, then go to the Downloads section, and click on More Versions. It will be at the top of the list. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Reorganized the User Manual and updated its formatting. Added more topics, tutorials, and reference pages to the User Manual. Added new Statistics Collector and Calculated Table tools. Added new generic charts for plotting statistics gathered with Statistics Collectors and Calculated Tables. Updated the pin to dashboard buttons to create and use Statistics Collectors instead of the legacy charts. Added a Variant constructor and assignment operator to Vec3 and Color classes. Added functionality for copying dashboard charts as images, and pasting images into dashboards. Added new interfaces to FlexScript, such as Math, Group, and DateTime. Added toNum() and fromNum() methods to the string class. Added a setState() method to the Object class that will work correctly with listening to state changes. Improved handling of read-only model files. Keyboard shortcuts (Ctrl+PageUp and Ctrl+PageDown) and additional enhancements for switching tabs. Added the ability to have null values in a bundle. Added the ability to make kinematics exclude incline rotation when managing rotations. Improved the parenthesis and quote autocomplete functionality. Added autocomplete for curly and square brackets. Added a new print() command to write to the output console more easily. Added support for instanced meshes. Updated the animation system so a single shape can have multiple animators from different shape files. Changed the assimp 3D importer so that it can extract and load embedded textures. Added support for using specular maps and gloss maps. Added support for FlexScript dot syntax in SQL queries. Added the capability to specify a warmup time in the interactive model run. Added options for following objects with the view. Improved MTBF/MTTR state listening to use less events and be more precise. Updated the Network Navigator to work for an object that is inside a container that is connected to the network. Fixed a bug with global variable highlighting and autocomplete. Fixed an issue with destroying a TE on a network when it blocks space on the network. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Fixed a bug with min() and max() when using distribution functions. Previously, getting the number of columns in a Global Table using Table.numCols or gettablecols() returned 0 when the number of rows was 0. Column headers and data types are preserved even when there is no row data. These commands now return the number of columns. Changed operators to not change their incline rotation when traveling on inclines. This will change location calculations if you have advanced logic based on internal operator locations. NodeListArrays like Object.outObjects can no longer be implicitly cast to an Array. Use the toArray() method instead. Fixed a bug with animations drawing their first frame instead of their last frame at times beyond the endtime. Added a special rule for ambient color {0, 0, 0} to not use the ambient color. This change will make shapes with ambient {0,0,0} to appear brighter. Change the ambient color to a dark gray, such as {1,1,1} if you want them to remain dark. Fixed a bug in the shader that dulled specular highlights with the diffuse texture. This may change how shapes look; they may appear shinier now. Added the IS NULL and IS NOT NULL clauses to SQL. Math and comparison operators on null values now return NULL. FlexSim's SQL execution engine is now more in line with the SQL ANSI standard regarding null values. Specifically, if you do comparisons or math operations on elements that have null values, this will return null values. This is different than in FlexScript, where a null value acts like 0 in math operations. Also, null values will be ignored in aggregation functions like AVG(). An option to use legacy SQL nulls was added to Model Settings to preserve backwards compatibility. Upgraded models will automatically enable this option, but new models will default to using the SQL ANSI standard for nulls. Added support for more SQL query operators, such as the case-when-then-else-end operator and window functions. This adds many new keywords to SQL, meaning that if you used these as column names in older queries, they will create syntax errors in the query parser in this version. To fix this, put square brackets [] around the column name. Changed accessing dynamic label properties to use evaluate() instead of value. For example, consider the following code sample: Variant value = current.MyLabel; In 17.1 and previous, this code was the same as: Variant value = current.labels["MyLabel"].value; In 17.2 we changed it so that this code is now the same as: Variant value = current.labels["MyLabel"].evaluate(); The difference is in how FlexScript-toggled node values are retrieved. In 17.1 and previous, current.MyLabel would have just given the text that is the FlexScript code. In 17.2, retrieving current.MyLabel will actually evaluate the FlexScript as code. This is consistent with how table values are accessed. If you have old code that explicitly tried to get the code text with current.MyLabel, you will need to update that code in 17.2 to use current.labels["MyLabel"].value. Process Flow Added a Material Consumption and Replenishment template. Added functionality for pasting images into Process Flow views. Conveyor Added a Gap-Optimizing Merge Controller Process Flow template. Added instanced rendering to improve Render Mode performance. Changed Render Mode to be enabled by default. Added new visual options for conveyors. Improved run speed performance of the Conveyor Module. AGV Added unload-to-empty capability to the AGV Process Flow template. AStar Added a bridge element to the AStar network. Added functionality for collision avoidance. Improved heat maps for analyzing AStar traffic. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Changed the path finding algorithm for the AStar navigator. When you tell an AStar traveler to travel to an object, now it will behave more like the default navigator. It will calculate a "threshold radius" around the object, based on the object's size. Then it will only travel to the edge of that radius. This makes it work better especially for loading/unloading to/from rack objects. The travel operation won't commit as much to traveling to the center of the object,because that can be left to the load/unload operation, which determines exactly where in the rack to pick/place the item. However, this change does affect how older models work because it changes the routes that travelers take.
View full article
FlexSim 2019 Update 1 Beta is available. (Updated 11 April 2019) IMPORTANT NOTE: The 15-Mar beta installer has a bug that causes the current installer to hang during the Cleaning Up stage when upgrading from the 15-Mar beta to a newer beta version. We have resolved the issue for future installers, but to avoid the error now, uninstall the 15-Mar beta using Add/Remove Programs before installing the new version. To get the beta, log in to your account at www.flexsim.com, then go to the Downloads section, and click on More Versions. It will be at the top of the list. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Added a new graphical interface to the Calculated Table for building queries. Updated the UI for editing rack dimensions. Added more options for customizing people visuals. Moved operator shape options from the Operator tab to Quick Properties. Improved edit modes by using right-click to cancel the current action instead of immediately exiting the mode. Added global preferences for process flow and dashboard library options. Added the FlexScript API reference to the user manual and made it accessible outside of FlexSim. Added toolbar support for adding multiple model background drawings. Adjusted how the floor Z and grid Z settings work to improve multi-floor modeling. Updated the table view to show more helpful information for certain data types. Added support for pointer data in bundles. Added a pointer type to tracked variables. Added support for the NULLIF SQL keyword. Added support for linking combo boxes to nodes with pointer data. Improved the gantt chart. Updated how tree files are saved to improve saving certain datatypes. Updated pulling from lists to throw an exception when passing a bad query. Fixed a bug with the normal map lighting calculation. Fixed an issue with the picking focus when using drawsurrogate within a drawsurrogate object. Fixed exceptions on an array table that doesn't have column header information. Fixed an issue related to moving items that had not been released. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Updated the internal structure of the Rack object's variables. Removed the rackgetcontenttable() command. Removed support for running the simulation from a loaded state file. Process Flow Added an option to the container to center its title when the contents are hidden. Added a limit to the number of activity panels displayed in quick properties. Added a Milestone activity. People Added a Healthcare environment option. Added an Elevator Bank object. Added a Prop object and more options for object visuals. Added tables that automatically collect statistics for people models. Added people chart templates. Added a People Settings object to the toolbox for people models. Improved the names of people created with the Create Person activity. AGV Updated the distancetotravel() calculation to work with moving AGVs. A* Added support for multiple grids. Adjusted how conditions are defined to improve performance.
View full article
FlexSim 2025 Update 1 Beta is now available. FlexSim 25.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 create a new post in the Bug Report space or Development space.
View full article
The instructions below are for Internet-connected license servers.   If your server cannot connect to the Internet or to FlexSim's main license server, try our offline/Manual XML license return instructions.   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.   Find your fulfillment ID   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.     Copy the Fulfillment ID for the Activation ID you are upgrading by highlighting the Fulfillment ID and pressing Ctrl+C.     Attempt online return   When your license server returns a license over the the Internet, flexsimserveractutil.exe will communicate with the following FlexSim servers via HTTP (port 80) and HTTPS (port 443):   www.flexsim.com sw.flexsim.com sw1.flexsim.com license.flexsim.com   In the FlexSim ServerActUtil program, select Connect > Return.     Paste the Fulfillment ID into the field using Ctrl+V, and press the Return button.     After a few seconds and several status messages, you should receive an indication of success.     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
Requirements FlexSim 25.0 or later (found in the downloads page) NVIDIA's Omniverse USD Composer Background Historically, users have used USD Stages in FlexSim to create a live connection with an Omniverse application to be able to simulate animations in Omniverse. However, this relies on a live connection between FlexSim and Omniverse. Sometimes this type of connection is sub-optimal for a user's situation. This article will explain a workflow for writing animation data to a USD file to play in an Omniverse application independent from FlexSim. Disclaimer All the data we record during this example is meant to help us write meaningful data into a .usd file so we can generate an animation in USD Composer. When I say "animation", I mean positional and rotational data along with showing/hiding flowitems. If you want to see Operator Skeletal Animations, I'll post a similar article with a few tweaks later to showcase how to do that using USD Composer's Sequencer, which uses Tracks and Asset Clips to handle small-scale skeletal animations. Example Model I've built a sample model demonstrating the changes to the USD API and how to use them. This example model is just one way to use the API -- there are other ways that users are free to explore. example_model.zip Explaining the Model When you open the model, you'll see a few different windowpanes. In the top-right corner, you'll see a Global Table. If you reset the model, you'll see column headings appear. Each column is a different piece of data we'll be writing to the USD Stage. Each row is a different entry of data to write. In the center views, you'll have a 3D view on the left side and a Process Flow (PF) on the right. At the bottom, there's a script window with a few lines of code. Those lines of code are User Commands I defined to summarize the functionality they encapsulate. The 3D View In the 3D view, you should see some queues, processors, operators, and conveyors. This is a simple workflow where items come into the queues, operators move them into the processors for processing, and then the operators send them down the conveyor lines. With this model, we'll demonstrate (1) operator movement and (2) flowitem movement on conveyors. Setting Up the USD Stage There should be a "USD Stage1" present in the model. If you click on the USD Stage, its properties will appear on the right-side of the screen. In it, you'll see a blank edit field. This is where you put the path to the USD file you want to work on have appear. If you want to save a fresh one, while the edit field is blank, click the "Save" icon next to it. Once you select where you want to place the file, name it, and close the file explorer popup, the edit field should populate with the full path to the .usd file. For more info, you can check out the docs page on the USD Stage object. Viewing the Model in USD Composer Once you've saved your USD Stage, you can open the .usd file in any software that can view .usd files. For this demonstration, we'll be using NVIDIA's Omniverse application which as a USD Composer module. The Process Flow Open up the Process Flow tab to view the simple setup. I'll walk through each part of the PF to give you an idea of how it works. Operator Movement This block of PF is in charge of recording information about Operator positions and rotations. It records information whenever an Operator starts and ends a task. You can expound on this concept and record information when specific triggers or events happen, but for this example I kept it simple and record when any task happens. User Command: RecordInfoToTable Within the "Record Info" Activity, it calls a User Command to record information to the table. This function simply takes a token as the first parameter. This is what the code looks like: Token token = param(1); // Setup row for this iteration Table animInfo = Table("AnimationInfo"); animInfo.addRow(); int curRow = animInfo.numRows; token.labels.assert("Row", 1).value = curRow; animInfo[curRow]["Object"] = token.operator; animInfo[curRow]["AnimTime"] = Model.time; animInfo[curRow]["TaskType"] = token.taskType; // Record positional and rotational data Object operator = token.operator.as(Object); animInfo[curRow]["PosX"] = operator.location.x; animInfo[curRow]["PosY"] = operator.location.y; animInfo[curRow]["PosZ"] = operator.location.z; double Z = Math.fmod(operator.rotation.z, 360); if (Z < 0) Z += 360; animInfo[curRow]["RotX"] = operator.rotation.x; animInfo[curRow]["RotY"] = operator.rotation.y; animInfo[curRow]["RotZ"] = Z; To summarize: Start by assigning the value of the token (parameter 1) to the local variable "token" We get a reference to the Global Table (AnimationInfo) and add a row for the data we're about to write Record (1) which operator this data is for, (2) what time this is happening, (3) and the type of task they're performing. The task type isn't as important - it's for finer details and debugging if necessary. Then we record the positional data of the operator. We previously saved the "operator" label onto the token, so we can use that and "cast" it to be an Object. We do this because the Object class has a "location" property which holds the x, y, z coordinates of the object. Lastly, we do the same thing with "rotation", except we need to bound the rotation to be a positive number between 0 and 360. To do this, we call Math.fmod() to get the reminder after dividing by 360. If the value is negative, we add 360 to get a positive value. Running the Model If you reset and run the model to the stop time at 200, you'll see the Global Table populate with data. There should be valid data for all the columns except the last 3. The "BoxNum", "EntryConveyor", and "Show" columns are for recording flowitem data. We'll discuss that later. Once you've got data in the table, we can run the User Commands in the script window at the bottom of the screen. They should be: ClearTimestampedData(); return WriteToUsd(); The first one "ClearTimestampedData()" is used to loop through the operators and clear all their time-sampled data. We do this so no old data is used if you change things in the FlexSim model and export new data. The second one "WriteToUsd()" is what reads the Global Table line by line, defines and finds prims, writes time-sampled data to them, and saves the information to the .usd file. View the Animation in USD Composer After running these scripts, you should get a prompt in USD Composer to "Fetch Changes". Fetch the changes. Then, open the Timeline feature (Window > Animation > Timeline). This opens an animation timeline at the bottom of the screen. You can save predefined start and end times for the whole stage using the Flexscript API if you choose. Otherwise, you can change the settings manually in USD Composer. (I've color-coded the image below to help explain the tool.) On the far-left (green circle) is the starting frame of the animation while the far-right (red circle) is the ending frame. The inner numbers allow you to set specific sections of the animation to play. If not set, it will play the whole animation. The top-right value and blue "scrubber" (blue circle and arrow) denote the current frame. When you hit your space-bar (or click the "Play" button), that scrubber should move. The value next to FPS (yellow circle) represents the "Frames per Second" the animation runs at. If you want it to play faster, then you can set it to a higher FPS. Note that this example model is built assuming 24 FPS. There is a User Command "TimeToFPS" that simply multiples the given Model time by a desired FPS, defaulting to 24 FPS. If you want to change that rate, you can set it in the code. Now that we've got the animation timeline setup, hit play and watch the animation. You may need to adjust the animation range to be 850 to 4800 so you can see the movements. Like I mentioned in the Disclaimer, if you want to see skeletal animations in the Operator, I'll have another article explaining how to add that functionality. Add Flowitem Movement on the Conveyor Let's go back to FlexSim and check out the Process Flow again. I have two other containers labeled "Box Movement: Time-based" and "Box Movement: DPs". These flows represent two different ways to record this data: either based on a time interval or based on Decision Point positions. The time-based way can be more accurate, but it adds much more time-sample data than the DP version. Choose one of the versions to test out, open the properties of their Source, and then Enable it. If you reset and run the model, you'll start seeing entries for Flowitems. They'll utilize the last 3 columns of the Global Table to keep track of (1) the Box# they are, (2) the Conveyor they entered on, and (3) whether or not to "show" their prim. Click here to learn more about prim visibility. Run the scripts to export and save the model. Then, fetch and view the changes in USD Composer. Conclusion We've covered how to use some of the new features of the USD API in FlexSim 25.0 to create stand-alone animations in .usd files. We used FlexSim to record and export data to .usd files to then display in USD Composer. You can now play a standalone animation in USD Composer without a live connection to FlexSim.
View full article
Top Contributors