OR/MS Today - August 2004



Software Review


Flexsim 2.6

Serious simulation tool offers many benefits for users in a manufacturing and materials-handling environment, including speed and 3-D graphics.

By ManMohan S. Sodhi


If presentation to decision-makers in a manufacturing and materials-handling environment is your ultimate goal as regards simulation, Flexsim Simulation Software 2.6 should be a serious consideration. It is a drag-and-drop-style graphical program for discrete-event simulation on the Microsoft Windows platform that uses 3-D graphics. The user drags and drops such objects as a source, a sink, processors and queues from a palette onto a grid and then clicks on these objects to enter or modify their properties. The 3-D environment is not just pleasing to the eye; you may also find it to be critical in many materials-handling situations.

Although there are many similarly motivated software packages (see the survey by Swain [1] for instance), Flexsim has four benefits that make it stand out: (1) speed, (2) extensibility, (3) presentation and graphics, and (4) visual objects to collect and display statistics. It has an object orientation and uses C++ and OpenGL to get these benefits. You also get control; for instance, you can make the simulation run as fast or as slow as you want by controlling the ratio of simulated and actual time.



Figure 1: Flexsim 2.6 screen upon starting.

These features come at a price. First, it requires Microsoft Visual C++ installed on your computer and uses this in the background (Visual C++ comes with Flexsim). When you start the program, you need to press the "compile" button. After you build a model, you need to compile the model before you run it (in the background, C++ code is generated). Second, you need a computer that is essentially a gaming machine with 32 MB NVidia or Diamond video cards and a 1.8 GHz clock speed at a minimum. Such hardware is hardly state-of-the-art for developers, but it may be less common for the general user who simply wants to run a model as opposed to create one. For such users, a model developer could create a Windows video file (.avi format) based on a computer run.

There are also a couple of quirks that some may like and others may not. Instead of using a soft security key or licensing file, it relies on a "dongle" that goes into a USB port on your computer. The software does not start without this dongle except in "evaluation mode." This means extra security for the user as well, although I am always nervous about misplacing things. Third, part of the data entry is in fields embedded in sentences rather than the usual text boxes that people are used to. On the other hand, this has the benefit of being able to view the data as part of a sentence without needing "help."



Figure 2: From the palette of objects, drag a source object to the model view.

Model Elements


Flexsim "objects" include the Source, Queue, Processor and Sink. These can be dragged and dropped from the palette on the left onto the modeling area. Other objects are MultiProcessor, Recorder, MergeSort Conveyor, Conveyor, Combiner, Separator, Rack, FlowNode, Reservoir, Dispatcher, Operator, Transporter, NetworkNode, Crane, ASRSvehicle, VisualTool, Recorder and CollisionObject. Every Flexsim object has an unlimited number of input, output and central ports to communicate with other objects. These are input and output ports that are used in the routing of flow-items or to create network paths for mobile resources to follow using NetworkNodes.

Containers are VisualTools objects that can contain part of a model and then hide or display these details. These allow you to see your model at a high level and then drill down to see details. For instance, you may have a supply chain model at one level, but by clicking on the VisualTool you can drill in to one of the plants.

Although the graphics are manufacturing and materials-handling oriented, they can be modified by modifying or extending the properties of existing objects. Flexsim can handle resources and paths that are two major constituents of service industry models for, say, healthcare or banks. For instance, consultants or engineering groups may build their own specific libraries and proprietary 3-D graphics.



Figure 3: Drag and drop other objects from the palette.

Then there are the objects that move through your model: parts, pallets, assemblies, paper or containers. Most flow-items have processes performed on them or are carried through the model by material-handling resources. Flow-items are generated in the "source" object and can have, among other properties, an item-type or a label.

Views are another modeling feature. Flexsim uses OpenGL technology and provides both an orthographic (from the top, Figure 4) and a perspective one (Figure 7) with the latter view being best for presentation or visual proofs.



Figure 4: Connect objects by keeping the "A" key pressed and by dragging the mouse from one object to another.

Finally, the software ExpertFit from Averill M. Law & Associates (www.averill-law.com) comes bundled with Flexsim 2.6, enabling the user to determine the best-fitting probability distribution for simulation results.

Building A Model


To give an idea of how easy it is to get started with the software, consider the following example involving a manufacturing situation based on one of the tutorials. Jobs arrive at random and queue up before getting processed by one of three processors. After that, each job is carried by a conveyor to the sink.

1. Start the software. Once the software loads, you should see the Flexsim menu and toolbars, Object library or palette (on the left) and model view windows (on the right) (Figure 1). Select the "Compile" option on the toolbar before getting started.

2. Drag and drop a Source from the Object Library into the Model View window (Figure 2).

3. Drag and drop a queue object, processor objects, three conveyor objects and a sink object (Figure 3).

4. Connect these objects so that the flow-items can flow from the source to the sink via the other objects. Press and hold the "A" key, then drag the mouse with the left button pressed from one object to another to connect them. (There are other types of connections that you enable by pressing keys other than "A".)

