Skip to content

Minor release 04 of March 2021

Compare
Choose a tag to compare
@amc1999 amc1999 released this 04 Mar 21:19
· 1299 commits to master since this release

Minor release 04 of March 2021:

Resolve specification ambiguity in event processing.

Summary:

This version resolves a specification ambiguity (ie not stating explicitly how something should be done) in ompp and Modgen related to the recomputation of event times. Recomputation of an event time occurs after an event changes an entity attribute used in the time function of the event. The ambiguity comes from an unspecified order of event time recalculations and the possible presence of duplicates.

This change may affect model events and output tables. If model outputs change, any differences are strictly statistical - they are not errors. They are a side effect of Monte Carlo variation (MCE) and tend towards zero as run size (or the number of replicates) is increased.

Of the 30 or so models tested for this ompp version, 4 showed differences: the 3 time-based models CRISM, HPVMM, GMM and the case-based model LifePathsX. All other models tested showed no differences, eg the case-based models RiskPaths, OncoSim, OzProj and the time-based models Dynamis, THIM, IDMM.

Eliminating the specification ambiguity improves exact comparability of ompp and Modgen versions of x-compatible models. It improves exact comparability between future ompp releases. It also improves the correlation of MCE between runs, improving the statistical reliability of run differences.

Because model results may differ from models built with previous ompp releases, this change might be disruptive. Model developers may want to manage the best time to make this change. As with all ompp releases, this version of ompp can co-exist side-by-side with older ompp versions.

This version also resolves the same specification ambiguity for the Modgen version of x-compatible models. This was not done by a change to Modgen, but by a change in the x-compatible files modgen_case_based.mpp or modgen_time_based.mpp. To maintain x-compatibility, model source code files with these names need to be replaced with the versions in this release, which can be found in the code directories of the sample models NewCaseBased and NewTimeBased.

Details:

The architecture of ompp and Modgen is predicated on recalculation of event times having no side-effects on entities. Because an event has not occurred when its next scheduled time is calculated (and may even never occur depending on intervening events), the calculation of a future event time must not, logically, change any attribute of any entity, ie have any side-effects in the present. The absence of any side-effects means that event times can be recalculated freely without affecting model results, statistically. However, if a random number generator (RNG) is used in an event time function, eg when drawing from a statistical distribution of waiting time, the internal state of the RNG changes. An RNG needs to change its internal state to produce a different random value on the next call. So, for example, if an event time function is called once or called twice for the same entity, the statistical effect is identical. However, the presence of the second superfluous call may affect results, because a different random number was used in the calculation of event time. Another example: If the same RNG is used in two different entities A and B (which is what happens with the currently available RNG formulations for time-based ompp models), and if the event time for the same event is recalculated in both A and B after an event occurs (eg a married couple changes region together), then results will depend on whether the event times in A are calculated before B, or whether event times in B are calculated before A, which can affect the future evolution of A and B and model results. Again, the effect is purely statistical. It can, however, impact the comparison of two model runs.

This issue was identified in the StatCan CRISM model, which produced different events and different outputs in ompp and Modgen because ompp and Modgen handled event time processing differently in a particular situation, resulting in different event times and different table results. The situation occurred when linked entities moved together from one region to another due to a triggering event in one of the linked entities. The detailed event traces in the ompp and x-compatible Modgen versions of CRISM become identical after this change.

Specification change:

Event times are recalculated using the same ordering as that used for events, ignoring event time. In addition, a given event (the same event in the same entity) is recomputed at most once when event times are recalculated.

Linux downloads:

  • Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and CentOS 8
  • Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including CentOS 8.
  • Cluster (MPI) CentOS-8 version require Open MPI 4.x and it would not work on RedHat / CentOS below 8.2 version.

Download source code and binaries:

Download cluster version (MPI):

IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from assets below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.