The influence of C.H.Waddington's IUBS Symposiums on Alife research and philosophy

~
MSc Evolutionary and Adaptive Systems
:: Summer Term Thesis ::
C.Coke-Smyth
cc264 at sussex dot ac dot uk

~

 

 

 

 

Villa Serbelloni, Lake Como, Italy
Lake Como: the settings of the Symposiums Towards a Theoretical Biology, 1968-72

 

 

 

 




References

[0] Hal Waddington obit. Nature Magazine.
[1] Waddington, C. H (1968) Towards a Theoretical Biology, Vol 1. Edinburgh.
[2] Waddington, C. H (1969) Towards a Theoretical Biology, Vol 2. Edinburgh.
[3] Waddington, C. H (1970) Towards a Theoretical Biology, Vol 3. Edinburgh.
[4] Waddington, C. H (1972) Towards a Theoretical Biology, Vol 4. Edinburgh.
[5] Schad, W. (1977) Man and Mammals: towards a biology of form. Wardorf Press. New York.
[6] O'Leary, D. (2001) How Greek Science Passed to the Arabs. Goodword Books, India; New Ed.
[7] Adamson, P. & Taylor, R. [eds] (2005) The Cambridge Companion to Arabic Philosophy. Cambridge University Press.
[8] Holmyard, E.J. (1991) Alchemy. Dover Publications Inc. New edition.
[9] Lyell, C. (2005) Principles of Geology. Penguin Classics.
[10] Bortoft, H. (1996) The Wholeness of Nature: Goethe's Way of Science. Floris Books.
[11] Watson, J. (1968) The Double Helix: A Personal Account of the Discovery of the Structure of DNA. Touchstone. New York, 2001.
[12] Gaylord Simpson, G. (1953) The Baldwin Effect in Evolution, Vol. 1, No. 2 (Jun. 1953), pp110-117. Society for the Study of Evolution [http://www.jstor.org/stable/2405746]
[13] Darwin, C. (1998) The Origin of Species. Oxford World Classics. Oxford University Press. New York.
[14] Hinton, G.E. and Nowlan, S.J. (1987) Learning Can Guide Evolution. Complex Systems v1 (1987) pp 495-502.
[15] Arber, A. (1946) Goethe's Botany in Chronica Botanica, Vol 10, No 2. Waltham. Mass. USA.
[16] Spinoza, B. (2005) Ethics. Penguin Classics, Strand. London.
[17] Boden, M. (2006). Mind as machine: A history of cognitive science. Oxford: Oxford University Press.
[18] Cairns-Smith, A. G. (1985) Seven clues to the origin of life. Cambridge: Cambridge University Press.
[19] Boden, M. (2008) D'Arcy Thompson: A Grandfather of A-Life in Husbands, P., Holland, O., Wheeler, M. (Eds) (2008) The Mechanical Mind in History. MIT Press. Cambridge, Massachusetts.
[20] Sacks, O. (1997) The Island of the Colourblind. Random House, Canada.
[21] Thompson, D. (1917/1942) On Growth and Form. Cambridge. Cambridge University Press
[22] Waddington, C. H. (1940). Organisers & genes. Cambridge: Cambridge University Press.
[23] Webb, B. (2008) Animals versus Animats: or why not the real iguana? University of Edinburgh.
[24] Dawkins, R. (1986) The Blind Watchmaker. Penguin. St Ives
[25] Obituary: Christopher Longuet-Higgins http://www.guardian.co.uk/news/2004/jun/10/guardianobituaries.highereducation [Accessed 1st September 2009]
[26] Mayr, E (2001) What Evolution Is. Basic Books. New York.
[27] Maynard Smith, J. (1982d) Evolution and the Theory of Games. Cambridge University Press.
[28] Maynard Smith, J. and Szathmáry, E. (1999) The Origins of Life: From the Birth of Life to the Origin of Language. Oxford: Oxford University Press.
[29] Obituary | Brian Goodwin http://www.guardian.co.uk/theguardian/2009/aug/09/brian-goodwin-obituary [Accessed 1st September 2009]
[30] Dyson, G. ()1997) Darwin Among The Machines: the evolution of global intelligence. Basic Books. New York
[31] Dennett, D., (1998) Cognitive Wheels: The Frame Problem of AI. in Brainchildren, Essays on Designing Minds, MIT Press and Penguin, 1998.
[32] Turing, A. M (1950) Computing machinery and intelligence. Mind, 59, 433-460.
[33] Ray, T. S. 1994. An evolutionary approach to synthetic biology: Zen and the art of creating life . Artificial Life 1(1/2): 179-209. Reprinted *In *: Langton, C. G. [ed.], Artificial Life, an overview. The MIT Press, 1995, 179-209.
[34] Brooks, R. A. (1991) Intelligence Without Reason. In Proceedings of the Twelveth International Joint Conference on Artificial Intelligence, pp 569 – 595. Sam Mateo, California: Morgan Kauffman.
[35] Lieu, H. (1999) Traffic-Flow Theory. [online] Virginia, Turner-Fairbank Highway Research Center. Available from http://www.tfhrc.gov/pubrds/janfeb99/traffic.htm [Accessed 23 January 2009].
[36] Treiber, M; Hennecke, A; Helbing, D (2000) "Congested traffic states in empirical observations and microscopic simulations", Physical Review E 62 (2): 1805–1824.
[37] Fodor, J. (1990) A Theory of Content 1: The Problem. In his A Theory of Content and Other Essays, MIT Press
[38] Gombrich, E (1950) The Story of Art. London: Phaidon
[39] Gombrich, E (1960) Art and Illusion. A Study in the Psychology of Pictorial Representation. London: Phaidon
[40] Harvey, I., P., H., Cliff, D., Thompson, A., & Jakobi, N. (1997) "Evolutionary robotics: The Sussex approach". In Robotics and Autonomous Systems, 20, 207 – 224.
[41] Chapman, A. (2002) Gods in the Sky: Astronomy from the Ancients to the Enlightenment. Channel 4 Books.
[42] Schrödinger, E. (1946) What is Life? Macmillan.
[43] du Sautoy, M. (2003) The Music of the Primes. Harper.
[44] Hardy, G.H. (1940) A Mathematician's Apology, Cambridge University Press.
[45]The Largest Known Primes online at http://primes.utm.edu/largest.html [last accessed 2nd September 2009]
[46] Islam, J.N. (1983). The Ultimate Fate of the Universe. Cambridge.
[47] Simons, G. (1984) Computer Bits and Pieces: A Compendium of Curiousities. Penguin Books. Middlesex.
[48] Marr, D. (1982) Vision: A Computational Investigation into the Human Representation and Processing of Visual Information. W. H. Freeman and Co. San Francisco.
[49] Luria, A. R. (1968). The Mind of a Mnemonist, Harvard.
[50] McDowell, J. (1994) Mind and World. Harvard University Press.
[51] Waddington, C. H. (1961) The Nature of Life. George Allen & Unwin Ltd, London.
[52] Nonaka, I. and Takeuchi, H. (1991), "The knowledge creating company", Harvard Business Review 69 (6 Nov-Dec): 96-104
[53] Neave, Henry R (1990). The Deming Dimension. SPC Press, Inc.
[54] Jowett (1888) Book VII, The Republic of Plato. Third Edition. Clarendon Press. Oxford.

 

 




