baloonworld: (Default)
[personal profile] baloonworld
Tital

Abstract

1Introduction
In this report, the construction of two cellular autonoma will be considered in the context of real-world systems that they attempt to model. In the course of the investigation, the autonima will be adjusted to attempt to model the systems under different conditions, and a quantative discussion of how the conditions affect the models will be made.


2Diffusion limited aggregation
DLA is a process in which particles wonder at random on some smooth surface (substrate) before bonding to some defect. Despite the random nature of the growth, it gives rise to characteristic, statistically similar growth patterns around the defect. Various statistical properties of the aggregates, (in this investigation we will concern ourselves mostly with its dimensionality) are dependant on properties of the system; in this investigation these relationships will be explored
In the course of this investigation, values corresponding to binding energy/free energy ratio, and the isotropy of the substrate will be considered. As well as this, various aspects of the model will be adjusted which have no clear physical equivalent, often to the end of proving that the choice of a unphysical option does not necessarily invalidate the results obtained.

In the real world, DLA occurs during the deposition of metals during electrochemical reactions

Algorithm
Basic

To start with, this model will consider the accumulation of partials around a single defect. The most basic Algorithm for producing DLA is outlined below:

1/ Create a blank grid with a single particle fixed in the centre.

2/ Produce a new particle at a radius rstart and a random direction from the initial particle, where rstart is slightly larger than the maximum radius of the aggregate.

3/ Move the new particle in a random direction on the grid by one grid square.

4/ Check if moving particle is adjacent to any fixed particles;
if it isn’t, go to 3
if it is, attach the particle and go to 2

The initial assumption is that this will produce a roughly spherical bundle of particles, however a little extra though or actual implementation will show that it produces something rather more complicated and interesting, as shown in Fig 1

Fig 1: an aggregate