5. Provide parameters for each object. For instance, we need to assign the arrival rate of flow-item objects. Double click on the Source in the model to bring up its user-interface (Figure 5a).



Figure 5a: User interface for the "Source" object in the simulation model.

To set the Inter-Arrival time to normal (10,2) as stated in the model description, select the down arrow on the Inter-Arrival time pick list and select the correct option (Figure 5b). There is a large number of probability distributions available.



Figure 5b: Assign the distribution to the interarrival time between flow-item objects flowing out of the source.

Then hit the button on the right to obtain a window with parameters as part of the text. Change parameters to 10 and 2 for mean and standard deviation respectively (Figure 5c).



Figure 5c: Change the parameters for the normally distributed parameters.

Next, to change the capacity of the Queue to hold up to 25 flow-items, double-click on the Queue to gets its user interface and type 25 for "maximum content (Figure 5d)."



Figure 5d: Set the capacity of the queue.

(In this particular example, you also have to select the Flow tab to set the flow options for the Queue — in this case the jobs are of different types and they go to different processors accordingly — but I will skip this step in the interest of brevity.)

Next, set the operation times to the Processors by clicking on one of these to get its user interface (Figure 5e). In the "Process Time" pick list, select the option for "Exponential Distribution." Then click the box next to this field and change parameters of the distribution (Figure 5f) as we did for the interarrival times for the Source. Repeat this process for the other 2 Processors.



Figure 5e: Select the distribution of the processing time for a processor.



Figure 5f: Set the parameters for the exponentially distributed processing time for the processors.

6. Compile the model by hitting the "Compile" button at the bottom. Essentially the model is C++ and certain Flexsim macros that are compiled by invoking Visual C++ behind the scenes. "Reset" the model and then press "run" (Figure 6). You should see flow-items flowing through this system.



Figure 6: Tool bar for running model.

7. The model is currently in a top-down orthographic view. It usually is better to view the running model in a perspective view in 3-D. You can also rotate the X-Y-Z plane to get a better view. Close the orthographic window and open the perspective view by selecting the "Perspective" button on the toolbar on the top to get a 3-D view (Figure 7).



Figure 7: The system in 3-D using "perspective view."

8. View statistics. Select the setting menu on the model view window and unselect the option to "Hide Names" (Figure 8). The default in the "Ortho" view is to show the names, and in the "Persp" view the default is to hide the names.



Figure 8: View the statistics in the model in perspective view.

Potential for Use in the O.R. Community


Simulation is a core technique utilized by many in the OR/MS community. For the classroom, Flexsim can be used to demonstrate simulation models for two reasons. First, the excellent graphics means credibility and "visual proof" for operations management concepts. Second, the extensibility of the software by modifying or adding objects means that the simulation can be tied to specific business cases, albeit with programming investment.

