FlexSim 7 strives for easy simulation
After more than a year of blood, sweat, tears, beta testing, and more beta testing, FlexSim 7.0 has been officially released. If you’d like more information on this latest version, read Phil’s forum post detailing the release notes or check out the official press release.
There’s a quote in the press release from Anthony Johnson, lead developer over FlexSim 7.0, in which he acknowledged that he and his team “wanted to create a simulation package that is as easy to use as it is powerful.” This was no small task, especially considering the structure of the software: FlexSim was designed to be extremely extensible and make full use of one of the most popular programming languages in the world, C++. A (very) incomplete list of the software programmed in C++ includes Microsoft operating systems, all four of the major web browsers, MySQL, essential portions of the Web sites for Facebook, YouTube and Amazon, and even the highest grossing video game in history, World of Warcraft.
In essence, FlexSim was designed to be able to do anything.
The fact still remains, though, that a piece of software capable of simulating any system won’t have a template for every system. Think about it: if the process is unique, how would we know how to build a picklist option for it? The flexibility of FlexScript and C++ is really what makes it possible to do anything in FlexSim, and when the system you’re simulating is complex/expansive/different, you’ll have to use them.
My first experience with process simulation software was in the early days of FlexSim 6. My background (and college degree) is in Communications, so I attended training in my first week at FlexSim with no experience in engineering or simulation, and very little familiarity with programming.
As soon as training finished, I started playing around with different modeling scenarios and learned even more by watching our seasoned technical support department. The standard model I would play around with was simple, containing a source, a conveyor, two processors, and a sink, and looked a little something like this:
I wanted to use triggers to control flow such that only one Flowitem could be processed within the two processor “system,” and I chose to close and open the input ports using OnEntry/OnExit triggers in the processors. I soon found out that the picklist options for these trigger actions required a little bit of customization; I needed to type in FlexScript commands such as “inobject(current,1)” to reference an adjacent processor. If I wanted to use a “push” method of flow through the conveyor instead, I first had to make a center port connection between the conveyor and the second processor, and then use “centerobject(current,1)” to reference it within the trigger.
And then FlexSim 7 came out. And this happened:
What you have here is one click to select the Sampler button, and another click to reference the object (in this case, the conveyor). That’s it. I’ve personally complained to our developers at least a dozen times to streamline the FlexScript use for us non-coders… and they actually did!
The Sampler is all over the place in FlexSim 7. I highly recommend acquainting yourself with it as soon as possible and using it liberally to reduce your own code usage in FlexSim. And for those moments when you just can’t avoid the code? The context-sensitive library becomes a code library, organized by subject and easily searchable, with all the important FlexScript commands ready to be drag-and-dropped wherever they’re needed.
Less coding, easier simulation. Just what Anthony had in mind.