TOOM'S PCA The program is designed to model the asymmetric version of Toom's probabalistic cellular automata, in this case a square lattice of n x m sites, each of which can take one of two values. Boundary conditions are periodic. Here the local states are represented by colours. The colour of a square at a next time step depends only a certain probability p (which itself changes with current square colour - a source of possible asymmetry), and the dominant colour c of some preset neighbourhood N of the square at the current time. For red square p is lambda, for white p is nu. Updates happen simultaneously for all squares. If c exists, a square becomes c with probabilty (1 - p), and the complement of c with probability p. The 'tie' button determines what happens in cases when the neighbourhood does not have a preference for a particular colour. The default is that the square becomes any colour with equal probability. Almost all the buttons are divided into those that change the system and its evolution rules and ones that attend to the visuals. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BUTTONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% * Initial Weight on red (equivalent to state 'one'). The default starting position is (statistically) half red half white, though this will almost never be realised exactly * Neighbourhood can be changed by pressing the 'change neighbourhood' button. When that is done a small network comes up, with a sample square crossed with diagonal lines. Press the squares to select/deselect those whose colour (state) will affect the sample square's immediate future. The default neighbourhood is the square itself, its northern and eastern neighbours, though these squares will not show as selected (i.e. in red) the first time the 'change neighbourhood' button is pressed. * If inertia is ON, the square will want to stay itself with probability (1 - p), and change with probability p. If inertia is OFF, the opposite happens: the square changes with probability (1 - p), and changes with probability p. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Visuals, and related buttons: * Framerate controls how many evolutions are displayed per second. * Automatic evolution button makes it possible to switch between different modes of display. Evolution on click makes the system display the result only on the press of the "Run" button. * The system evolving to the next time step, and the display, are different. It is possible to display not every iteration but every other iteration. In this mode the framerate/automatic evolution buttons will also reflect only every second iteration. Note that this does not change the evolution rules, it only picks out certain times to display the system. * The network size can be changed by setting the width and height in terms of the number of the squares. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% coded by Marina Diakonova for Robert MacKay (Warwick Complexity DTC) in 2010. See models by prof. Andrej Toom.