Amy Greer, of MOSIMTEC, began an interesting thread on our LinkedIn group. It details some of the useful changes beyond the headline updates in AnyLogic 8.3. We thought it was useful insight for people who model with AnyLogic and asked if she would blog about it. Here it is:
AnyLogic 8.3 – A Major Minor Release
AnyLogic has released a fairly major release, though hidden in a minor release number. Why do I consider this a “major” release?
- A new animation engine will change the look & feel of the models my clients receive from now on.
- A significant conveyor and transporter library will change the way I model.
- There are also several other nice-to-have features that are going to make modeling just that much easier!
Let’s break each of these down separately.
1 — New Animation Engine
The new animation engine scared me. The thought of taking out the old Java Swing and completely replacing it with HTML5 seemed like such a major change that surely it was going to break my old models. So far, no such issues. At MOSIMTEC we have a model template with components we use on every project. This includes our key animation components. The upgrade from 8.2 to 8.3 was fairly smooth.
I ran into 2 compile errors. One was easily resolved by changing a cast from (Experiment) to (ExperimentHost). The other related to how I manipulated the tool bar programmatically. Support responded within a few hours. Our model template is now completely on 8.3.
Another issue I was concerned with was how we distribute these models to our clients. However, when you export a model to a Java application, the export folder that gets generated includes everything your client will need, including the Chromium web browser. So far so good on the implementation side of things, and the animation simply looks more modern than the old Swing version.
2 — Material Handling Library
A major component of 8.3 is the material handling library. The Material Handling Library currently has 2 main features: conveyors and line-guided transporters (e.g., automated guided vehicles or AGV’s).
If you remember the Conveyor block from 8.2, it was pretty basic. The new conveyors are so comprehensive, we will only touch on a couple of their features here. In 8.2 conveyors had no acceleration or deceleration and no intelligent routing. If I wanted to convey through a network, I had to write the routing to convey from A to B, then B to C and so on. AnyLogic 8.3 now routes an agent through a conveyor network, so that I can just send an agent to its final destination without managing the route myself.
In the properties of the conveyor, I can let AnyLogic calculate routing automatically, in which case it will take the shortest path. However, I can specify certain conveyors to avoid. This might be helpful if packages above a certain size need to avoid a particular area. I can also force the inclusion of certain conveyors, which would be helpful in representing any conveyor paths that are also processing or inspection paths that parts must go down.
Besides calculating automatically, you can also specifically define the segments an agent will travel. What is powerful about both the sequence of segments and the avoid/include options is that you can set these programmatically. They can be different for each agent in the system and based on the state of any model component. They could also be based on inputs set in a user interface.
I am extremely pleased with the low-level controls they have given us for the conveyor networks. Not only do the segments have acceleration and deceleration, I can change them on the fly when a package crosses a position on the conveyor. I really thought I would be able to break AnyLogic by resetting acceleration or target speed while several agents were currently moving on the conveyor segment. However, it handled the changes and adjusted the speeds appropriately. If two conveyor segments are linked together, AnyLogic also manages the accumulating and non-accumulating behavior between the two when there are different speed parameters.
The following figure shows a position on conveyor and its call backs — on leading edge enter and on trailing edge exit. Not only can the agent reason with and control the conveyor it is on, but the nature of AnyLogic means that these call backs can be used to reason with and control other agents and other conveyor segments in the system. These call backs allow the flexibility to tightly control conveyor timing, which is critical in material handling modeling.
I have not had a chance to play with the transporters yet, but knowing how well AnyLogic did with the pedestrian library, I am optimistic we will have some really interesting options for path movements, and conveyors. Look for future blogs as the transporter objects get used more.
One thing to remember about the Material Handling Library is that it is big. I have probably only mentioned a fraction of the settings in this blog. When you get some time, check it out, but my advice would be to use the simplest constructs possible.
3 — Other Hidden Features
Besides the Material Handling Library and new animation engine in 8.3, it appears there will be numerous other small things that will make life easier going forward. Some of the ones that jumped out at me are:
- Statechart actions: added 'self' argument - reference to the current statechart element
- Exporting a model to stand alone now generates run script files for all operating systems, not just the one you are developing in!
- traceln() functions with color argument, which allows adding colored lines to a model's debug panel
- More toDate() functions
- Added method ResourcePool.getRequests() to view current queue of requests for units
- Can install 8.3 in parallel with previous versions of 8
⭐Do you have insight to share or a model to show off? Get in touch!
For a comprehensive look at material handling in AnyLogic get our AnyLogic MHL email pack.