Releases: sojoe02/RANA
Releases · sojoe02/RANA
Release for MAS 2018 (batch experiments and bugfixes)
Dissertation release.
- Please refer to my dissertation (included in this release) and/or the wiki for documentation (https://github.com/sojoe02/RANA/wiki)
- Installation guides can be found here: https://github.com/sojoe02/RANA/wiki/Installing-Rana
- sadly the installation guide for Mac is cryptic as I have very limited experience deploying on that platform. I have helped people deploy Rana on a Mac in the past, so it can be done.
Email address is: sojoe02@gmail.com if you have any questions.
Quantum and state based modelling example release
General
- Optimized containers and iterators for a small performance boost and better code consistency.
API
- Added quantum map manipulation function to the API and map module.
- Added a radial map scan function to the API and map module.
Model
- 02 oscillation model has been expanded to include global data collection via a data collection agent.
- A new agent example has been added to illustrate how modules can act as agent states. It is a frog agent the shifts between foraging and calling, where calling and foraging states are implemented as separate modules. The model also has comprehensive data collection that allows for evaluation of population with different attributes, such as movement speed.
Visualizer
- Fixed the visualizer not processing events emitted in the first second.
1.8 release
- Version 1.8, the multi-core release is now considered ready for production. Most major bugs should have been sniffed out by 'yours truly'.
- Fixed a race-condition, that could cause a segmentation fault (or worse: result corruption) when using collision detection.
- Rewritten 07 agent (
07_repulser.lua
) to become a repulser agent in order to illustrate how collision detection can be used. Updated the collision section in demo agents to feature this agent. - Agents will no longer stop if they detect a collision with
GridMove
enabled. - Optimized agents changing colors, so they only request a new display color if the requested color is different from the current one.
moveTo
in theranalib_movement
module will now properly use the agentsSpeed
if none has been defined in the option table.moveTo
will reset the agents position to the bounds of the map if the positions defined are out of map bounds.
Multi-core optimization update
- Optimized threading so the main thread does not take up any CPU cycles while waiting for subthreads to finish.
- Ensured that default zoom level is on the currently active map to prevent zoom corruption when agents are out of bounds.
- Manual use of
updatePositionIfFree
via the collision detection module has been enabled. - Fixed
_positionData
path not being found if Rana is launched remotely._positionData
is a buffer that keeps track of agent positions for event processing purposes.
Multi-core support release.
- Added support for multi-threading, this means that Ranas agent behaviors will now take advantage of multi-core processors. The user can define the amount of threads to allocate to a given simulation run via the user interface, default is 4. Performance gain is not linear and for simple behaviour with few agents there will be little to no gain. The gains in performance scales with number of cores/threads available, number of agents (the more the better) and behaviour complexity in the
takeStep
phase. - Updated the collision grid mechanics to take asyncronous movement due to multi-threading into account. If an agent moves with
gridMove=true
the agent will stop moving if a collision is detected at it's next position. - Added
updatePositionIfFree
function to allow for syncronous manual movement in the collision grid. This function is included in theranalib_collision
module. - Due to multi-threading semantics agents added during a
takeStep
phase will now skip the current phase. - Disabling agent ID's in the graphic window will now be more consistent when adding new agents. The setting will also persist on subsequent simulations.
- Compiling Rana now requires C++14 compiler support rather than C++11.
- Just-in-time via luaJIT is here to stay, so it will be left out of the release numbering. Rana can still be compiled with regular Lua interpreter support though.
Interface fixes
- Adding complex agents during the
takeStep
phase will no longer disable the run/stop button and re-enable initialization. - Rana will now properly search for modules in the (master) agent's source directory.
- Initialization during runtime will nolonger be possible, and Rana will output that a simulation is running.
- Version check on QSysinfo to let Qt version below 5.4 compile Rana.
- Reduced program footprint for Windows by removing unneeded dlls
- This is the final release before transitioning Rana's codebase to C++14 from C++11.
Adding agent group fix
- Added agents will now correctly initialize
- Fixed agent event group access crashing Rana if they where accessed on initialization.
- Graphic agents are now displayed in the correct position upon initialization.
Critical fix to manual collision detection and movement
- critical fix to collision detection for agent using the collision grid by moving manually. (do not set
Moving
andGridMoving
to true if you intend to do manual movement). - 'ranalib_collision' module now has a fully functional
updatePosition(newX, newY)
that updates the collision grid with a new positionnewX
andnewY
and then setsPositionX=newX
andPositionY=newY
. - fixed initialize button not reactivating if no valid agent path is set.
- enabled terminal output for say messages.
- all error messages are now red.
Crash and corruption fixes on key spam.. and more zoom
- Mouse wheel will nolonger scroll in the map panel, it will only zoom.
- Fixed crash on inhumanely fast initiate/run command spam, with skewed delay timers and Lua agent population checks.
- Duplicate graphic agents should no longer be possible... at all. E.g when changing from event visualization to simulation, and spamming the initialize button.
- Re-enabled functionality to stop and start a simulation using the same agents (position data will be overwritten and cleanUp functions will be called, lingering events might cause undefined behavior).