Due to changes in the libraries used by GAMA 1.7 and 1.8, this version now requires JDK/JVM 1.8 to run. Please note that GAMA has not been tested with JDK 1.9 and 1.10.
Changes between 1.6.1 and 1.7/1.8 that can influence the dynamics of models
- Initialization order between the initialization of variables and the execution of the
init block in grids
init -> vars in 1.6.1 / vars -> init in 1.7
- Initialization order of agents -> now, the init block of the agents are not executed at the end of the global init, but during it.
put a sample model to explain the order of creation and its differences
- Initialization of vars to their default value
map ? list ?
- Systematic casting and verification of types
- header of CSV files: be careful, in GAMA 1.7, if the first line is detected as a header, it is not read when the file is casted as a matrix (so the first row of the matrix is not the header, but the first line of data)
- the step of batch experiments is now executed after all repetitions of simulations are done (not after each one). They can however be still accessed using the attributes
simulations (see Batch.gaml in Models Library)
- signal and diffuse have been merged into a single statement
- facets do not accept a space between their identifier and the
- simplification of equation/solve statements and deprecation of old facets
- in FIPA skill,
contentis replaced everywhere with
- in FIPA skill,
receivers is replaced everywhere with
- in FIPA skill,
messages is replaced by
- The pseudo-attribute
user_location has been removed (not deprecated, unfortunately) and replaced by the “unit”
- The actions called by an
event layer do not need anymore to define
list<agent> arguments to receive the mouse location and the list of agents selected. Instead, they can now use
#user_location and they have to compute the selected agents by themselves (using an arbitrary function).
- The random number generators now better handle seeding (larger range), but it can change the series of values previously obtained from a given seed in 1.6.1
- all models now have a starting_date and a current_date. They then dont begin at an hypothetical “zero” date, but at the epoch date defined by ISO 8601 (1970/1/1). It should not change models that dont rely on dates, except that:
- the #year (and its nicknames #y, #years) and #month (and its nickname #month) do not longer have a default value (of resp. 30 days and 360 days). Instead, they are always evaluated against the current_date of the model. If no starting_date is defined, the values of #month and #year will then depend on the sequence of months and year since epoch day.
as_system_date have been removed
Enhancements in 1.7/1.8
- simulations can now be run in parallel withing an experiment (with their outputs, displays, etc.)
- batch experiments inherit from this possibility and can now run their repetitions in parallel too.
- concurrency between agents is now possible and can be controlled on a species/grid/ask basis (from multi-threaded concurrency to complete parallelism within a species/grid or between the targets of an
gama : a new immutable agent that can be invoked to change preferences or access to platform-only properties (like
abort: a new behavior (like
init) that is executed once when the agent is about to die
catch statements now provide a robust way to catch errors happening in the simulations.
super (instead of
invoke (instead of
do) can now be used to call an action defined in a parent species.
date : new data type that offers the possibility to use a real calendar, to define a
starting_date and to query a
current_date from a simulation, to parse dates from date files or to output them in custom formats. Dates can be added, subtracted, compared. Various new operators (
minus_months, etc.) allow for a fine manipulation of their data. Time units (
#day, etc.) can be used in conjunction with them. Interval of dates (date1 to date2) can be created and used as a basis for loops, etc. Various simple operators allow for defining conditions based on the current_date (after(date1), before(date2), since(date1), etc.).
font type allows to define fonts more precisely in
- BDI control architecture for agents
- file management, new operators, new statements, new skills(?), new built-in variables, files can now download their contents from the web by using standard http: https: addresses instead of file paths.
save can now directly manipulate files and … save them. So something like
save shape_file("bb.shp", my_agents collect each.shape); is possible. In addition, a new facet
attributes allows to define complex attributes to be saved.
assert has a simpler syntax and can be used in any behaviour to raise an error if a condition is not met.
test is a new type of experiments (
experiment aaa type: test ... ), equivalent to a
batch with an exhaustive search method, which automatically displays the status of tests found in the model.
- new operators (
- casting of files works
- co-modeling (importation of micro-models that can be managed within a macro-model)
- populations of agents can now be easily exported to CSV files using the
messaging skill between agents
- Terminal commands can now be issued from within GAMA using the
status statement allows to change the text of the status.
- light statement in 3D display provides the possibility to custom your lights (point lights, direction lights, spot lights)
- Displays can now inherit from other displays (facets
virtual to describe abstract displays)
on_change: facet for attributes/parameters allows to define a sequence of statements to run whenever the value changes.
experiment now support the
virtual boolean facet (virtual species can not be instantiated, and virtual experiments do not show up).
experiment now supports the
auto_run boolean facet (to run automatically when launched)
experiment now supports the
benchmark boolean facet (to produce a CSV summary of the time spent in the different statements / operators of GAMA)
- experiments can now have their own file (
xxx.experiment) and specify the model they are targeting by providing the path to the model in the new
model: facet (similar to
- experiments can sport a new type:
test, a specialised type of batch experiment that can be run automatically from the GUI or in headless and reports back the result of the tests found in its model
- draw of complex shapes through obj file
- new types fo files are taken into account: geotiff and dxf
- viewers for common files
- addition of plugin and test models
- Shapefiles are now copied, pasted and deleted together with their support files
- External files are automatically linked from the workspace and the links are filed under an automatically created
external folder in the project
- The “Refresh” command in the navigator pop-up refreshes the files, cleans the metadata and recompiles the models in order to obtain a “fresh” workspace again
- A search control allows to instantaneously find models based on their names (not contents)
- Wizards for creating
.experiment file and test experiments
- The new project Wizard now leads by default to the new file wizard
- doc on built-in elements, templates, shortcuts to common tasks, hyperlinks to files used
- improvement in time, gathering of infos/todos
- warnings can be removed from model files
- resources / files can be dropped into editors to obtain declaration/import of the corresponding files
- A new option
-validate path/to/dir allows to run a complete validation of all the models in the directory
- A new option
-test path/to/dir allows to run all the tests defined in a directory
- For performances and bug fixes in displays
- For charts defaults
- OpenGL displays should be up to 3 times faster in rendering
- fullscreen mode for displays (ESC key)
- CTRL+O for overlay and CTRL+L for layers side controls
- cleaner OpenGL displays (less garbage, better drawing of lines, rotation helper, sticky ROI, etc.)
- possibility to use a new OpenGl pipeline and to define keystoning parameters (for projections)
- faster java2D displays (esp. on zoom)
- better user interaction (mouse move, hover, key listener)
- a whole new set of charts
- getting values when moving the mouse on charts
- possibility to declare
permanent layout: +
#stacked in the
output section to automatically layout the display view.
- Outputs can now be managed from the “Views” menu. Closed outputs can be reopened.
- Changing simulation names is reflected in their display titles (and it can be dynamic)
- OpenGL displays now handle rotations of 2D and 3D shapes, combinations of textures and colours, and keystoning
- Much faster (up to 100x !) display of errors
- Contextual menu to copy the text of errors to clipboard or open the editor on it
- Faster validation of multi-file models (x2 approx.)
- Much less memory used compared to 1.6.1 (/10 approx.)
- No more “false positive” errors
- Interactive console allows to directly interact with agents (experiments, simulations and any agent) and get a direct feedback on the impact of code execution using a new interpreter integrated with the console. Available in the modeling perspective (to interact with the new
gama agent) as well as the simulation perspective (to interact with the current
- Console now accepts colored text output
- monitors can have colors
- monitors now have contextual menus depending on the value displayed (save as CSV, inspect, browse…)
GAMA-wide online help on the language
- A global search engine is now available in the top-right corner of the GAMA window to look for GAML idioms
- Serialize simulations and replay them (to come)
- Serialization and deserialization of agents between simulations (to come)
Allow TCP, UDP and MQQT communications between agents in different simulations (to come)