So, finally making some headway with the thesis. How long does it take to get over that hump though? It's like 4 years worth of tension pulling you back to the point where the slightest niggling doubt sends you back to the start. But no longer... Having actually completed the two most time consuming parts, bar some kind of supervisorial disaster I shan't be visiting Square 1 again.

Anyway, during the course of the chapter I just wrote on 'Exploratory Modelling' (haha, I know... It's a thesis dissertation though), I had to look back on everything I'd done in the last 4 years - but especially stuff from the first and second year that I'd all but forgotten about. As my Python skills have come along quite a bit since then I dusted off a few of the visualisation scripts I'd written ages ago, and added some improvements. Here are some random excerpts:

Lots of fun using the Python module networkX to construct network topologies REALLY EASILY (i.e. had I found it earlier it would've a) saved me time but b) never appreciate quite how computationally intensive it is to generate the links for 1000 nodes according to a stochastic algorithm. The algorithm is right here actually:

As each node is added to the network as part of the algorithm, it is tested against all other existing nodes (set j) the probability of it being connected to node i is described by the equation above, where ki is the degree of node i (how many other nodes it is connected to).



1000 node Scale-Free Network Topology, constructed using the Barabási–Albert (BA) algorithm (Albert & Barabási, 2002)
This was the original, inverted it and changed the hue back to red to prevent printing a big black square, but it looks quite good with the dark background.
Population bifurcation displaying chaotic behaviour: x represents the ratio of existing population to the maximum potential population at year n. final population (as a % score between 0 and 1), r is the population growth factor (a positive number). Each generation the following calculation is performed:

 x_{n+1}=rx_n(1-x_n). \,

xn+1 being the new population, every time. And at some point, it splits in 2, and then 4, and then 8.... This tiny equation actually holds alot inside it - as a difference equation (and a non-linear one at that), it describes reproduction at a rate proportional to the current population when the population size is small, but 'starvation' occurs when the growth rate will decrease at a rate proportional to the carrying capacity of the environment (then subtract the current population). r can change quite alot about the destiny of the graph (in fact, it defines it entirely...)

r = 0-1 means the population will eventually die out
r = 1-2 means the population will quickly approach the value (r-1)/r
r = 2-3 means the population will approach that value (r-1)/r but will oscillate about it before converging.
r = 3 - 3.44949 means the population will permanently oscillate between two values (dependent on r)
 r = 3.44949 - 3.55409 means the population will permanently oscillate between 4 values
r > 3.55409 means the population will approach oscillations among 8 values, then 16, then 32... and by this stage the doubling of oscillatory waypoints has reached such a frequency that it forms a period doubling cascade... This is what is seen in the figure above.
r = 5.6995 is the onset of chaos, at the end of this period doubling cascade.  This website is top notch for these kinds of things (java required, however): http://yuval.bar-or.org/index.php?item=4


This is a screenshot of a live simulation in action - there's a video below too. Green lines mean a successful link, red mean unsuccessful, white lines are the routes defined by the network topology. The numbers in boxes represent free Channels (think of this like airtime, on different frequencies), when they're all red they're all busy... but luckily the video below has ample.