Appendices

  1. A sketch of the M25 intersection of the A3, discussed during the motorway automaton section: Motorway sketch
  2. Outline of an 'environmental' increasing Prime Complexity: Outline of increasing Prime Complexity
  3. Sketches from some of the genetics ideas of the Symposiums: Genetics sketches from the Symposiums
  4. Source code to the basic Motorway 'Homeorhesis':

    #!/usr/bin/env python

    import pygame
    from pygame.locals import *
    from sys import exit
    from time import gmtime, strftime

    from random import *

    POP_SIZE = 100      # No of vehicles on the road if there's room
    SCALE = 1000        # Speed / Animation scale
    TAU_PARAM = 1.5     # Time of Impact assessment parameter
    AVG_SPEED = 70.0    # Average vehicle speed Normally Distributed
    VAR_SPEED = 20.0    # Variance of speed
    TAIL_DIST = 5.0     # Vehicle matches next vehicle speed at this point
    CLOSE_DIST = 15.0   # Vehicle starts slowing down at this point

    def busy(lane,current,space):
        """Checks *space* available before and after *current* position in a given *lane* """
        for pos,actual,desired in lane:
            if ((pos > current - space) & (pos < current + space)):
                return 1
                
    def tau(lane,speed,current):
        """Calculates Time Of Impact for next car in *lane* """
        for pos,actual,desired in lane:
            if(pos > current):
                distance = pos - current
                speed_of_approach = speed - actual
                if((speed_of_approach)>0):
                    return distance / speed_of_approach
                else:
                    return -1
        return TAU_PARAM + 1

    def output(item,desc):
        f=open('output.txt','a')
        f.write(desc)
        f.write(': ')
        f.write(strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()))
        f.write(', ')
        s = str(item)
        f.write(s)
        f.write('\n')
        f.close
        
    pygame.init()
    screen = pygame.display.set_mode((640, 480), 0, 32)

    # Fill background
    background = pygame.Surface(screen.get_size())
    background = background.convert()
    background.fill((0, 0, 0))

    # Define vehicle appearance
    vehicle = pygame.Surface((1,1))
    vehicle = vehicle.convert()
    vehicle.fill((200,200,150))

    slow_lane = []
    middle_lane = []
    fast_lane = []

    motorway = [slow_lane,middle_lane,fast_lane]

    # Counter for population on screen
    pop = 0

    # Police car variable
    police = 0

    while True:
        
        for event in pygame.event.get():
            if event.type == QUIT:
                exit()
            if event.type == KEYDOWN:
                if event.key == K_x:
                    output(motorway, 'Motorway')
                    exit()
                if event.key == K_s:
                    output(motorway, 'Motorway')
                if event.key == K_p:
                    if (police == 1):
                        police = 0
                    else:
                        police = 1

        # Add vehicles to road if clear and population below limit
        if(pop < POP_SIZE):
            # CLOSE_DIST sets point on screen entry and space each side
            if not busy(slow_lane, CLOSE_DIST,CLOSE_DIST):
                speed =  gauss(AVG_SPEED,VAR_SPEED)
                slow_lane += [[ CLOSE_DIST, speed, speed]]
                # Vehicle defined by [x position on screen, actual speed, desired speed]
                pop += 1

        screen.blit(background, (0,0))

        for y,lane in enumerate(motorway):

            lane.sort()

            # Update vehicles in lane
            for index,[pos,actual,desired] in enumerate(lane):
                moved_lanes = 0
                x_pos = round(pos,0)
                y_pos = 100 + (y*20)
                screen.blit(vehicle,(x_pos, y_pos))

                # For vehicles in lane identify the next position then process any lane / speed decisions
                if(len(lane)>0):
                    
                    # TODO check whether list should be processed in reverse
                    
                    # Vehicle in front
                    if(index+1==len(lane)): # | (len(lane)==1)):
                        next_pos = lane[0][0] + 640.0
                        next_speed = lane[0][1]
                    else:
                        next_pos = lane[index+1][0]
                        next_speed = lane[index+1][1]

                    # Vehicle lane change decisions
                    
                    # Police car flag - changes behaviour to 70 max speed
                    if(police):
                        if(desired>70.0): desired = 70.0
                        
                    # Move down lane?
                    if((actual >= desired) & (y>0)):
                        # next_pos-pos > CLOSE_DIST
                        if((not busy(motorway[y-1],pos,CLOSE_DIST)) & (tau(motorway[y],actual,pos) > TAU_PARAM)):
                            # output(tau(motorway[y],actual,pos),'Tau down lane')
                            # Lane down not busy and next vehicle in current lane is sufficently far away
                            motorway[y-1] += [lane.pop(index)]
                            moved_lanes = 1

                    # Move up lane?
                    elif((actual < desired) & (y < len(motorway)-1)):
                        # next_pos-pos <= CLOSE_DIST # & (next_speed < desired)
                        if((not busy(motorway[y+1],pos,CLOSE_DIST)) & (0 < tau(motorway[y],actual,pos) <= TAU_PARAM)):
                            # output(tau(motorway[y],actual,pos),'Tau up lane')
                            # lane up not busy and vehicle in front too close and slower and
                            motorway[y+1] += [lane.pop(index)]
                            moved_lanes = 1
                    
                    # Stay in lane, update speed and position
                    if not moved_lanes:
                        if(next_pos-pos <= TAIL_DIST):
                        #if(tau(motorway[y],actual,pos) <= (TAU_PARAM/15)):
                            # Tailing vehicle in front, match speed
                            actual = next_speed
                        elif((next_pos-pos <= CLOSE_DIST) & (next_speed < actual)):
                        #elif(tau(motorway[y],actual,pos) <= (TAU_PARAM/3)):
                            # Closing in on vehicle in front, slow down
                            actual = (actual+next_speed)/2
                        elif(actual != desired):
                            # Space available to revert to desired speed
                            actual = desired
                        
                        # Police car flag - changes behaviour to 70 max speed
                        if(police):
                            if(actual>70.0): actual = 70.0

                        # Update position based on new speed
                        lane[index][0] = pos + (actual/SCALE)
                        lane[index][1] = actual
                        # lane[index][2] = desired :: doesnt change
                        
                        # If the image goes off the end of the screen, move it back
                        if(pos > 640.0):
                            lane[index][0] = pos - 640.0

        pygame.display.update()



~
MSc Evolutionary and Adaptive Systems
~last edited: 2009/09/12 15.04
by charles e coke-smyth~
::2008-9::University of Sussex::