AnyLogic 8.8.4 is now available for download. The new release has two significant features: built-in genetic optimization and elevators in the Pedestrian Library. For more details on all the improvements and updates released in AnyLogic 8.8.4, check out the release notes in AnyLogic Help.
Starting from AnyLogic 8.8.4, users can choose between two types of optimization engines: OptQuest and a built-in genetic optimization engine. What’s the difference?
By default, OptQuest-based optimization is included in AnyLogic, but it has certain limitations – no more than 7 variables and 500 iterations are available. For large-scale optimization tasks, you can select the paid option to get around the limitations. The new genetic optimization algorithm option is also shipped with AnyLogic but has no limitations and additional charges regardless of the size of your project.
In addition, exporting an OptQuest-based optimization experiment as a standalone application is a separate paid option available to AnyLogic Professional users, while with the genetic optimization engine, it is free of charge.
Please note that with the genetic optimization option selected, an experiment stops automatically once the optimum is found, which is why you won’t find the Automatic stop property here.
To explore how genetic optimization can be used in the Custom Experiment, you can either find the corresponding model in the AnyLogic Example Models library (Welcome screen → How-To Models → Experiments → Optimization in Custom Experiment) or download the source file from the Optimization in Custom Experiment example model in AnyLogic Cloud.
For many years, our users have created various ways of modeling elevators. Now AnyLogic will have a pedestrian elevator as its basic element.
Elevator functionality is represented by the Elevator markup element and the PedElevator block. The block describes the behavior of pedestrians who will use an elevator. Both elements can be found on the Pedestrian Library palette in AnyLogic.
Elevator markup element – to set the elevator’s behavior
All characteristics of the real physical elevator, such as speed, capacity, and configuration of doors, can be set in the Elevator markup element. The element represents an elevator cabin that can move between floors. Therefore, only one Elevator object is needed to bind together all floors (represented by levels in the model) located in the same agent – usually, it is the Main agent.
There could be a case when you need an elevator to travel only between certain floors – it could be an elevator in a skyscraper or one serving an underground parking garage. For this, choose an option Stops at selected levels to connect only those floors that you need.
You can also set the minimum time that an elevator stays on the floor with its doors opened (Minimum stay time property). If elevator passengers keep entering or exiting the elevator, the minimum stay time will be increased automatically until the movement of the last passenger is completed.
PedElevator block – to set the pedestrian behavior
In addition to the markup element, we added a PedElevator block. It contains the pedestrian logic that describes how pedestrians move to an elevator specified in the Elevator property, wait for it to arrive, enter the elevator, and exit it on a floor specified in the Target level property. The timeout after which a pedestrian stops waiting for the elevator and can be redirected to another process can also be set in this block.
The built-in logic automatically collects calls from:
- pedestrians waiting on the floors (information about the current floor and target direction is used)
- passengers who have already entered the elevator (information on the required floor is used.
Taking this information into account, an elevator first serves all the target levels in one direction before transferring all passengers moving in the opposite direction. This behavior is performed automatically by AnyLogic.
However, you can also simulate your own elevator algorithm by switching the elevator to manual mode through elevator.setManualMode(true) API function and controlling it with elevator.moveTo(level), elevator.pickUpPeds(), and elevator.dropOffPeds() methods.
Such an approach can also be used to simulate disruptions in normal elevator operations, such as failures or automatic movement to the nearest floor in case of an emergency.
You can learn more about the new elevator functionality, experiment with the manual mode, and explore elevator-related tricks with the help of our how-to models:
- Pedestrian Elevator
- Elevator Manual Control
- Elevator Failure
- Elevator Connecting Floors Defined by Different Agents
Stay tuned to our blog and subscribe to our monthly newsletter to make sure you don't miss any updates.