From a disciple of evolution

Archive for the ‘Complex Systems’ Category

Simcity World – A tip in the time

What is common among ‘Intel 8086’, ‘Microsoft Windows 95’, ‘Google Search’ and ‘Apple iPhone’? These are innovations that changed the World forever. When such a technology is launched, the World sees a ‘Tipping Point‘ or ‘tip’. Such innovations are celebrated but they hardly happen in isolation. Each one requires sufficient progress in related fields. For example, ‘Apple iPhone’ could take advantage of progress in energy-efficient microprocessors. From gaming industry too, I believe such an innovation has just happened. Today Simcity World has been released by Electronic Arts. There have been many versions and variants of the classic Simcity and most of them were popular among gamer community. However, this time it is different. No, I am not indicating popularity, but about usage. Let me try explaining.

Intrinsically games have been for entertainment. Simcity player enjoys the construction and administration of a virtual city. The gamer plays for hours in building a city from ground up, expanding and governing it thereafter. Patience and passion are not only virtues but also sort of ‘requirements’ that are not mentioned on the shiny box the game packaged in. However, one can only do so much being alone. For example, all the resources needed by a city should be available within the city’s limit and most importantly, there is no competition. When players can connect their cities with one another, they cooperate, compete and evolve. It is analogous to connecting one’s PC to the Internet – More the people join, better it is for everyone. Now how can this change the usage?

When cities connect, there is more dynamics poured into the game, and it can rival the dynamics of the World. This is an awesome thing for understanding global dynamics. Let’s take an example. Say there are 10,000 cities in the World, each with its unique geography, environment, resources, cultures, people and position in time.  It is enormously complex to imagine and deal with. So how should a city respond to a change, such as a drought or a new high-speed train line? How would the resource be utilized and people be given jobs? And more importantly there will be ripple effect as inevitably, the cities cooperate and compete. These avenues can be explored, discovered, to understand which approximate causes will lead to an aggregate effect, in this non-linear World. All this experimentation is impossible unless there is inherent potential to achieve at truly global scale. This is the new usage and it should differentiate Simcity World from many other games.

It is hardly matter of time to map entire Earth into such a virtual world, it is a relatively static issue. However, the real issue is dynamics, computation resource for it and computational infrastructure. Thankfully, few challenges can be tackled using recent innovations in computing infrastructure such as energy-efficient  (ARM/Intel Atom-based) multicore microservers, OpenStack cloud infrastructure, high speed fiber internet and so on.

Henceforth it is worth watching how this space develops, especially competition (such as SecondLife) and creativity.


Facets of Complexity – Navigation

What is common among ‘Internet’, ‘stock markets’, ‘societies’, ‘economies’ and ‘human body’? Apparently nothing, except they are very complex. Bingo! And I welcome you to the field of ‘Complex Systems‘.

What is Complexity and where from does this emerge? Well, to my belief, this question itself is fairly complex to understand, comprehend and explain. Getting answers to this question is ‘The story of blind men and an elephant‘. Complexity, as a recursive definition, is ‘The state of being complex; intricacy; entanglement’, according to Wikipedia. I try to simplify it for myself as followed in this post.Internet map

I see complexity synonymous to scale. Any system can be represented using three Fundamental Abstractions: Entities, Interactions and Constraints/Invariants. When there are simple entities with simple interactions and/or simple constraints, things are within control; but wait; only when they are small in number. I mean this because there are numerous such systems, that help strengthen this belief. For example, in a stock market, which is a complex system. Now imagine a stock market with only two stocks, only tens of brokers whereas the market is open for only short interval. Each of the transaction is regulated by the law of the land. The system is comparatively easy to comprehend. However I am not at all talking anything about ‘Predictability‘ because it is very difficult for any open system.

Apart from fundamental abstractions there emerge Derived Abstractions. For a Complex system the cardinality of the set of derived abstractions is sufficiently large to ‘make’ it complex. The beauty is that this formal system is self-sufficient to represent any system. Now I would like to restrict all this discussion is around Computation and ‘A New Kind of Science‘ and I have no intention to cross ‘Gödel’s incompleteness theorems‘.

We, the Humans, understand through perception. Complexity can be understood iff (if and only if) its facets are understood (which are entities, interactions and constraints). With an assumption that the data about these facets is already captured, what remains is to navigate through the results. A concept like ‘Faceted Browsing‘ is very useful for such a navigation. Using a semantic interface within a browser, such as ‘Exhibit‘ developed at MIT, as a part of ‘SIMILE’ project. However in order to make them really useful, there has to be a way to capture the facets. Out of various ways to model the system, for example UML, formal methods, ontology, the last one looks quite promising. So continuing with our assumption, we can use the domain ontologies to navigate through an instance of the complex system. Longwell, another software developed as part of SIMILE project, gets one there, albeit not exactly there. This is just a beginning…

I have developed a small demonstration of faceted browsing – navigation of GNU Compiler Collections’ invocation options. The demo is a subset of all options and it is yet not at its best. However it is fairly usable. More to come. An important thing – the demo works only with Firefox. Some of the typical use-cases can be –

  • While compiling a ‘C++’ program on a ‘x86-64’ architecture supporting ‘SSE4a’ instruction set, what series of optimizations one should supply to the compiler.
  • How to make loop optimizations such as unrolling, auto-parallelization, etc.
  • What are the options supported on, say, warning levels?