Open AtiyahElsheikh opened 1 year ago
This report corresponds to the new releases
Package | Release |
---|---|
SocioEconmics.jl | milestone V0.4 |
LPM.jl | V0.4 (14th Mar.) |
MultiAgents.jl | (V0.5 5th Mar.) |
MiniDemographABM.jl | (V1.0 End Feb.) |
Agents.jl is the most popular Julia library used within the Julia community with an extensive well-written documentation . Its integration allows employing so many ready-to-use code s.a. results collections and visualisation among others.
In order to integrate Agents.jl, the space concept of Agents.jl has to be adopted. This has been accomplished as follows:
DemographicSpace
has been implemented. This type extends Agents.jl built-in space types cf. issue #52 for further technical details
In order to learn how to integrate Agents.jl concepts into SEs library, a toy model MiniDemographicABM.j has been established to explore Agents.jl utilisation and facilities.
Future potentials and further details can be consulted from the library issues
Many of the functionalities in the SocioEconomics library are not sufficiently tested for correctness. Consequently, constructed models were expected to have inconsistencies and semantics errors (i.e. errors that are not raised and hence not detected at runtime).
Issue #39 recommends a method to improve the quality of the library and hence the constructed models. This is done by challenging constructed populations and verify their consistency, for example kinship relationship and housing consistency. For example, if person x is the father of person y, then y has to be the child of person x.
This method has been now started in this release and a significant set of bugs have been identified. It has been found that:
All of the above bugs have been corrected, cf. #59. Some consistency checks did not result in any errors, cf. #39.
Therefore, it makes sense to further apply this method for verifying the consistency of the population as the simulation advances. This is hopefully to be accomplished in milestone V0.5)
There have been difficulities in previous version of understanding the code, what an identifier refers to and from where it comes from etc. In order to reduce such difficulities, the code has been transformed / renamed to follow coding guidelines that are widely approved by the Julia community.
At the top of the ReadMe in the library website, a blue-grey badge can be noticed. This is to refer that the library is now (largely) following blue-style coding conventions. These conventions prescribe the coding guidelines that need to be obeyed to improve code clarity and readability, not only by others but also by the developer who conducted the code. These conventions are invented from a large community and it is useful to stick to these conventions , e.g.
foo_x()
& fooX()
under the same portion of source file or _foo()
refers to an internal function that is not accessed outside the source file etc. As a result of starting constructing a model based on Agents.jl library, i.e. enabling many ways to construct and simulate the same or a similar model, it is further recognised that so many functions that are applied on model , i.e.foo(model
) are splintered around the code. It is desired to collect such functions in one place to enhance code reuse within the library and make them accessible to the client. A new moduleAPI.ModelOp
has been started and to be enhanced along next releases. More details, cf. #50 (Milestone V0.6)
It is now possible to simulate models with large initial population size , 100,000 (ca. 3 minutes ) - 1,000,000 (ca. 5 hours) cf. Performance Table. Potentials for further up-scaling of memory and runtime performance exist, cf. #31
Summary Report I (11th Jan. 2023)
The unified simulation interface is done ( Issue 28 & issue 29). Consequently,
select_people(*), selectedfor(*), verbose(), init_return, progress_return, xParameters(model)
Before starting this library, execution of the simulation program of the LoneParents Model package demanded a huge memory allocations and consumption. This indicated that the julia code had serious problems that one should have paid attention at. This was not unfortunately the case. Significant Performance improvement (Since V0) have been achieved partially via the tasks highlighted in this (Issue 31). In numbers, the following has been achieved:
Worth to mention is that
The most recently implemented simulation functions were implemented in a careless way. The more checking code I place, I notice inconsistencies (issue 39 and others with the bug badge). But I believe that this will be subject to improvement through the next phases anyway.