Likewise, Flexsim should be quite useful in the business world. Anyone who works in demonstrating the source of such problems as bottlenecks in manufacturing along with proposed solutions will find it easier to make the case with Flexsim than with a lot of analysis and numbers buried in slides. However, it is a serious package, and users would be well-advised to take the workshops held by the vendor and possibly even use their consultants. Once a model is built, it can be distributed to others provided they have a low-cost version (free within the customer's company) of the software whose main purpose is running models using different parameters rather than creating new ones.

Documentation


Flexsim documentation is quite good and has five parts: It starts with three excellent tutorials that give a user quick confidence. It also includes a reference guide to C++. There is the documentation on the specific C++ functions that objects have and that can be modified by the user using C++ code. ExpertFit for Flexsim documentation is also included. Finally, there is some theory material on data analysis. A Word document also comes as part of the software, which has all the above in it, and this can be more convenient than the large manual. As a future step, perhaps the software could come with a help database especially for the C++ functions.

Installation


Installation is not for the faint of heart if you have an early version of Windows 2000 or if you have never installed Visual C++ or similar programming tools. At a minimum, the software requires Windows 2000 with service pack 4 and specific video cards using NVidia chips, and needs 7.5 GB (not including Visual C++). Flexsim itself is only one CD. It took me an entire morning to install the software but, again, most of that time was spent on installing Visual C++ and on ensuring that I had all the patches for Windows 2000. Flexsim itself did not take much time or effort.

Conclusion


Even though it is easy to get started with its initial drag-and-drop simplicity, Flexsim is a serious tool meant for those with some grounding of programming. There is a clear manufacturing and materials-handling leaning with the objects that come with the software, although, with minimal programming and by obtaining 3-D graphic icons, you can make your own library. Its extensibility is praiseworthy, as is the design decision to go with C++ rather than create a completely new language. Even more praiseworthy is the focus on presentation with OpenGL graphics switching from 2-D to 3-D and allowing even 3-D presentation slides as part of the model.

Still, I do have minor reservations. First, I was not able to run some examples that crashed my Windows 2000 system possibly due to the video card (mine is different from the two listed and has much less video memory). The required cards are popular ones, but given how quickly video cards are evolving, it raises the possibility of some machines having cards incompatible with OpenGL and hence Flexsim. Second, with the serious C++ horsepower, I was initially hoping that I could use the software to create standalone executables to distribute to users, but that was not the case. According to the vendor, it is possible to create standalone executables because all the generated code and libraries are in C++, but they do not recommend it. Instead, a low-cost/free restricted version of the software is available to others to run your models — a reasonable option.

Finally, I do not like dongles or similar hardware keys even though I understand that these are the easiest way to prevent the copying of software. It should be possible to use license files tied to the specific machine instead.

There are many software packages addressing many different needs. (See Swain 2003 for the sixth biennial survey of discrete-event simulation software.) A majority of these, like Flexsim, are graphical, allowing the user to drag and drop icons. Among these, Flexsim is industrial-quality software that is extensible and allows the use of very convincing 3-D objects. Moreover, it has objects for displaying statistics as the model is running. It is not a beginner package and would require serious users to learn some C++. Despite the investment in time and learning, consultants and engineering, design groups of large manufacturing concerns and even service companies such as hospitals will find their investment worthwhile.

Product Information

Flexsim 2.6 is available from:
Flexsim Software Products, Inc.
1366 South 740 East, Orem, UT 84097

URL:
www.flexsim.com

E-mail:
sales@flexsim.com

Phone:
801-224-6914

Fax:
801-224-6984

Price Information:
Flexsim's price range is $15,500-$19,500. Each software license includes training, 12-months technical support and 12-months software maintenance. The company has a "competitive upgrade program" under which owners of a "competitive" simulation software product may "upgrade" to Flexsim for $3,500. An evaluation version of Flexsim Simulation Software is available from the Web site. For universities, a 20-seat network license is available at a very low cost and the limited student version is free. This is the same as the evaluation version and does not require Visual C++ as it has its own compiler.

Minimum hardware requirements are:
Intel Pentium 4 processor, 150 MB of free disk space, 128 MB system memory, Windows 2000/XP, and 32 MB NVidia GeForce or RIVA TNT2 Graphics card. The recommended system requirements are Intel Pentium 4 Processor, 2.4 GHz or higher, 200 MB of free disk space (plus about 7.5 GB for Visual C++), 256 MB system memory, Windows XP and 64 MB NVidia GeForce4 MX.



Vendor Comments

Editor's note: It is the policy of OR/MS Today to allow developers of reviewed software an opportunity to clarify and/or comment on the review article. Following are comments from Bill Nordgren, president and CEO of Flexsim Software Products, Inc.

• The orthographic view can also be adjusted to show in 3-D. The view can be rotated, moved and zoomed by using the right button and wheel on the mouse.

• Help for all the C++ functions in Flexsim is displayed when you press the "Hints" button on the toolbar.

• Microsoft Visual C++ .Net Standard version 2003 is bundled with Flexsim. It requires 7.5 GB to install C++ and 150 MB to install Flexsim. It will take approximately one hour to install C++ and approximately five minutes to install Flexsim. Visual C++.Net requires your operating system to be Windows 2000 or higher. If you are missing service packs for Windows 2000, it will add another 15 to 45 minutes to install the service packs before you can install the Visual C++.Net (courtesy of Microsoft).

• Since Flexsim uses OpenGL for the integrated 3D graphics display, you will need a graphics card that supports OpenGL. Most newer graphics cards do a fair job with OpenGL, but older cards may have problems. Flexsim recommends NVIDIA cards because they are 100 percent OpenGL compatible. Since Flexsim is completely integrated with OpenGL for all view windows (even the input GUI's), a graphics card that is unable to process OpenGL will hinder the users' ability to use Flexsim. In the worst case, it may even cause Flexsim to close. Flexsim does provide a graphic utility (flexsimgfx.exe) that will automatically configure the graphics card in your computer to run Flexsim with optimum performance.



References


  1. Swain J.J., 2003, "Simulation reloaded," OR/MS Today, October. www.lionhrtpub.com/orms/orms-8-03/frsurvey.html.



Dr. ManMohan S. Sodhi is an associate professor (senior lecturer) at Cass Business School, City University, London, where he teaches supply chain management and quantitative methods to MSc and MBA students. His research interests are in supply chain management especially in pertinent risks. He is the software editor for OR/MS Today and can be reached at m.sodhi@city.ac.uk.





  • Table of Contents

  • OR/MS Today Home Page


    OR/MS Today copyright © 2004 by the Institute for Operations Research and the Management Sciences. All rights reserved.


    Lionheart Publishing, Inc.
    506 Roswell Rd., Suite 220, Marietta, GA 30060 USA
    Phone: 770-431-0867 | Fax: 770-432-6969
    E-mail: lpi@lionhrtpub.com
    URL: http://www.lionhrtpub.com


    Web Site © Copyright 2004 by Lionheart Publishing, Inc. All rights reserved.