FlexSim Knowledge Base
Announcements, articles, and guides to help you take your simulations to the next level.
Sort by:
Introduction to lmtools   This article is a sort of table of contents to the various articles that will take you from start to finish in installing, licensing, configuring, and running your FlexSim license server using the lmtools license manager.   background info   Server-based vs Standalone licensing - Learn the differences between these two license models, and when you might choose one over the other. License managers - lmadmin vs lmtools - FlexSim supports these two FlexNet license managers. Learn the differences, and why FlexSim recommends lmtools.   Let's get started   When installing a new license server, start here at the top and work your way down the list of articles linked below. By the end you should be in good shape to properly host and serve your FlexSim licenses.   Each link should open in its own browser tab, so once you complete a sub-task just close that tab. Then back here in this main tab click the link to the next step.   The list of links below might seem intimidating, but conceptually it's just 4 main things we're about to work through:   Preparation and Prerequisites Activate licenses to your license server Configure the licensing service Configure client PCs   If you run into any problems, you can also find additional helpful resources linked at the end of this article:   Troubleshooting Related links     1) Preparation and Prerequisites   System Requirements - almost any Windows computer could act as your license server. Click inside for the details. Download files - download the required lmtools files and extract them to an appropriate folder on your license server. FlexNet Licensing Service 64 - FlexSim is licensed using Revenera's industry-standard FlexNet licensing platform. This article prepares your license server with the background service necessary for hosting your FlexSim licenses.   2) Activate licenses to your license server   Choose the right steps below to license your server, depending on whether or not your license server can communicate over the internet directly with FlexSim's main license server.   • Online, Internet-enabled systems   License Server - Activation - Online - Activate your FlexSim licenses to your license server directly over the Internet. Should be easy-peasy. • Secure / Offline / Air-gapped systems   If your license server will not connect to the Internet (or if for any reason it cannot communicate with FlexSim's license servers) there are a few extra steps to get up and running. You've got this!   Configure Trusted Storage - Your new license server has a secure storage area for holding license info, but first it must authenticate with FlexSim's main license server. License Server - Activation - XML / Offline - the manual steps to activate your FlexSim licenses onto your license server.   3) Configure the licensing service   Configure your license service - use FlexNet's lmtools license manager to create and configure the service that will serve up your FlexSim seats. Add Windows Firewall exceptions - your licensing service needs to communicate with other PCs on the network. This will get you started.   4) Configure client PCs   With your license server installed and configured, it's finally time for your license server to fulfill its destiny and serve licenses to your client PCs.   Make sure you know the IP address or fully qualified domain name for your license server, as well as the license service port number (see #1 under Check the service status). You'll use your server's address/name and service port when configuring the client PCs.   FlexSim Version Numbering - your FlexSim license is for a particular version of FlexSim. If your software maintenance is not current, you may need to use an older version of the software. In this article you'll learn how licensing works for a given version number and where to download an appropriate version of FlexSim that will work with your license. With an appropriate version of FlexSim installed on the client PCs, you're ready to configure them to communicate with your license server. There are two ways a client PC can be configured. Choose the method below that most closely matches the main use case for your client PC:  Single-user client PCs - this method configures settings that are saved on a per-user basis. Multi-user client PCs - usually appropriate for a university computer lab or other shared-PC situation, where the configuration should be computer-based. Verify client PC licensing - Not sure if your client PC is getting licensed properly? Dive in to find out how to tell your client PC is successfully getting a license from your new license server   Troubleshooting   Isn't there a law in the universe that if something can go wrong, it will? If you're stuck in a licensing black hole, these tips might be just the thing to help you get moving.   Client/server connectivity - if the client PC and the license server can't communicate, the client PC won't be able to get a license. Troubleshooting tips - when you're pretty certain that connectivity isn't an issue, but your client PC still isn't getting a license, check here for some ideas.   Related Links   FlexSim's license file - your new licensing service uses a license file to specify port numbers. Get more background on license files and ports here.  
View full article
If you have colleagues who should also have visibility to your license codes, you can "share" your licenses with their account. Licenses should only be shared in accordance with FlexSim's end user license agreement. When you share your licenses with another FlexSim Account, they are able to view all of your activation IDs in full, as well as the activation histories of those licenses. To share your licenses with another FlexSim Account, do the following: Log in to your FlexSim Account at https://flexs.im/account. In the navigation header, click the Licenses link, then choose Sharing from the submenu: Follow the instructions to add one or more FlexSim Accounts to share your licenses with. The FlexSim Accounts must already exist. Press the Add button to submit the accounts. When you submit, if you are navigated away from the Share page, simply revisit the Sharing link as described in step 2 above. You should see the results of your share attempt. You will also see a list of the accounts you're sharing with, as well as any accounts that are sharing with you: Your licenses will now be listed in your colleague's FlexSim Account. They will see your licenses listed on their Licenses page the next time they log in. If they were currently logged in to their account while you shared your licenses, they should log out, then log back it to note the change.
View full article
UPDATE (January 22, 2021): FloWorks 20.0.5 is now available. Except for critical bug fixes, this is likely to be the final bug fix release for FloWorks 2020. Please consider upgrading to FlexSim & FloWorks 2021. UPDATE (December 23, 2020): FloWorks 20.0.4 is now available. UPDATE (June 15, 2020): FloWorks 20.1.2 is now available. UPDATE (February 4, 2020): FloWorks 20.0.1 is now available. FloWorks 20.0.0 is now available (16 December 2019). This version of FloWorks is intended for use with FlexSim 2020. If you are using FloWorks with FlexSim 2019 LTS, please use FloWorks version 19.0.8. If you are using FlexSim 2019 Update 2, please use FloWorks version 19.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 20.1.3 (20 August 2020) All bug fixes included in FloWorks 20.0.2 below. FloWorks 20.1.2 (15 June 2020) Bug fix: Fixed exception in release of Flow To Item. Bug fix: Removed internal output to console. Bug fix: Removed redundant license check in old solver. FloWorks 20.1.1 (23 April 2020) Bug fix: Update script for FloWorks Custom Action activities. Bug fix / improvement: Library grid updated. FloWorks 20.1.0 (17 April 2020) Release for FlexSim 2020 Update 1. FloWorks 20.0.5 Bug fix: All products shown as black in some cases where product color table was broken. Bug fix: Items would sometimes not exit from previously blocked Item To Flow. Bug fix: Network solver gave incorrect result in some models using output ratios. FloWorks 20.0.4 Bug fix: Flow conveyor sometimes lags because of unnecessarily many content blocks. Bug fix: Removed redundant license check in model limit panel. Backwards Compatibility Note: The following change may change the way updated models behave. Bug fix: Several issues in the network flow calculation resolved. Bug fix: Flow pipe passes name instead of product ID in first On Product Out Change after reset. FloWorks 20.0.3 (02 September 2020) Bug fix: Input / output triggers were sometimes scheduled at infinity. FloWorks 20.0.2 (20 August 2020) Bug fix: Set content activity uses FlowTank in code header. Added "Max. content" option to picklist. Bug fix: Process Flow activity did not correctly set relative output trigger amount. Bug fix: Flow item tank reset content at end of warmup. Bug fix: Adding Process Flow activity created module dependency. Bug fix: Documentation for flow processor updated. Bug fix: Update script for FloWorks Custom Action activities. Bug fix / improvement: Library grid updated. Bug fix: Fixed exception in release of Flow To Item. Bug fix: Removed internal output to console. Bug fix: Removed redundant license check in old solver. FloWorks 20.0.1 (04 February 2020) Bug fix: Fixed incorrect berth configurations. Bug fix: Removed popup during startup. Bug fix: MODE_RESTART_FALLING was sometimes incorrectly #define d the same as MODE_RESTART_RISING . Bug fix: Several bug fixes and improved stability for the new (beta) solver. Documentation: updated Tank trigger levels description. FloWorks 20.0.0 (13 December 2019) Feature: Added Process Flow activities for FloWorks. Feature: Added Process Flow templates for Basic Berth and Tank Pool. User request: Added option not to checkout FloWorks license. Bug fix: Removed inconsistent behavior after (de)activating license. Bug fix: Tank level trigger could cause event list to become unsorted. Bug fix: Max. Object Depth setting in FloWorks charts was ignored.
View full article
FlexSim 2020 Update 2 is available. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Updated the 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. Removed help manual from the installer and linked help to docs.flexsim.com. Created a separate installer for a local help manual. 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. Updated the default web server 3D view to stream using WebGL data instead of video. 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
FlexSim 2020 is available. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Changed models to automatically open the environment in which they were saved. Added boy and girl shapes to people visuals. Improved keyboard interactions within table views. Improved tabbing between fields in certain windows. Updated the 3D names and stats text rendering to support more fonts and Unicode. Improved the 3D view's lighting capabilities by adding Light objects that can be arranged in the model. Improved lighting in RTX Mode, including support for soft shadows and a denoiser. Adjusted the Rack Dimensions tab to be able to specify slot padding. Added an optional parameter to TaskSequence.create() for waiting until TaskSequence.finish(). Added an OnValuePulled event to the List. Added methods for creating a DateTime using a string or component parts. Added support for in-place addition and subtraction of DateTimes. Fixed bugs with DateTime methods when using certain years or ranges of time. Improved the convert() command's capabilities with converting dates and times. Improved the exporting of null bundle values to Excel. Added an excelcreateworkbook() command. Added statistics collectors and calculated tables to the Excel Export. Added an option for creating sheets using the Excel Export. Fixed rotation issues with pasting certain objects. Added a Vec3.projectRotation() method. Added a Vec2 FlexScript class. Changed the License Activation window to be responsive during licensing operations. Added an index type to statistics collector columns for improving performance. Added a categorical combo type to tracked variables. Updated the query builder to handle CASE statements. Simplified certain queries written by the query builder. Changed the tree structure to simplify creating custom webserver interfaces. Added a repeat type to animations for remaining in the last frame after running the animation. Added a Go To Row/Column option in quick properties for tables. Improved time plots to be able to show durations as well as calendar times. Added an optional wire mesh rack visualization. Added more picklist options to the storage object slot assignment strategy. Updated the animator so that keyframes are updated using a right-click menu option instead of automatically. Added an option to duplicate an animation keyframe into another animation. Changed the default network node speed limit to 0 (no speed limit). Reorganized the Use Transport pick list and added a No Transport Reference option. Fixed a bug with the rack's default pull requirement not reevaluating after becoming full. Fixed an issue with copy/pasting sub-locations. Fixed the dark patterns when zooming out in RTX Mode. Fixed a crash on certain hardware in RTX Mode when rendering too many transparent layers. Improved the Time Table Date Based GUI to draw past the last event and allow scrolling into the future. Added PushWheelchair and PushCart animations to Operators Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Time tables now combine consecutive down periods if using the same state and profile or the same down behavior. Fixed issues with pick/place offsets on drive in racks to improve usability with A*. Because of performance improvements to query(), the row order is not guaranteed unless using an ORDER BY statement. Fixed excelrangewrite() so that the correct overload is available in FlexScript. Improved the FlexScript hypertext preprocessor scoping mechanism used by the webserver. Fixed object color being applied incorrectly to ambient material color on certain meshes. Changed point source light attenuation. Changed TASKTYPE_NODEFUNCTION to pass variants in as parameters instead of interpreted legacy doubles. This fixes the types of arguments that are passed when calling treenode.evaluate() as part of a TASKTYPE_NODEFUNCTION task. This allows you to add TASKTYPE_NODEFUNCTION tasks with parameters that are not just numbers, (nodes, strings, arrays, etc.) and have those parameters be preserved in a type-safe manner and properly passed into the subsequent treenode.evaluate() call. However, this change may have some consequences for older models. The following guidelines apply: If you use the inserttask() command, and cast a node to a number with tonum() to pass it in as a task variable, then you should use parnode() to get those parameters out in the nodefunction. While this method will continue to work, this mechanism is nevertheless deprecated. The now-correct method for adding a TASKTYPE_NODEFUNCTION task to a task sequence is to use TaskSequence.addTask(). This method takes full Variants as its task variable parameters, so you do not need to use tonum(). When using this, you should use param() to get the parameters back out. Older models that use neither of these methods may need to be updated to use method 2 in order to work properly in this version. Process Flow Changed the default behavior of the Create Task Sequence activity to work easier with task sequences created outside of Process Flow. Added a Finish Task Sequence activity that works with the new Create Task Sequence features. Changed the default value of Task activities from token.resource to token.taskSequence. Improved the interface for connecting activities. Added a mechanism for connecting to and from containers and routing tokens between activities using those connections. Added an option to the Run Sub Flow activity to run tokens one at a time. Adjusted the size of containers and connections based on the zoom level when created. Removed the width attributes of themes. Improved the UI for entering times in the Date Time Source activity. Change Set Color By Case and Set Object Color pick options to enable setting the color of a token. Fixed the display of task parameters in the event log. People Improved people resource shared assets to be able to reference other people resources. Added Sort By and Filter By fields to people resources. Simplified and improved several activity sets. Improved the list of labels in drop-down menus to include People Settings labels. Added a Kiosk to the list of locations. Added an Observation Room multilocation. Added an option to the Toolbox to add all people tables to the Excel Export. Added more people tables and charts. Improved the performance of many existing people tables and charts. Updated preempted resources to be able to be reacquired with a higher priority. Updated Escort Patient and Tranpsort Patient activities to set the staff's TravelingWithPatient label when escorting or transporting a patient. Improved the query builder interface with support for adding group/individual subsets. Changed people acquire activities to have the default max wait timer trigger release the token out connector 2. Changed the Split activity default to creating child tokens in the Healthcare environment. Changed the repeat type of the LayDown and SitDown/SitDown2 animations to repeat the last frame. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Changed how labels are handled by People Settings. Improved animations and positioning of transports and equipment when staff move them. Emulation Added support for OPC UA connections.
View full article
A.Hello everyone, Some people we very impressed by FlexSim in a logistics fair and they asked me why are we using Plant Simulation in stead of FlexSim ? I've never heard about this software before, so I had a look on youtube. And to be honest I was impressed by the 3D view and how easy was constructing an automated storage in few seconds without code. I'd like to ask if anybody have used this software ? And what do you think about it ? Thank you very much.
View full article
Many simulation models need to show operator or machine utilization by time period of day, or per shift: shiftutilization.fsm Under Construction Summary Until this article is completed, here is the basic idea. I use a process flow to create one token per operator in the group. Each operator token creates one token per shift. The shift token creates its own Categorical Tracked Variable (which is how state information is stored on all objects). The shift token just remains alive, holding the tracked variable. The oeprator token goes into a loop, listening to OnChange of the 3D Operator's state profile node. Whenever the state changes, the token sets the shift token's state label to the same state. This essentially copies the state changes onto another tracked variable. Another child token listens for when the shift changes. When the shift changes, the operator token puts the current shift profile into some unused state (STATE_SCHEDULED_DOWN, in this case), and then applies new state changes to the correct shift token's label. A Statistics Collector listens for when the Operator token starts the main loop at the beginning of each shift. When this happens, the collector saves a row value that is an array, composed of the operator and the shift token. The row mode is set to unique, so that each unique combo of operator/profile gets its own row. Each column in the collector is made to show the data from the shift corresponding to that row. The result is the table shown in the article, which can be plotted with a pie chart as shown above.
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
Attached are three models that can be used to see the VR capabilities of FlexSim. oculus-warehouse-demo4.fsm (built with FlexSim 7.7) oculustouchdemo-6.fsm (built with FlexSim 17.1) The zombie production game was also updated for VR. These models were primarily designed and tested with the Oculus Rift, but they work with the HTC Vive as well. The HTC Vive requires a more powerful graphics card than the Oculus Rift does to achieve similar performance. You need to maintain 90+ frames per second (File > Global Preferences > Graphics > Show FPS Counter) in order to avoid judder with the HTC Vive. The Oculus Rift will remain smooth at 45 FPS or higher due to asynchronous spacewarp in their driver. In any model in 17.1, you can teleport around by pointing and pressing the Vive touch pads or Oculus Touch thumb sticks as buttons. The position where the thumb presses the button on the Vive or the direction that the thumb stick is rotated on the Oculus Touch will affect the direction you are looking when you teleport. This control scheme is similar to the Oculus Home controls. Moving via teleporting minimizes the motion sickness felt by users who are unaccustomed to VR. In the touch demo model, you can push buttons to release conveyor merge lanes, move operator figurines to change the operator assignments, and control the crane. The code that handles the touch inputs is in the ModelOnPreDraw user command. See VR model custom code for a version of the model with more comments in the code. The warehouse demo model was built in 2015 and doesn’t have any interactive elements that work with the Oculus Touch or HTC Vive controllers. For optimal tracking, after you press the VR Mode button in FlexSim and put on the headset, make sure you recenter the headset in the VR settings while standing or sitting in the middle of your play area and looking straight forward. On the Vive, push the system button to open the Steam VR overlay, then press the Settings button near the bottom-right corner, then look straight forward and press the Reset Seated Position button. On the Oculus, press the Oculus home button and then press the Reset View in App button in the upper-right corner.
View full article
FloWorks 18.1.0 is now available (10 April 2018). This version of FloWorks is intended for use with FlexSim 2018 Update 1. Update: Bug fix version 18.1.1 has been released on 18 April. In addition, FloWorks 18.0.2 has been released, containing bug fixes for FlexSim 2018 (LTS) users. 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 Changes in FloWorks 18.1.1 Bug fix: "Change" field should be hidden on all Task Executers except Flow Task Execture. Bug fix: Changing configuration of Flow Task Executer would cause strange behavior because the window was closed before all scripts had finished executing. Bug fix: Some objects like Berth and Loading Arm no longer worked because code properties got untoggled. Changes in FloWorks 18.1.0 Pumps, valves, blenders and splitters are now different shapes of the same "Flow Processor". Truck loading points and Berths are now different shapes of the same "Loading Point". Cylindrical tanks, rectangular tanks, tanks with polygon base area and flow piles are now different shapes of the same "Flow Tank". Added button to flow tank to calculate physical size based on specified max. content. Flow pipe has animation to help visualize if material is flowing and how fast. Added post-step delay and trigger to multi-compartment loading controller steps. Added Start Impact Event and End Impact Event triggers. FloWorks chart templates have been added to the library. All changes to version 18.0.2 listed below. Changes in FloWorks 18.0.2 (for FlexSim 2018 LTS) Bug fix: Conveyor sometimes stops incorrectly. Improvement: Objects try to avoid On State Change when state has not changed.
View full article
The latest release of FloWorks 19.0.4 is now available (19 July 2019). This version of FloWorks is intended for use with FlexSim 2019 LTS. FloWorks 19.1.2 is available (19 July 2019) for use with FlexSim 2019 Update 1. FloWorks 2019 introduced some major changes in the way FloWorks works internally. These changes include the following: Flow rates and content are now tracked in the standard statistics variables, requiring us to override fewer FlexSim features. This means, for example, that you can use all of FlexSim's included Statistics Collectors and Chart Templates out-of-the-box. FloWorks now tries to schedule fewer events. This means that models will run faster and debugging your model by stepping through has become much more transparent. This release includes the beta version of the next-generation solver. This solver is particularly suited for networks with many connections, most of which are closed or blocked, or long 'chains' of objects with a single connection in and out. By simplifying the flow network before calculating the flow rates, the solver should become much faster overall. Since this solver is likely to give (valid but) different outcomes, it is not enabled by default - you can test it by enabling the "Optimize networks before solving" option in your Flow Control. The Flow Tank level triggers functionality has been overhauled. For more information, please see the detailed release notes below. All versions of FloWorks 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. Thanks to the active users who have done this in the past weeks, we appreciate your ongoing support in helping us to improve FloWorks! 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 Changes in FloWorks 19.1.2 (19 July 2019): Bug fix: dragging in a shape from a group will no longer create the first shape in the group. All changes included in version 19.0.4. Changes in FloWorks 19.1.0 (30 April 2019): This version is for FlexSim 2019 Update 1. For FlexSim version 19.0.x use FloWorks 19.0.3. Added support for unconstrained flows. All changes included in version 19.0.3 described below. Backwards compatibility note: The following change may change the way updated models behave. Option "Unchanged" removed from "Set flow rate" triggers -- this is now considered as "Unconstrained". Use the "Set maximum input/output rate" option instead of "Set maximum rates" if you only want to change either the input or the output rate. Changes in FloWorks 19.0.4 (19 July 2019): Various bug fixes to the Mass Flow Conveyor. Bug fix: Utiliation returns (flow rate)/(max flow rate) at time zero. Bug fix: Solved exception when dragging different object shape into the model. Backwards Compatibility Note: The following change may change the way updated models behave. Bug fix: 'Time until event is 0' exception due to rounding errors fixed. Bug fix: Mixer On Empty event will only fire once (when mixer is actually internally idle). Changes in FloWorks 19.0.3 (30 April 2019): This version is for FlexSim 2019 LTS. For FlexSim 2019 Update 1 use FloWorks 19.1.0. Loading arm state will show Blocked and Starved instead of Idle while transporter is connected. "Pass product downstream" option added to product change trigger of flow processors. Bug fix: Transporters were sometimes positioned incorrectly when entering Loading Point. Bug fix: Flow object states were not updated. Bug fix: Fixed error when calling state() with no arguments. Bug fix: On Entry and On Exit in trigger list of Flow To Item and Item To Flow fixed. Bug fix: "Pass product downstream trigger" threw exception when connected to Flow To Item. Changes in FloWorks 19.0.2 (3 April 2019): For FlexSim 2019 Update 1 beta use FloWorks 19.1.0 (beta). Feature: Flow tank can scale in both directions (elliptical) instead of only using x-size for diameter. Bug fix: Various bug fixes to beta version of new optimizer/solver. Bug fix: Removed "content is larger than max. content" message during reset. Bug fix: Fixed exception in "Pass product downstream" when pipe is not connected to anything. Bug fix: Corrected normals on flow blender and flow splitter shapes. Bug fix: FlowObject.input /output.ports[index] now accepts Variant (e.g. token.Port ) as index and does bounds checking on index . Bug fix: Spheres no longer drawn outside flow pipes shorter than 2 m. Bug fix: Quick Properties only shows a single flow rate for flow pipes; output rate set to input rate on reset. Changes in FloWorks 19.0.1 (8 March 2019): Beta: Flow control can optimize network before solving. (Optimization is disabled by default, can be enabled for models with many (effective) single connections.) Content-holding objects now have On Trigger Level event that allows e.g. Process Flow to wait for a specific level trigger. Optimized event scheduling: obsolete events are removed from the event list instead of ignored. FlowToItem and ItemToFlow added to script so that rates and impact factors can be read and set. Added more shapes for Flow Tank and Mixer. Added "Change product by case" to trigger options. Bug fix: Flow conveyors now have state profile consistent with that of Flow Tank. Bug fix: Product color picker samples colors instead of objects again. Bug fix: Fixed incorrect layers being drawn during filling of Flow Mixer when multiple steps require input from the same port. Bug fix: Fixed incorrect states on Loading Point due to duplicate state_current node. Bug fix: Product field or dropdown will now preserve selected value instead of resetting to current product when switching property tab pages. Bug fix: Flow Task Executer connects itself to default network navigator on creation. Bug fix: Flow statistics now behave correctly under model warmup. User manual: Corrected description of FlowObject.stop() in documentation. User manual: Documented manual loading feature when Loading Points have 0 loading time. Backwards Compatibility Note: The following change may change the way updated models behave. Statistics are now kept in standard FlexSim tracked variables under the stats node. If you use dashboards, you may need to rebuild some charts. You can mostly use the standard FlexSim chart templates, listening to the On Rate Change event or the On Content Change Update (not Change). Tank trigger levels rewritten: Trigger levels are now specified using absolute level instead of percentage. Legacy limitations (max. 20 levels, no duplicate levels, 0% or 100%) have been removed. Separate trigger condition has been added to avoid coding ( if(mode == falling) { ... } ). Modes rising and falling are now called MODE_RISING and MODE_FALLING . Bug fix: Sometimes input and output triggers would not fire if trigger was reached precisely when flow was recalculated. (Mass) flow conveyor now closes input/output when stopped, instead of input/output ports. Loading point continues with next transporter after releasing completed item instead of waiting for it to exit. Bug fix: (Mass) flow conveyor only closed input when stopping; now closes both output and input.
View full article
FlexSim 2018 Update 1 is available. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Added a Database Connector tool and Database FlexScript API. Updated the Emulation module and added it to the toolbox. Updated object triggers to be dynamically added and executed to improve performance and flexibility. Added an option to store StatisticsCollector bundle data on the hard drive. Added a global preference for date and time formats, which will default to the system's locale settings. Updated the stick() command to be able to get information about the VR headset by passing -1 for the stick number. Added a Box Plot chart type. Added a visual Walls object, which can be connected to A* as a member. Added an option to reverse rows on a gantt chart. Updated how the gantt chart handles colors. Added a time window option to several charts. Improved axis title options on several charts. Added a y-axis range option to the time plot. Output, system, and compiler consoles now wrap lines. Added a binoculars button to the bottom of properties windows. Fixed a bug with using local variable "a" within FlexScript lambda commands, such as findmatch(). Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Removed FlowNode, Reservoir, WatchList, and other unused library class objects. Changed transportincomplete() to be more fail-safe so that it only affects the object when called correctly. Fixed an issue with the Rack sometimes receiving items out of order when the upstream object is using a transport. Process Flow Added a Variable shared asset. Updated the Event-Triggered Source and Wait for Event activities to be able to match values. People Added a Waiting Line object and a Wait in Line activity. AGV Fixed a bug with preempting an AGV during a pre-arrival event. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Improved AGV proximity detection for stop-space-based accumulation. Fixed an issue with reversing direction on accumulating paths. A* Added a routing mode for traveling at right angles only. Added an option for stopping and turning when changing directions. Added an option for routing by travel time. Improved the usability of creating and editing barriers and dividers. Added an option for snapping dividers between grid points. Fixed some visual issues with various components. Fixed a bug with distancetotravel(). Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Improved the accuracy of the calculation of which grid points are affected by dividers. The mechanism for recovering from deadlock has been changed. The path costing system was slightly changed to allow for travel-time-based routing.
View full article
A number of questions on the forum involve racks being service by a combination of shuttles and elevators. There are solutions involving network, Astar and AGV navigators, but for this example we’re just going to use TaskExecuter FlowItems and conveyors. The elevator system in particular, as described to me, seemed it would benefit from the flexibility conveyors offer – particularly spacing options, and the possibility of having dog/power-and-free based travel. For the pick face we can just use the slot and item locations to give the task executers travel command, and we can use kinematics for loading and unloading tasks. This removes the need for network nodes or control points at each location and allows fine positioning of a ‘two spot’ shuttle in front of the slot. The system has been put into a container to represent the cell/aisle and it is this object that is the instance member of the ShuttleSystemProcess process flow. The cell is designed to be duplicated with each cell becoming a new member instance of the single process flow. It comprises two racks, two elevators (conveyor loops), and a shuttle return queue (also a conveyor but with no roller visual). The system assumes that by the time an inbound item arrives at the pickup position it has been assigned a slot in one of the racks in the cell – so you should assign a slot in the normal way before it reaches a shuttle. You can additionally request items for picking out of the racks by pushing the item to the global list ItemsToPick. Currently each shuttle will store and/or pick one item in one trip with a dedicated position for each. When doing both in a single trip, the order in which this happens will depend where along the level the slots are located. In the event that there are no remaining tasks but items still need to exit the cell, the shuttles at the front of the queue will be asked to circulate empty through the system, thereby allowing the outbound items to advance to the exit position. The number of shuttles in the system is a process flow variable. In the example system there are elevators at each end of the rack(s) with a number of carriers to transport shuttles to the levels. Both elevators have a process flow variable for the number of carriers to be generated. Shuttles are not allowed to pick from the same level at the same time but in order to keep the up-elevator moving the carriers can unload the shuttle to the level even if another is active on that level. The shuttles only travel along the face of the rack in one direction towards the down-elevator and once are collected by a carrier the next shuttle on that level can start its operations. It is possible to run the system with only one rack should you wish to view the operations without the second rack obscuring your view. Since different applications will use different rack dimensions the cell has a label method called “configureToRack” which will align the conveyors and decision points to Rack1 based on the level heights and size of the racks that the user has set for Rack1. There may be some limits to very small sizes when the conveyor decision points overlap. The second rack will be configured during this method call to mirror Rack1. Here’s an example invocation of this method for an instance of the cell: Model.find("RackShuttleSystem").as(Object).configureToRack The shuttles need levels to be the same height along the length of the rack. Some effort was made to configure the system based on the shuttle and carrier sizes, so you can try adjusting those to suit your needs and hopefully the alignment will work as needed. The elevator conveyor and shuttle speeds are not set by the alignment method so you can edit those in the usual way. This is an example for both learning and perhaps as a starting point for any project should you find the approach suits your application, modelling style and skills. ShuttleLiftAndRack.fsm Time taken: 1 day to build the working model - plus another to work around holes api for auto-alignment code. 17Nov Updated: to initalize shuttles at the load point (via fast entry) added shuttleQheight label for use to set the returnQ height in the cell (used by the alignment method) added a process flow variable 'shuttleLoadTime' for the time to un/load items. aligned shuttle kinematics to the speed and acceleration of the TE FlowItem.
View full article
FlexSim 2016 Update 2 Beta is available. To get it, 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 support for STEP and IGES 3D shapes. Added a Quick Library popup when you double-click on empty space or A/S Connect to empty space in the 3D view. Improved object rotation manipulation in the 3D view. Added sorting to toolbox for top level items. Added the ability to use the query() command with partitioned lists, using ListName.$1 or ListName.PartitionIDStr syntax. Added support for the ON clause in SQL queries using the query() command. Added support for the ARRAY_AGG() aggregation function in SQL queries using the query() command, in the manner of PostgreSQL. Added an "Allow Multiple Pushes Before Back Order Fulfillment" setting to lists. Added a "Reevaluate All Values On Push" setting to lists. Added a Date Based feature to gantt charts. Updated the auto-numbering mechanism when naming new objects. Updated file browse dialogs to remember the last used directory. Changed the default directory for opening and saving user libraries to be within documentsdir(). Added a colors tab to the tracked variable dashboard chart. Updated the Presentation Builder interface to make the timeline more useable. Updated the Animation Creator interface. Updated the Stop Time interface. Added range and type validation to many edit fields. Added functionality to the Webserver to restrict access to certain models using Windows Authentication. Fixed a bug with the window docking system that caused sizing to not work properly sometimes. Fixed TimeTable Excel Import bug not working with Daily/Weekly Repeat table. Fixed the Visual Studio project files so they don't give you the linker errors when you compile flexsimcontent.dll with Visual Studio. Fixed a bug with cell heights and widths when inserting and deleting table rows or columns. Fixed line charts continuing to collect data beyond their collect time. Fixed the query() command so that it can be called within List fields. Process Flow Improved Process Flow view performance. Added Split, Join, and Synchronize activities. Added right-click options for re-ranking activities in a block and removing an activity from a block. Added tooltips to activities that show you the activity type. Added copy and paste options to the Process Flow right-click menu. Populated field names of lists for SQL drop-down menu options. Updated Text editing interface to be more user friendly. Added an "Assign Event Object To" option to the Wait For Event and Event-Triggered Source. AGV Added new agvinfo() command options. Updated paths so that they can be contained within visual tools. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Fixed issues with routing through path junctions where 3 or more paths connect.
View full article
We normally try not to introduce changes in a bug-fix release that require module developers to recompile their modules using new flexsimcontent headers. However, 17.0.4 included a bug-fix that added a virtual method on the SimpleDataType, which changes the virtual tables of any classes that inherit from that class. Because of this change, you will need to update your flexsimcontent and recompile your modules in order for them to work properly with 17.0.4. We apologize for this inconvenience. We have added a "v17.0" branch to the Module SDK repository that includes the updated flexsimcontent that you will need to compile for 17.0.4.
View full article
The FloWorks module has been updated for FlexSim 2017 Update 1 and FloWorks 17.1.0 is now available (10 April 2017). This release contains new features (see the Release Notes section below). It does not work with the LTS version of FlexSim 2017 (17.0.x). The upgrade version FloWorks 17.0.3 has been released for FlexSim 2017 (17.0.4). It contains all the bug fixes from FloWorks 17.1.0 but it does not contain new features and does not work with FlexSim 2017 Update 1 (17.1.0). NOTE: Due to a change in FlexSim, a new version was released on April 12. If you are using FlexSim 17.0.0 - 17.0.3, please use FloWorks 17.0.2, which is functionally identical. Both versions can be found in the Downloads section of your FlexSim account on the 3rd party modules tab. Bugs may be reported 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. Note that FloWorks 17.1.0 may require an upgraded license, see the Release Notes below. For any questions, please email support@talumis.com. Release notes FloWorks 17.1.0 (April 11, 2017) This version of FloWorks supports FlexSim version 17.1.0. Added a multi-compartment loading controller to allow multiple tanks on the same Task Executer to be loaded in sequence and/or in parallel. Added the mass flow conveyor, an accumulating version of the Flow Conveyor. Instead of using numeric product IDs, you can now pre-define a product table in your model, with fixed product names and colors. See the Products page in the FloWorks User Manual for more information. As of now, FloWorks license versions will need to be upgraded with every release, similar to your FlexSim license. (Existing users will automatically be requested to upgrade their license using the Request Upgrade button in the FlexSim License Activation window.) All bug fixes included in version 17.0.2, see below. FloWorks 17.0.3 (April 12, 2017) Version 17.0.3 of FloWorks supports FlexSim 2017 LTS versions 17.0.4 and onwards. This version is a re-release of FloWorks 17.0.2 (see below) due to a change from FlexSim 17.0.3 to 17.0.4. Which FlexSim version are you using? Which FloWorks version should you download? 17.0.0, 17.0.1, 17.0.2, 17.0.3 17.0.2 17.0.4 (LTS) 17.0.3 17.1.0 17.1.0 FloWorks 17.0.2 (April 11, 2017) This version of FloWorks supports Flexsim versions 17.0.0 - 17.0.3. Bug fix: Code headers correctly use Object instead of treenode for current and item so pick list items like "Object connected to center port" work again. Bug fix: Utilization no longer reported as -100% for object with maximum flow set to 0 on reset. Bug fix: Flow control no longer breaks down indefinitely once run with one connected object. Bug fix: Fixed exception when copy/pasting object with Flow Arrows enabled. Bug fix: Added missing icons for options in FloWorks submenu of Toolbox. Bug fix: Flow Conveyor now correctly detects changes in ratio of incoming components where total flow stays the same. Bug fix: ChangeTeEdgeSpeed command no longer throws exception when used on Task Executer not attached to Travel Network. Bug fix: Berth and loading point clear their contents on reset, like all Fixed Resources do. Older versions The release notes for older versions of FloWorks (FloWorks 17.0.0 and FloWorks 17.0.1) for FlexSim 2017 can be found here.
View full article
FlexSim 2017 Update 1 is available. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. Release Notes Changed FlexSim to store strings using UTF-8 encoding. Added support for Oculus Touch controllers. Implemented OpenVR for HTC Vive compatibility. Improved the shadow frustum calculation in VR so that shadows look better. Added a global preference for changing the resolution of the shadow map. Added support for nested queries in SQL. Added ROW_NUMBER as a SQL keyword. Implemented F2 and Esc functionality in tables. Updated the table view and labels tab to be more robust with different datatypes. Added Table(name) method for referencing Global Tables. Added more FlexScript classes, including List, AGV, Conveyor, and TrackedVariable. Added more properties and methods to existing FlexScript classes, including Object stats and additional string methods. Improved scientific notation for literals in FlexScript. Added a start value to tracked variables. All tracked variables in the model now reset on model reset. Changed itemtype references to referencing an item's type label instead. Improved the Person flowitem's 3D shape. Added repeating events to time tables. Added a short description field to user commands. Made the gantt charts and time charts scroll with a fixed time window. Removed the global table Clear on Reset checkbox and replaced it with a reset trigger. Added new visualization options for the Rack. Added duplicate buttons to the Excel Interface window. Added a duplicate option to the Toolbox's context menu. Taskbar now shows experimenter/optimizer status and runtime based upon stop time. Disabled deleting objects while the model is running. Fixed an issue with the undo history when pasting over nodes with pointer data. Fixed issues with using the ternary operator after properties. Fixed an issue with writing to Access databases with read-only fields. Included fixes listed in 17.0.4. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Removed the FlexSim WebServer application from the default installation and developed a new WebServer application using Node.js that streams the 3D view much faster. The new WebServer can be downloaded through FlexSim's Online Content. Existing models will continue to work with itemtype, but new models should be built using a type label instead of the itemtype attribute and commands. Process Flow Added an Assign Released Resource(s) To field on the Release Resource activity. Added functionality to allow you to Ctrl+Drag activities in an activity block. Added a right-click menu option and Alt+Click to open the Token View. Added a sampler to the assign labels Label Name field so you can sample other activities or tokens to get label names. Added a right-click menu option to open multiple views of a Process Flow. Added an Assign To property to the Create Tokens activity. Added a Make Array label aggregation type to the Batch. Added Center in View buttons for fields with pointer data. Added a name property to the Token FlexScript class. Fixed a bug with duplicating Process Flows using the Toolbox. Backwards Compatibility Note: the following changes may slightly change the way updated models behave. Updated the Pull From List activity so it does not assign a null label when nothing was pulled or the token was released early (manually). Previously, if you used a Max Wait Timer or Max Idle Timer (or some other mechanism) to release a token from a Pull from List prematurely, the label specified in the Assign To field would be created with a value of NULL. Now, the label will not be created. This may break other models that are checking to see if the label value exists. For example, saying objectexists(token.pulled) will throw an exception if the pulled label is never created. This can be easily remedied by changing the code to objectexists(token.pulled?). The ? will cause the value returned to be nullvar when the pulled label does not exist. Universal Edit fields are now more strict when accessing labels on a token. Previously, typing token.labelThatDoesNotExist would happily return NULL and move on. Now the Universal Edit will throw an exception if the label doesn't exist. This does not include Universal Edit fields that assert labels, for example the Assign To fields.
View full article
FlexSim 2022 Beta is now available. (Updated November 23) To get the beta, log in to your account at https://account.flexsim.com, then go to the Downloads section, and click on More Versions. It will be at the top of the list. The More Versions button does not appear when logged in as a guest account. Subsequently the beta is available only to licensed accounts and accounts that have a license shared with them. Learn more about downloading the best version of FlexSim for your license here. If you have bug reports or other feedback on the software, please email dev@flexsim.com or create a new idea in the Development space. FlexSim 22.0.0 Release Notes Added several new features to the Experimenter including: Experimenter can define and run multiple different jobs. Experimenter results are stored in a database file. Additional replications of a scenario can be run without needing to rerun previous replications. Improved visuals for status of replications. Added a Reinforcement Learning tool. Added Label charts. Added Tracked Variable charts. Standardized charts created by Pin buttons. Added sort options to table views. Updated MTBF/MTTR time fields to show unit conversion options. Added InObjectsInternal and OutObjectsInternal properties to the Visual Tool class. Backwards Compatibility Note: The following changes may slightly change the way updated models behave. Deprecated the optquest() command. It no longer executes any logic when called. The associated OPT_* macros have been removed. FlexSim now interacts with OptQuest through the Optimization Job object. Changed the default query handlers that deal with the Experimenter in MAIN:/project/exec/globals/serverinterface/queryhandlers. Custom applications that create web queries may need to be updated. Process Flow Added Process Flow Activity Statistics charts.
View full article
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
Neste exemplo passo a passo iremos demonstrar como fazer uma otimização em seu modelo no FlexSim, utilizando o Optimizer, ferramenta OptQuest da OptTek, a qual é um add-in opcional no FlexSim. Com esta ferramenta você incorpora Metaheurísticas e orienta seu algoritmo para Otimizar, buscar as melhores soluções. Essa abordagem utiliza soluções funcionaram bem e as recombina em novas e melhores soluções. Vamos lá! Assista o vídeo em nosso canal do YouTube e acompanhe a montagem do modelo passo a passo abaixo: Modelo de Otimização Passo a Passo Para este tutorial, vamos examinar uma situação muito simples. Um único operador carrega o item de uma fonte para um processador. Depois que o item é processado o operador o carrega para um segundo processador que leva mais tempo para processar do que o primeiro. Após o segundo processador termina de processar o item, o operador leva-o para a saída. Agora vamos supor que queremos aumentar a Produção (que também está vinculado à receita) deste sistema, ajustando a posição dos processadores. Se cada processador pudesse ser movido até três metros à direita ou à esquerda, onde cada um deveria ser colocado? Seria muito difícil intuitivamente saber como colocar ambos os processadores para maximizar a produção. A fim de resolver este problema com precisão, vamos usar o Otimizador. Agora, obviamente este é um cenário drasticamente simplificado, mas muitas vezes na vida real você tem situações em que você quer ver como vários layouts afetam a Produção geral. Esta é uma implementação muito simplista de tal experiência. Passo 1: Construindo o Modelo Modelo Crie um novo modelo usando Segundos, Metros e Litros para unidades. Objetos Crie um Source, dois Processors, um Sink, um Dispatcher, e um Operator. Coloque esses objetos como mostrado abaixo e faça as conecções. Posições Defina a localização dos objetos de acordo com a tabela abaixo: Dispatcher e Operator não precisam estar em um lugar específico, mas não devem estar alinhados com o resto dos objetos. Lógica Defina a seguinte lógica: Selecione no Source1, Processor2, e Processor3 para usar transporte (Use Transport disponível no menu de propriedades rápidas (Quick Properties). Selecione o tempo de processo para o Processor2: normal(10, 2) (também disponível no disponível no menu Quick Properties). Selecione o tempo de processo para o Processor3: normal(12, 3). Defina a posicão inicial do Operator na sua posição atual. Passo 2: Definindo o Experimento O restante deste tutorial trata do uso do Experimenter, encontrado no menu Statistics. O Otimizador usa a maioria das funcionalidades já presentes no experimentador. Criando Variáveis Abra a janela Experimenter. Posicione a janela para que você possa ver os processadores no modelo, bem como a janela. Em seguida, para Processor1 e, em seguida, Processor2, siga estas etapas: Clique no processador na vista 3D. Clique no botão Referência de Posição nas Propriedades Rápidas e defina a referência de posição para Direct Spatials. Clique na seta para baixo ao lado do botão +. Selecione Sample no menu variables. Isso coloca o cursor no modo de Amostra. Selecione uma amostra do campo de posição X no menu Propriedades Rápidas clicando nele. Isso adiciona uma nova variável no Experimenter. Defina o valor para o Cenário 1 da nova variável clicando duas vezes na célula e digitando o novo valor. Defina o nome da variável clicando duas vezes no nome atual. Defina o nome sendo Proc1X para o Processor1 e Proc2X para o Processor2. Criando Performances de Medida Selecione a aba Performance Measures na janela do Experimenter, então: Clique no botão + para adicionar uma nova medida de desempenho. Nomeie a nova medida de desempenho Produção. Clique no botão e selecione a primeira opção Statistic by individual object. Selecione o Sink para o objeto e Input para a estatística. Para selecionar o objeto simplesmente digite "/Sink" (sem aspas) no campo do objeto ou faça o seguinte: Clique no botão +. Selecione o Sink através da lista de objetos do modelo. Após clique no botão Select quando você terminar. Otimização Além de utilizar o Experimenter para definir explicitamente cenários, você pode usar o Otimizador. O Optimizer criará automaticamente cenários e, em seguida, testará esses cenários, tentando encontrar um cenário que melhor atenda a um objetivo. Projetando a Otimização Vá para a guia Design do Optimizador na janela do Experimenter. Você verá que as duas variáveis criadas anteriormente estarão presentes; Isso ocorre porque o experimentador e o otimizador compartilham as mesmas variáveis. No entanto, o otimizador precisa de informações adicionais sobre essas variáveis. Especificamente, você deve especificar: Type - O tipo de uma variável determina quais tipos de valores são possíveis para uma determinada variável. Variáveis contínuas podem ter qualquer valor entre o limite superior e inferior. Lower Bound - O limite inferior especifica o menor valor possível que o otimizador pode definir para a variável. Upper Bound - O limite superior especifica o valor mais alto possível que o otimizador pode definir para a variável. Step - Para Variáveis Discretas e Design, o passo especifica a distância entre valores possíveis, começando pelo limite inferior. Group - Para as variáveis de permutação, o grupo especifica qual conjunto de variáveis de permutação essa variável particular pertence. Para esta otimização, queremos permitir que os processadores se movam três metros para cada lado. Como não estamos limitados a posições específicas dentro desse intervalo, ambas as variáveis de posição são Contínuas. No entanto, precisamos definir os limites inferior e superior de cada variável. Para editar valores na tabela, clique duas vezes na célula de interesse e insira o novo valor. Insira os valores mostrados abaixo: O passo final do projeto é definir a função objetivo. A função objetivo está presente, mas em branco. Edite seu nome para Faturamento. Em seguida, clique no campo da função de seta. Um botão aparecerá no lado direito. Clique neste botão para exibir uma lista de todas as variáveis e medidas de desempenho. A função objetivo é um valor derivado de qualquer um ou de todos esses valores. Selecionar Produção, Isso irá adicionar essa medida de desempenho para a função objetivo, e colocar o cursor para a direita e para o final. Adicione o texto * 500 para que a receita seja igual o [Produção] * 500. Deixe a direção em Maximize, porque queremos maximizar o Faturamento. Como temos apenas um objetivo, o modo de pesquisa pode permanecer em Single. Passo 3: Executando a Otimização Vá para a aba Optimizer Run na janela do Experimenter. Então: Defina Run Time sendo 10000. Este é o tempo que o otimizador executará cada configuração do modelo (potenciais soluções) para a avaliação. Defina o Wall Time sendo 0. Normalmente, isso significa quanto tempo o otimizador pode ser executado em tempo real. O valor 0 significa que não tem limite de tempo. Defina Max Solutions como 50. Isso significa que o otimizador tentará não mais de 50 soluções diferentes para encontrar a solução ideal. Clique no botão Optimize. A janela do Experimenter alternará automaticamente para a guia Resultados do Otimizador, Optimizer Results. O otimizador então começará a executar a seguinte sequência: Determinar valores para Proc1X e Proc2X. Executar um modelo com esses valores para 10000 segundos. Avaliar as variáveis e medidas de desempenho. Calcula a função objetivo. Classifique esta solução. Usa as informações desta solução para criar uma nova solução - novos valores para Proc1X e Proc2X. Repete novamente a partir do passo 2. O otimizador pode avaliar várias soluções ao mesmo tempo. À medida que a otimização progride, o gráfico de Resultados do Otimizador é atualizado e mostra o progresso do otimizador. Uma vez que o otimizador avalie 50 soluções, uma mensagem aparecerá indicando por que o otimizador parou. Neste caso, ele dirá que o otimizador atingiu o número máximo de soluções. Se algo der errado, a mensagem conterá informações sobre o erro. Passo 4: Analizando os Resultados Assim que a otimização for concluída, o gráfico de resultados do otimizador será semelhante a este: O Eixo Y é chamado de "Single Objective". Para este exemplo, é sinônimo de Faturamento. As melhores soluções são destacadas. Os círculos com uma borda mais clara ao seu redor representam melhores soluções. Para um único objetivo, as 10 melhores soluções são marcadas desta forma. Como a otimização progrediu, o otimizador ficou melhor e melhor na criação de boas soluções, de modo que as últimas 15 soluções foram todas muito boas. Isso é chamado de convergência, e é uma maneira de saber se uma otimização é concluída; Se o valor objetivo não tiver melhorado por um tempo, pode ser que ele não melhore com mais pesquisas, e a melhor solução atual deve ser usada. Respondendo à Pergunta Inicial O objetivo dessa otimização foi descobrir onde posicionar os dois processadores. Agora podemos encontrar a resposta a esta pergunta com muita facilidade. Passe o mouse sobre a melhor solução (o maior círculo azul) no gráfico; Uma pequena janela aparecerá. Clique nesta solução para selecioná-la. Agora, no painel Opções de gráfico, altere o Eixo Y para Proc1X e o Eixo X para Proc2X. A melhor solução (e todas as outras melhores soluções) é encontrada onde Proc1X é maior, e onde Proc2X é menor. Lembre-se que todas as 10 melhores soluções produziram os mesmos resultados; Neste caso, ter os dois processadores próximos um do outro é a melhor configuração para este modelo. Configurando o Modelo para a Melhor Solução Pode ser muito útil configurar o modelo para visualizar a melhor solução. Para fazer isso, clique no botão Export Scenarios. Este botão leva todas as soluções selecionadas e cria cenários para elas. Volte para a guia Scenarios na janela Experimenter para ver a nova solução. Agora, a partir do menu suspenso " Choose default reset scenario" na extrema direita, selecione o novo cenário. Em seguida, resete o modelo para aplicar esses valores ao modelo 3D. Segue o modelo referente ao artigo: modelo-optimizer.fsm Inscreva-se e acompanhe nosso canal de videos no YouTube FlexSim Brasil
View full article
Top Contributors