Hi Jack.
I think that discussing about the world3 is strongly related to the subject of this thread.
Reliable means confidence on the relative correctness of its outcome. I say relative because perfect correctness is impossible to achieve in social science.
Bug free means that every equation associated with a variable delivers the results expected by the name of the variable.
I think that the bug free condition is mandatory to hope reaching a minimum of relative correctness.
And this is not the case for the world3 model. The world3 model is a sophisticated model with a highly dynamic structure that reflects a specific point of view. Any other team would certainly build a different structure. To build such a model, one should build different models with different structures and compare their outcomes and eventually build a model averaging the different structures of the different models. I have a doubt about this having been done.
One should, too, build a very solid system of tests, embedded in the model or not, to test the coherency of the model relative to the reality it wants to describe (like the reality checks of Vensim).
I have not seen such tests. To resume, building a model with a relative reliability would need a considerable effort disproportional with its utility. The model describes an inexorable future with no specific policies impossible to apply due to the multiple policies and interest of the earth countries.
I think that there has been no effort to improve the reliability of the model, doing even partially the necessary actions described. Because if it had been done, I imagine that the authors would have done easier tests discovering eventual equation bugs in the model.
If you download the model, (preferably with any of the 32 bits Vensim versions, I had problems with the 64 ones) and set the model<setting<units equiv to ‘use stricte testing’ and press CTRL U it shows 9 errors that are not shown when stricte testing is off.
When stricte testing is off, Vensim forces a different dimension to DMNL values if it does not fit other values in the expression. For instance, 1 (dmnl) + 1 (person) will assume that 1 (dmnl) is in fact 1 (person) and will not report an error. If strict testing is on, it will report an error.
This test requires no effort and generates immediate results.
On the case of the World3, there are 9 errors reports when strict testing is on.
Sometimes with Vensim, it is necessary to test first Ctrl T before doing the Ctrl U to make the latter work. Everything explained earlier works the same (12 unit errors) with the two Richard’s models, that you can download as explained later on.
But you can use the 64 bit versions.
When I tested one model that was using the same ageing chain than the world 3 model, I did that test, and saw three variables that were in the first view of the model, the population view. It was the three maturation rates of the ageing chain. The error unit came from subtracting a 1/year mortality from a dimensionless unit. When one calculates the number of people maturing, one must calculate the number of people ageing from one cohort to the next. The people ageing are those who are still alive at the end of the time step period, one semester. The people still alive at the end of the period are those alive at the beginning of the period less those who died in the period which is equal to population less (population multiplied by the mortality per semester) and the mortality per semester equal the mortality per year multiplied by year per semester which is ½ years which is the time step.
And having the number of people still living at the end of the semester, one must divide it by the number of semesters of the cohort, to calculate the portion of people leaving the cohort for the next one. And the number of semesters is equal to the number of years multiplied by 2. And the result must be again multiplied by 2 to calculate the rate per year instead per semester. The result gives the equation population * (1 – (mortality of the cohort * time step) / size of the cohort in years. For the 0 to 14, the size is 15 years. The equation is dimensionally consistent). Population(year) * (1 (dimensionless) – (mortality of the cohort * time step (1/year * year ) ) / size of the cohort (year).
The equation is not only correct dimensionally but corrects the wrong result delivered by the original formulation. For instance if one forces with the original formulation, an epidemic on the 0 to 14 cohort, that kills half of the children in a semester, the maturation during this period is equal to 0, because the mortality per year is equal to 1, which makes the mortality per semester equal to 0.5.
But the maturation cannot be equal to 0, because some of the people still alive at the end of the semester are maturing. If one forces the total of people of the cohort dying, which makes the mortality per semester equal to 1, and the mortality per year equal to 2, The people of the next cohort are becoming younger: the maturing is negative. To avoid that error, it would have been better to make all the calculations, considering the mortality per semester or by time step. And the mortality per time step becomes dimensionless, it is a simple percentage. The error comes from a confusion between the mortality per year with the mortality per time step.
One can argue that the error came from changing the time step from one year to half a year. This is partially true, because in the case of a year time step, the results were correct, but the unit error was still there and should have warned the author of a possible bad formulation. To resume my point of view, I consider that the authors were poorly motivated by getting a really reliable model, because if it was the case, they would have made these very simple verifications. I am sure that there are many other equation bugs in the model. I do not even speak about verifying the structure of the model which is much more complicated.
I had recently finished a model and while analysing it, I found a big equation error. I then realized that I was working with a model which I was not 100 percent sure that there was no other bug equation and decided to verify the entire model of about 900 equations heavily subscripted.
I started by verifying the constants then the initials than the variable directly dependant from a constant or an initial etc…. When verifying an equation, I had already verified precedingly the input variables of the equation. That job took me 6 weeks, and I found at least 5 big mistakes changing the results of the model, changed multiple name variables that were badly named, and simplified multiple formulations making them easier to understand and particularly to verify.
In fact, during the months of building the model, I did not make sure that every single equation added or modified was hundred per cent bug free.
I have noticed that in all the public or not models that I took the time to verify, I have always very quickly found equation errors.
To my opinion, this state of the SD field, is damaging for its scientific reputation. For me SD, is a field based on solid scientific foundations, but that is not used scientifically. And it is one of the main reasons explaining the subject of this thread, even if it is not its root cause. The root cause comes to my opinion, from the fact that the authors considering that their models will never be implemented, do not see the interest of increasing considerably the difficulty of the task, by trying to build a really scientific work.
For me the solution, would be to concentrate on less macro topics much easier to solve and implement, before trying to solve more difficult ones.
Anyone interested can go the the Vensim forum www.ventanasystems.co.uk/forum/ and find two models that can be downloaded based on Richard models, and with the bis model, the only change to simulate an epidemic with the time of the epidemic and the level of the mortality and see the results of the maturation when setting the mortality to 1 or 2 per year. the model ter, has the proper equation for the maturation, and one can see the maturation is now correct, when one chooses a mortality.
I tried to upload these models, but the mdl extension is not accepted. My name on the Vensim forum is LAUJJL, if you do not find the post.
Best.
JJ