Spent a few cycles yesterday thinking about Laurent Bossavit’s provocation, and while I’m having fun gettin’ all complexological after so many years away from the Santa Fe Style, I’m increasingly confident it’s not quite what he was asking for.
After all, complex systems models offer no predictive value, except in the sense that they provide insights into models’ intrinsic consequences. As with Genetic Programming vs Statistics, agent-based complex systems models are useful only insofar as they surprise and inspire further models, not as tools interacting with the “real world”.
At any rate, I’m finding it a useful exercise.
Here’s where I am now, as of this writing (link to old commit).
Personally I’m confident that the toolkit of complexological modeling is eminently practical; Nk models, Boolean networks, agent-based simulation, all the rest is in my blood, so the design patterns are so obvious to me that I can slap something together in a few minutes. But it’s interesting as I talk with folks (Laurent and Ron Jeffries, among others) about this little sketch, how often my correspondent wants to drop my modeling toolkit back down to the familiar level of aggregative statistics, or stock-and-flow continuous-valued systems models.
Subjectively, when folks ask for something so intrinsically focused on story-telling to be “simplified down to cleaner math”, it fees a lot like when old-school programmers ask to use Integer values for Boolean values (“-1 is false!”), or when I see simple structs of primitives used instead of full-fledged objects in an object-oriented language. Something about habits and familiarity, surely, but also an utterly different sense of elegance and purpose, of craft, creeping in.
(Which is interesting, and worth watching over time. Something very similar comes up when I read this.)
At any rate, a Boolean Network feels like a nice, tunable model of a complex world with hidden internal structure. In addition to tunable internal complexity, one can always add externalities, noise, structural dynamics, all sorts of things that model the way we treat error and uncertainty in the real world much more authentically than merely adding some normally-distributed epsilon to a number.
But there’s an interesting modeling choice before me, now, and I’m thinking aloud about it. As you’ve read, I’ve sketched a world with useful tunable parameters; I’ve sketched a comparison (“waterfall” vs “agile” as variations in timing and order of staged work). But one does want one’s simulated “Team” to be able to do that work in a reasonable way.
So what is “requirements gathering”? Or design, or coding, or testing? As happens now and then when building complex systems models, the question is not “What do people really do?”, but rather, What is the simplest convincing mimic of what is implied by a story in which we say, ‘Five requirements have been gathered’? Or, Sixteen designs have been considered, or Eleven tests have been created and run?
I have some notions, as you can see in my notes at GitHub. But there’s also this feeling that people brought up in the classical mathematical modeling world (the one that perfuses computer science as well) will probably raise their eyebrows. One is brought up to think of variables as primitives, and of interactions not as algorithms but as equations. One is trained by decades of expensive computing and resource limitation to assume that aggregation takes place properly within a model, using stocks and flows and aggregative measures and statistics, derivatives and averages all over—and not to see each instance or run of a model as being contingent.
This is a kind of premature optimization that I haven’t heard remarked before. But I think it’s close to the core of what makes “complexology” abhorrent unto the journalist. And what’s interesting is that it’s coming from nerds who have almost certainly dabbled a bit with these alien, thrilling, complexological models: implemented a Game of Life, for example.
And yet I think most haven’t realized that contingency and subjectivity are baked right in. Protip: On average, over long time scales, all Game of Life runs are empty.
Maybe nobody’s pointed that out before. I think they probably ought to have done so.