Assumptions
This Algorithm has a couple of problems- it assumes that partials approach the aggregate evenly from all directions (which is reasonable if considering some systems, and less so when considering others.
It assumes that the moving particle never walks off the edge of the grid, despite the fact that the grid can not be infinite. A related assumption is made that there is enough time and computing power to follow the particle as it takes the most circuitous route possible to the aggregate.

Improvements

Thus, to improve the efficiency of the algorithm, it is normal to add another radius rkill at a significant distance from the aggregate, once the wandering particle passes rkill, it is assumed that it will not interact with the aggregate, and it is destroyed, a new wandering particle being added as in step 2/

The step described above essentially assumes that when a particle reaches the radius rkill, it is equally likely to re-approach the aggregate from any direction. If r kill was actually at infinity, this would be a reasonable assumption. When rkill is merely very large there is a possibility that this will in someway skew the growth of the aggregate away from the random direction that the particle left in.
It seams reasonable that over time, there will be as many particals leaving in any given direction, and his skewing will even out, but to keep the simulation as physical as possible, it is advantageous to set rkill as large as possible.

This, of course, rather defeats the object of rkill in the first place, but it does mean that the limitation is a known, controlled quantity.

Long steps
A further improvement is to realize that once the particle is a significant distance from the aggregate, the minute detail of its movement becomes irrelevant. For any moving particle, there is an even probability for it to reach any point on a circle centred on its current position. Thus it is possible to add another region between the aggregate and rkill in which the particle takes steps long enough to land it back in the normal movement region in a random direction.

Investigations
With the addition of a new subroutine to the code, it is possible to make reliable measurements of the dimentionality of the aggregate. This subroutine is outline below.

Declares that this is a routine to be called by the void command, taking no argmeunts
void dimension()
{
Declares that this routine will contain the variables I,x,y which are integers and Rn,particals_less_than_R, which are doubles ( a type of floating point decimal)
int i,x,y;
double Rn,particals_less_than_R;

counts Rn 10/50ths of the finished aggregates rmax to 40/50ths, in 50ths. This means that the outermost fringes of the aggregate, which are yet to become fully developed are not considered, and the innermost area of the aggregate where there is only a small number of particles to average over is not considered.
for(i=10;i<40;i++)
{Rn=i*rmax/50;
sets the number of particals so far counted to 0
particals_less_than_R=0;
scans through all the squares on the grid
for(x=0;x
[Error: Irreparable invalid markup ('<n;x++)>') in entry. Owner must fix manually. Raw contents below.]

Tital

Abstract

1Introduction
In this report, the construction of two cellular autonoma will be considered in the context of real-world systems that they attempt to model. In the course of the investigation, the autonima will be adjusted to attempt to model the systems under different conditions, and a quantative discussion of how the conditions affect the models will be made.


2Diffusion limited aggregation
DLA is a process in which particles wonder at random on some smooth surface (substrate) before bonding to some defect. Despite the random nature of the growth, it gives rise to characteristic, statistically similar growth patterns around the defect. Various statistical properties of the aggregates, (in this investigation we will concern ourselves mostly with its dimensionality) are dependant on properties of the system; in this investigation these relationships will be explored
In the course of this investigation, values corresponding to binding energy/free energy ratio, and the isotropy of the substrate will be considered. As well as this, various aspects of the model will be adjusted which have no clear physical equivalent, often to the end of proving that the choice of a unphysical option does not necessarily invalidate the results obtained.

In the real world, DLA occurs during the deposition of metals during electrochemical reactions

Algorithm
Basic

To start with, this model will consider the accumulation of partials around a single defect. The most basic Algorithm for producing DLA is outlined below:

1/ Create a blank grid with a single particle fixed in the centre.

2/ Produce a new particle at a radius rstart and a random direction from the initial particle, where rstart is slightly larger than the maximum radius of the aggregate.

3/ Move the new particle in a random direction on the grid by one grid square.

4/ Check if moving particle is adjacent to any fixed particles;
if it isn’t, go to 3
if it is, attach the particle and go to 2

The initial assumption is that this will produce a roughly spherical bundle of particles, however a little extra though or actual implementation will show that it produces something rather more complicated and interesting, as shown in Fig 1

Fig 1: an aggregate

Assumptions
This Algorithm has a couple of problems- it assumes that partials approach the aggregate evenly from all directions (which is reasonable if considering some systems, and less so when considering others.
It assumes that the moving particle never walks off the edge of the grid, despite the fact that the grid can not be infinite. A related assumption is made that there is enough time and computing power to follow the particle as it takes the most circuitous route possible to the aggregate.

Improvements

Thus, to improve the efficiency of the algorithm, it is normal to add another radius rkill at a significant distance from the aggregate, once the wandering particle passes rkill, it is assumed that it will not interact with the aggregate, and it is destroyed, a new wandering particle being added as in step 2/

The step described above essentially assumes that when a particle reaches the radius rkill, it is equally likely to re-approach the aggregate from any direction. If r kill was actually at infinity, this would be a reasonable assumption. When rkill is merely very large there is a possibility that this will in someway skew the growth of the aggregate away from the random direction that the particle left in.
It seams reasonable that over time, there will be as many particals leaving in any given direction, and his skewing will even out, but to keep the simulation as physical as possible, it is advantageous to set rkill as large as possible.

This, of course, rather defeats the object of rkill in the first place, but it does mean that the limitation is a known, controlled quantity.

Long steps
A further improvement is to realize that once the particle is a significant distance from the aggregate, the minute detail of its movement becomes irrelevant. For any moving particle, there is an even probability for it to reach any point on a circle centred on its current position. Thus it is possible to add another region between the aggregate and rkill in which the particle takes steps long enough to land it back in the normal movement region in a random direction.

Investigations
With the addition of a new subroutine to the code, it is possible to make reliable measurements of the dimentionality of the aggregate. This subroutine is outline below.

Declares that this is a routine to be called by the void command, taking no argmeunts
void dimension()
{
Declares that this routine will contain the variables I,x,y which are integers and Rn,particals_less_than_R, which are doubles ( a type of floating point decimal)
int i,x,y;
double Rn,particals_less_than_R;

counts Rn 10/50ths of the finished aggregates rmax to 40/50ths, in 50ths. This means that the outermost fringes of the aggregate, which are yet to become fully developed are not considered, and the innermost area of the aggregate where there is only a small number of particles to average over is not considered.
for(i=10;i<40;i++)
{Rn=i*rmax/50;
sets the number of particals so far counted to 0
particals_less_than_R=0;
scans through all the squares on the grid
for(x=0;x<n;x++) {for(y="0;y&lt;N;y++)" checks="checks" if="if" the="the" currently="currently" considered="considered" square="square" contains="contains" a="a" particle="particle" {if="{if" (grid[x][y]="(grid[x][y]" !="0)" checks="checks" if="if" the="the" currently="currently" considered="considered" square="square" is="is" within="within" radius="radius" rn="Rn" {if="{if" ((x-n/2)*(x-n/2)="((x-N/2)*(x-N/2)" +="+" (y-n/2)*(y-n/2)="(y-N/2)*(y-N/2)" <="&lt;" rn*rn)="Rn*Rn)" if="if" both="both" these="these" checks="checks" are="are" true,="true," increments="increments" the="the" value="value" of="of" particals_less_than_r="particals_less_than_R" particals_less_than_r++;="particals_less_than_R++;" }="}" }="}" }="}" prints="prints" the="the" number="number" of="of" particles="particles" within="within" rn="Rn" and="and" rn="Rn" to="to" the="the" output="output" file="file" fprintf(fp,="fprintf(fp," "%f,="&quot;%f," %f="%f" \n",="\n&quot;," log(rn),log(particals_less_than_r*1.0));="log(Rn),log(particals_less_than_R*1.0));" }="}" }="}" the="the" pairs="pairs" of="of" values="values" that="that" this="this" produces="produces" (logs="(logs" of="of" the="the" no="no" of="of" partical="partical" again="again" can="can" be="be" plotted="plotted" to="to" give="give" a="a" graph,="graph," the="the" gradient="gradient" of="of" the="the" line="line" gives="gives" the="the" dimensionality="dimensionality" of="of" the="the" aggregate.="aggregate." using="Using" the="the" value="value" of="of" the="the" dimensionality="dimensionality" gives="gives" a="a" quantaive="quantaive" value="value" to="to" the="the" growth="growth" of="of" the="the" aggregate,="aggregate," which="which" makes="makes" it="it" possible="possible" to="to" measure="measure" how="how" changing="changing" certain="certain" factors="factors" affects="affects" the="the" process.="process." these="these" factors="factors" and="and" there="there" effects="effects" will="will" be="be" discussed="discussed" in="in" the="the" next="next" section="section" fig="Fig" 2:="2:" the="the" disadvantage="disadvantage" of="of" using="Using" the="the" complete="complete" data="data" set-="set-" note="note" the="the" curve="curve" at="at" the="the" high="high" end="end" of="of" the="the" line="line" (from="(from" uncompleted="uncompleted" aggregation)="aggregation)" and="and" the="the" gaps="gaps" between="between" the="the" trend="trend" line="line" and="and" the="the" points="points" at="at" the="the" bottom="bottom" of="of" the="the" line="line" (from="(from" inaccuracies="inaccuracies" possible="possible" only="only" when="when" averageing="averageing" over="over" a="a" small="small" sample)="sample)" factors="factors" joining="Joining" direction="direction" the="the" first="first" factor="factor" considered="considered" was="was" what="what" constituted="constituted" an="an" ‘adjacent’="‘adjacent’" cell.="cell." either="Either" the="the" partical="partical" only="only" attaches="attaches" to="to" occupied="occupied" cells="cells" on="on" the="the" cardinal="cardinal" points,="points," or="or" it="it" can="can" attach="attach" to="to" all="all" 8="8" cells="cells" around="around" it.="it." this="this" is="is" a="a" relatively="relatively" easy="easy" piece="piece" of="of" coding="coding" to="to" implement,="implement," requiring="requiring" a="a" new="new" button,="button," to="to" change="change" the="the" value="value" of="of" join="join" between="between" 0="0" and="and" 1,="1," thus="thus" selecting="selecting" one="one" of="of" the="the" two="two" joining="Joining" styles,="styles," and="and" the="the" current="current" detection="detection" code="code" to="to" be="be" replaced="replaced" with="with" the="the" section="section" below:="below:" if="if" joining="Joining" style="1" if="if" (join="=1)" {="{" check="check" if="if" any="any" of="of" eight="eight" nearest="nearest" neighbours="neighbours" are="are" occupied,="occupied," if="if" so="so" return="return" “a”,="“a”," the="the" flag="flag" to="to" attach="attach" the="the" moving="moving" partical="partical" if="if" (grid[x+1+n/2][y+n/2]+="(grid[x+1+N/2][y+N/2]+" grid[x-1+n/2][y+n/2]+="grid[x-1+N/2][y+N/2]+" grid[x+n/2][y+1+n/2]+="grid[x+N/2][y+1+N/2]+" grid[x+n/2][y-1+n/2]+="grid[x+N/2][y-1+N/2]+" grid[x+1+n/2][y+1+n/2]+="grid[x+1+N/2][y+1+N/2]+" grid[x-1+n/2][y+1+n/2]+="grid[x-1+N/2][y+1+N/2]+" grid[x-1+n/2][y-1+n/2]+="grid[x-1+N/2][y-1+N/2]+" grid[x+1+n/2][y-1+n/2]="grid[x+1+N/2][y-1+N/2]">0)return 'a';
}

If joining style =10
if (join ==0)
check if any of the neighbours at cardinal points are occupied, if so return “a”, the flag to attach the moving particle
{
if(grid[x+1+N/2][y+N/2]+ /* check if square nearest neighbours occupied */
grid[x-1+N/2][y+N/2]+
grid[x+N/2][y+1+N/2]+
grid[x+N/2][y-1+N/2] >0)return 'a';
}

By setting the joining style to the two different possibilities, and running the programme, it is hoped that it will be possible to obtain characteristic dimension for the two different set ups, thus it should be possible to look at the density of two different aggregates and determine something of the algorithm that lead to them.
By loading the data produced by the program into excel it is possible to perform a full regression analysis on the data.
This not only gives the dimension of the aggregate, but gives a standard error, which is a measure of how accurately a trend line with a coefficient of the dimension would fit to the points.

Unfortunately, this gave the following, somewhat disappointing results.

(Square)Dimention std error (Diagonal)Diagonal std error
1.635717 0.011707 1.542486 0.023991
1.548211 0.03069 1.493954 0.01667
1.513041 0.011111 1.548114 0.023105
1.437263 0.036308 1.556609 0.021111
1.57793 0.026993 1.454859 0.024806
range 0.198454 0.093255

As is readily apparent, there is no significant difference between the range of dimensions of square-attaching particles and diagonal-attaching particles. Even more than that it is apparent that the standard error of each line does little to reflect the range of dimensions that can be produced by identical algorithms.

Joining probability
A change which can be made to perhaps greater effect, is to change the probability of the moving particle sticking. This is achieved by adding an extra check of a random number between 0 and 1 being less than prob, the probability of sticking before returning ‘a’, and a certain amount of extra book keeping to prvent the moving partical from eneering an occupied cell. As the data below and fig 1 shows,

Sticking probablity Dimention
1 1.542486 0.023991
1 1.493954 0.01667
1 1.548114 0.023105
1 1.556609 0.021111
1 1.454859 0.024806

0.1 1.487086 0.016227
0.1 1.517883 0.00667
0.1 1.639559 0.011123
0.1 1.631917 0.015794
0.1 1.558151 0.013197

It is to b expected that since a lower sticking probability allows wandering particles to work their way deeper into the aggregate, it is to be expected that a lower sticking probability will lead to a higher dimensioned aggregate.




Asymtopey

Qualative discussion
Multiple seeds

3Bak Sneppen Model of evolution
Once again this is a cellular autonima, designed to model the evolution of a group of species. The algorithm operates on a grid, each square of which represents a species. The fitness of the species to survive in its current environment is represented by a single number; there is nothing to distinguish between species which fulfil different roles.
To start with each species is assigned a (psudo) random number between 0 and 1 to represent its fitness for survival. From the point, the algorthem operates as follows

1/Select the least fit species (Assumption; species on the brink experience more deaths and hence more intense competition and more rapid evolution than those whose survival is assured)

2/ reassign its fitness randomly.

3/The neighbouring species are those that are have a relationship of some kind. As such the fitness of the neighbouring species is also reassigned at random.

4/ Repeat from 1

Although this model is rather crude and makes some huge assumptions and simplifications, it does produce a rather interesting distribution of fitnesses- no species have less than the critical fitness (which changes with the details of the system) and there is a roughly even distribution of fitnesses amoungst the species above this point. This is shown in fig [BS1]


Fig[BS1] distrubution of fitnesses in a Bak-Sneppen system

Finite size effects.
It is suggested that the shape of the fitness distribution could be affected by the size of the model being considered. This can be easily considered using the code provided. As these experiments were can it became clear that the larger the system, the sharper the cut-off. To determine a quantative value, the critical fitness was defined as being the point where the graph was at its steepest. As is shown in Fig BS2, the rere was little change to the position of th


A more sophisticated approach

In principle it would be possible to get a different measure of the critical fitness by averaging the number of species with a fitness between .5 and 1(which you are sure is beyond the step) and checking where the number of species of a given fitness changes from being less than half this value to more than half this value. This is illustrated in Fig [BS3]


Fig[BS3] A more sophisticated approach to calculating the critical fitness

Changing the meaning of ‘neighbouring’ species
It is possible to conceive of circumstances under which the definition of neighboring species would be different from that first modelled. The number of species that a given species interacts with is not always 4, and so I investigate d what happens if you adjust step 3 of the algorithm so that not only are the nearest neighbors affewcted, but all of those inside the Longer range interactions between species shown in Fig [BS4]


Fig[BS 4] range of interactions between cells in the autonima in this investigation


incease determined
4Summery
4Summery
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

baloonworld: (Default)
baloonworld

December 2017

S M T W T F S
     12
3456789
10111213141516
1718 1920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 7th, 2026 09:06 am
Powered by Dreamwidth Studios