* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Software Documents
Survey
Document related concepts
Transcript
Evolved Virtual Creatures Evolving Virtual Pets March 10, 2001 By Thomas S. Ray Professor of Zoology and Computer Science 1 Software Documentation The software includes numerous dialog windows and menus to control the operation of the system. The controls include buttons, check boxes, radio-buttons, sliders, edit boxes and menus. Each dialog, will be discussed in turn, along with each of its component controls. The Main Dialog The main dialog provides a variety of controls through buttons, check boxes, radiobuttons, a slider, an edit box, and menus. This document will describe the function of each control, beginning with the “Genome” button group. 2 The Genome Button Group When the application starts, the only active button is the Reproduce button, which guides the user to start by pressing this button. Reproduce – Pressing the Reproduce button the first time creates a new creature, and causes the render window to open displaying the animated creature. Reproduce is the button you will use the most. The behavior of this button depends on the radio-buttons to the right of the Reproduce button. The render window is shown below: 3 Random - At first, the Random radio-button is selected, so the Reproduce button will generate creatures with completely random forms and behaviors. Even when you are making children of a selected creature, you can return to making random creatures by selecting the Random radio-button. Selection - Once you have selected a creature (see below) to evolve, the Reproduce radio will switch from Random to Selection. When the Selection radio-button is selected, the Reproduce button will make children of the selected creature. Select - Use the Select button to select the creature currently displayed in the render window (the “current creature”) for evolution. Once you have made your selection, the Reproduce button will make children of your selected creature, with genetic variations. The Reproduce button will reproduce the last creature you selected, even if that creature no longer appears in the render window. If you find a variant among the children that you like, you can select it, and it will become the parent of future reproductions. See Help-Evolution for more information. After making a selection, if you want to produce random creatures, you can click the Random radio-button. Then, clicking the Selection radio-button will return to making children from your last selection. Delete - The software remembers the last N (default to 16) creatures you have created, unless you delete them with the Delete button. If you create a creature you don't like, you can delete it from memory. Review > and Review < - If there is more than one creature in memory, you can review them with the Review > and Review < buttons. The difference between the two buttons is that they go through the list in opposite directions. If after viewing several creatures, you remember one that you would like to select for evolution, you can find it with the Review buttons. The Color Effector Button Group 4 The Color effector button group provides a variety of controls over the expression of color by the creatures. Genetic - When a creature is created, its genome defines a color for each kind of box in its body. These colors never change during the life of the creature. To view these genetically defined colors, select the Genetic radio-button. Neuron - There is a class of neurons in the nervous system that output color values. There are seven kinds of these neurons that vary by which color(s) they output: red, green, blue, red-green, red-blue, green-blue, and red-green-blue. If these neurons are active, they generally will cause the color of the creature to be different from the genetically defined colors. Often, the color values output from the color neurons will vary over time, causing the color of the body to change over time. We can think of this as a way that the creatures have of expressing their "mood". The neuron color effector is perhaps the most interesting color setting, because in this mode, color changes represent a "deliberate" expression by the creature. To view the colors determined by neural activity, select the Neuron radio-button. Joint - The joints between pairs of boxes have three degrees of freedom: yaw, pitch, and roll. If you select the Joint radio-button, the color of each box will be determined by the yaw, pitch, and roll angles of the joint. Yaw controls the red value, pitch controls the green value, and roll controls the blue value. The joint color setting is generally the most beautiful, because the creature is almost guaranteed to change color if it moves. However, there are two version of the joint angle control of the color. The joint angles are controlled by joint angle actuators, which are effectors of the nervous system. The joint angle actuators independently set yaw, pitch, and roll angles for the joint. However, the joints do not instantly change to the angle values output by the nervous system. It may take some time for the conformation of the creature to shift to the angles set by the actuator. In the mean time, the actuator may have set new target angles for the joint. The actual angle of the joint may never reach the target angles output by the actuator. The angles output by the joint angle actuator are called the "natural" angles, which are often different from the "actual" angles of the joint at any time. Actual - If the Joint-Actual radio-button is selected, the color of the boxes will reflect the actual angles on the joint at any time. Because the actual angles always change smoothly from one value to the next, this setting causes smooth changes in color. JointActual is the default color state because it generally gives the most aesthetically pleasing effect. Natural - If the Joint-Natural radio-button is selected, the color of the boxes will reflect the natural angles on the joint at any time. The natural angles are the direct output of the joint angle actuators of the nervous system and can change wildly from moment to moment. For this reason, this setting can cause wild changes in color. 5 Locomotion Button Group The kind of locomotion available to the creature is determined indirectly, by the kind of physics simulated in the environment. This is affected by the controls over the presence or absence of gravity and water, and by whether the ground plane is permeable (see next section). If water is present, the creature experiences fluid drag when moving, and this can make it possible to swim. If gravity is present, and the ground plane is impermeable, the creature will fall onto the ground plane where its movements will cause friction. The friction of body parts moving on the ground plane can cause the creature to crawl across the ground (regardless of whether the ground is visible). If both water and gravity are turned on, it simulates the bottom of a lake or ocean. The creature may swim or crawl across the ocean floor. Gravity - If the Gravity box is checked, gravity will be turned on, if not, gravity will be turned off. If gravity is on, the creature will fall down. Gravity is weak, so the creature will fall slowly. The strength, and even direction of gravity can be altered through the Options-Miscellaneous menu. Water - If the Water box is checked, water will be turned on, if not, water will be turned off. If water is on, movements of the body parts of the creature will create an opposing force, fluid drag. This can permit swimming. The viscosity of the water can be altered through the Options-Miscellaneous menu. Ground Plane Button Group The ground plane serves two purposes: it is a reference plane that makes movements of the creature more apparent, and it is a surface upon which creatures can crawl. Even if a creature does not crawl, the ground plane can be an obstacle that the creature can interact with in other ways. The ground plane can be visible or invisible, permeable or impermeable. Visible - If the Visible box is checked, the ground plane will be visible, if not, the ground plane will be invisible. There is a small red sphere at the origin of the world coordinate system. This sphere remains visible as a small point of reference even when the ground plane is invisible. 6 Permeable - If the Permeable box is checked, the ground plane will be permeable (creatures may pass freely through the ground plane), if not, the ground plane will be impermeable (creatures can not pass below the ground plane). Actually, it is the center of each box that cannot pass below the ground plane. It is a good idea to have the ground plane in the permeable state when creatures are created, because parts of large bodies may be created below the ground plane. This can cause the creature to explode even if it is inherently stable. Speed Slider The speed with which creatures move is determined by how fast the computer is, how good the graphics card it, how many pixels there are in the render window, and by how many bodies there are in the creatures. Greater speeds can be achieved by making the render window small, or by (temporarily) reducing the resolution of the screen (right click on the desktop, then select Properties, select the Settings tab, and adjust the Screen area slider toward the left). The block creatures are inherently low resolution forms, so it doesn't hurt much to reduce the screen resolution. On very fast machines, small creatures may move annoyingly fast. The speed slider is provided to slow down the simulation in such situation. Remember to move the speed slider back to the "Max" position after viewing a creature that moved too fast. Segment Limit Edit Box The value in this box determines the maximum number of boxes in bodies of creatures generated at random. This limit does not affect creatures read in from the Zoo, nor creatures generated as children of the selected creature. The maximum permitted Segment Limit is 67. Randomly generated creatures are often smaller that the Segment Limit. Pull Ball Check Box The x, y, z and a, b, c keys can be used to pull the creatures (by their first and last boxes) along the positive or negative principal axes. However, if the Pull Ball box is checked, these same keys can be use to move a green ball which can be introduced through the Genetic Algorithm dialog. The nervous systems include neurons which can 7 sense the position of the green ball, thus creatures may interact with the ball, and it is convenient to be able to move the ball at will. The File Menu The File menu provides the means of reading genomes from the Zoo, and saving genomes in the Zoo. These functions are discussed in some detail under Help-The Zoo. By default, Read will open the Open File-Selection dialog, configured to access only genome files, which have the .gen extension (see below). However, the Files of type: drop-down allows a choice between .gen files and .txt files: 8 When the .txt options is selected, the use has access to files that contain lists of genomes: If the user selects one of the file lists, every genome in the list will be loaded into memory. 9 The Options Menu There are currently twelve options in the Options Menu. Each of these will be discussed below. Collisions - In the "real" world, boxes cannot pass through one another. In the virtual world, anything is possible. To prevent boxes from passing through one another requires collision detection, a rather difficult task. By default, this software does not attempt collision detection (the None setting). However, two kinds of collision detection have been implemented: Fast and Slow. Neither of these methods are satisfactory, and it is recommended that they not be used. None - The default conditions, no collision detection. Parts of creatures can pass freely through one another. Fast - The fast collision detection method only detects collisions between spheres embedded in the center of the boxes. The diameter of the spheres is equal to the shortest 10 side of the box. For cubes, this provides very good collision detection. For boxes whose sides have very unequal lengths, it provided very poor collision detection. Slow - The slow collision detection method attempts to do a very rigorous collision detection reflecting the actual shapes of the boxes. In this method, boxes joined by joints are permitted to inter-penetrate, to allow free movement of the joints. However, nonjointed pairs of boxes are not permitted to interpenetrate. Turning on this option tends to cause creatures to explode. Show Joints - When this option is turned on, small red spheres are placed at the point where two boxes are joined in a joint. This was done during the development stage to help verify the proper placement of the joints. The joints can be most easily viewed with wireframe rendering (use the F2 key). This tool is useful for getting a more clear understanding of the morphology of the creatures. Follow Creature - When this option is turned on, the camera will follow the creature if it moves. If this option is turned off, the camera will not follow the creature. When the camera does not follow the creature, you can still use some of the hot keys to keep moving creatures in view (i.e.: the four arrow keys, and the keys "u", "n", "h", "l", "i", and "o"). Morphology – The morphology of creatures is normally based on a directed graph which is generated at random. However, during the development of the software, before the random graph morphology was implemented, a simpler linear morphology was implemented (called Snakes). The Snake code has not been preserved, and the Snakes are no longer available. The Random and Linear morphology options operate as a radio-button, only one can be selected at any time. Selecting the Snake morphology will cause an error. Random – If the Random morphology option is selected, creature morphology is based on randomly generated directed graphs. Random creatures include randomly generated nervous systems. 11 Linear – If the "Linear" morphology option is selected, creature morphology is restricted to linear chains of boxes, and include at most two (randomly chosen) articulating joints, which oscillate according to one of seven patterns, depending on which combination of the three joint angles (yaw, pitch, roll) are varying. These "Snakes" do not include nervous systems. The Snakes are no longer available. Indirect Recursion – This option defaults to off, because it is still under development and is not yet producing good results. I recommend that you leave it off. That said, let me explain the function of this option. If a box connects to itself, it forms a direct recursion, and an infinite loop that will consume the limit of boxes allowed (Segment Limit) in forming a chain of boxes of the same kind. It is easy to identify direct recursion, and once identified, the number of boxes in the chain can be limited. There is a genetic trait that determines the limit on recursion. In addition, a variety of gradients are applied along recursive chains, allowing successive boxes to change gradually in size, shape, color, joint angles, etc. If box A connects to box B, and box B connects to box A, that forms an indirect recursion, and another infinite loop (indirect recursion can involve more than two boxes). It is more difficult to recognize indirect recursion, but the code has been implemented, and is turned on by checking "Indirect Recursion" in the options menu. Once "Indirect Recursion" has been checked, indirect recursions will also be limited by the genetically determined value, and gradients will be applied along the recursive chain. This has the tendency to make forms more bushy, less snake-like. However, when gradients are applied to these indirect recursive chains, they have a high probability of exploding. It will take some time to identify which values of which gradients tend to cause explosions so that this explosive behavior can be reduced. In the mean time, I recommend that you keep this option turned off. Mutation Parameters: A complex set of dialog windows has been created to display and permit control of a large number of parameter that affect the random generation of genomes, and the mutation of genomes. We will explain each dialog and its controls. Adjust Mutation Parameters 12 The main mutation parameter dialog permits the user to control the relative numbers of mutations affecting the brain and the body, and the total number of mutations in each reproduction. In addition, it permits the user to save custom mutation profiles to files on disk, and to retrieve previously store mutation profiles, or to restore the default mutation profile. It also provides entry into additional mutation parameter dialogs that provide more detailed controls. The Morphology and Behavior fields determine the relative probability for mutations to affect the body and the brain (respectively). The default values are 1 and 1, indicating that there is an equal probability for mutations to affect the body and brain. If the Morphology value is left as 1, but the Behavior value is changed to 7, then one eighth of mutations will affect the body, while seven eighths will affect the brain. The NumMutations field determines the actual number of mutations that will be applied to each new genome produced. The NumMutations field is not relevant to genomes produced at random, but only applies in the case where a parent genome has been selected, and is being reproduced with mutations. The Adjust Mutation Parameters dialog, as well as other dialogs that will be introduced below, permit the user to change numerous mutation parameters. The Restore Defaults button will reset all mutation parameters to their default values. After the use has changed mutation parameters, it is possible to save the complete set of mutation parameters to a file (which the user will name), by using the Mutation Parameter Files – Save button. Later, this set of mutation parameters can be quickly implemented by reading the saved parameters from disk, using the Mutation Parameter Files – Read button. The Adjust Morphology Parameters button will open the Morphology Mutation Parameters dialog (shown below): 13 The Morphology Mutation Parameters dialog allows access to all mutation parameters that affect the body. This dialog also provides a view of the genetic organization of the Creature. Each parameter will be discussed below. The Morphology field affects the same parameter that was available through the field of the same name in the Adjust Mutation Parameters dialog. The Morphology field affects the relative probability for mutations to affect the body and the brain. The definition of the genome begins with the number of segments. The first field (2) specifies the relative mutation probability of this gene. This mutation probability is relative to the other genes (or gene groups) that are at the same level of indentation in the dialog (CsegmetnLimit, RootSegmentG, CindirectRecursion, ActuatorStiffness, SBox, NumConnections, GradientR, and Connection). The second and third fields (2, 16) specify the minimum and maximum number of segments. Mutation generates a uniform random number from the minimum to the maximum. The user is free to adjust any of the three parameters that affect mutation of the NumGenoSegments gene. 14 This gene places a hard limit on the number of segments that are permitted in the phenotypic body (not the genotype). The edit box (16) specifies the relative probability of mutation of this gene, not the value of the gene. Mutation of this gene causes a proportional change in the value, in the range from half the current value to twice the current value (but limited to no more than 67 segments). This gene specifies which of the NumGenoSegments segments specified in the genome will be the root segment from which connections are traced when the phenotype is developed from the genotype. The edit box (1) specifies the relative probability of mutation of this gene. Mutations simply choose one of the NumGenoSegments segments at random. This gene is currently inactivated as it relates to gradients along indirect recursions, which cause an unacceptable likelihood of explosion. The actuators that manipulate yaw, pitch, and roll of joints act as torsional springs, which have a stiffness and a damping, that are specified by this gene. The first edit field (16) specifies the relative probability of mutating this gene. The second and third fields indicate the minimum and maximum values for this gene. 15 The SBox edit field specifies the relative probability of mutation of any of the genes in the group of genes that specify the size, dimensions, and color of the box that makes up a segment. Mutation probabilities are nested. The probability of mutating the box genes is grouped with the genes at the same level of indentation (the are listed above under NumGenoSegments). If the SBox group is selected for mutation, then the three genes or gene groups at the next level of indentation (Size, Sides, Color) are selected for mutation with the relative probabilities indicated by the first edit field associated with each one. If at this level, Sides is selected (for example), then one of the three side genes (Depth, Width, Height) must be selected, with the relative mutation probabilities indicated in the first edit field by each one. Parameters such as SBox, Sides, and Color specify groups of genes, while others specify specific genes (Size, Depth, Width, Height, Red, Green, Blue). Parameters that specify groups of genes will always provide a control over the probability of mutating that gene group, relative to other genes or groups at the same level of indentation. Parameters that refer to specific genes always include a field to specify the relative probability of mutation, and then usually have two additional fields to specify the minimum and maximum values of the gene, between which mutation generates values at random. Each box (after the root box), will be connected to one parent box. In addition, each box can optionally be connected to child boxes. The NumConnections gene specifies the number of daughter boxes that a specific box can connect to. The first field (4) specifies the relative probability of mutation of this gene, and the second and third fields specify the minimum and maximum number of connections (0 to 3). This parameter affects the probability of mutations to the Recursion gene group, which sits at the bottom of the genetic hierarchy. This parameter was added at this highest level of indentation to increase the probability of mutation in this interesting but deeply nested gene group. The Connection gene group is a large and complex group of genes that affect properties of the connections between boxes. A connection between two boxes must specify which (child) box to connect to, and furthermore, the location of the joint on both the parent and the child box, and the resting angle between the two boxes. In addition, if a genotypic box connects to itself, thereby generating a recursive chain in the phenotype, then the connection must specify the properties of the recursion, such as the limit and any gradients. The relative probability of any of the genes of the Connection group being selected for mutation is determined by this parameter. If this gene group is selected for 16 mutation, then the selection of a specific gene for mutation must descend to the next level(s) of indentation, as shown in the Connection group below: The specific portions of the Connection gene group are reviewed below: The location of a joint on a box includes a specification of one of the six faces of the box, as well as the x and y coordinates of the specific point on the face where the joint 17 attaches. The ParentPosition group specifies these three parameters for the location of the connection on the parent box. Because boxes may connect to more than one child box, this parameter specifies which of the child boxes the connection applies to. The ChildPosition group specifies the face and x and y coordinates on the face of the position of attachment of the joint to the child box. There is a single resting joint angle between the two boxes. The Yaw, Pitch and Roll of the joint are specified in the ChildOrientation gene group. A connection can specify that the size of the child box is scaled by some factor. This parameter sets the range of the factor and its probability of mutation. Bilateral symmetry can be implemented through a reflection operator. currently implemented imperfectly through this parameter. This is This parameter is not implemented yet, but permits that attachment of a unique segment at the end of a recursive chain. 18 The Recursion group includes specific genes that control the limit on recursion, RecurseLimit, and the number of gradients applied along the recursion, RecurseNumGradients. Because there may be more than one gradient applied along a recursion, there will actually exist a variable length list of genes controlling the specific gradients involved. The Gradient group, includes two parameters, GradientCharacter and GradientValue, which determine the relative probabilities of mutating the specific kind of gradient being used, or only the quantitative value of the gradient. The AdjustParameters button will open a dialog that displays the eighteen classes of gradients, and the mutation probabilities and minimum and maximum values associated with each. 19 Behavioral Mutation Parameters The Behavioral Mutation Parameters dialog provides access to all the parameters that affect mutations of the “brain”, the circuit that controls movements and color changes of the creatures. The Behavior field controls the probability of mutating the brain, relative to the body. It is the same parameter that can also be set in the Adjust Mutation Parameters dialog. 20 Each creature contains one “local net” in each box of the body, and one “global net” which is independent of the boxes in the body. The 1:NumUsedGenSeg check box affects the probability of mutating the global net relative to the local nets. If the box is checked, then the relative probabilities are based on the relative numbers of the two kinds of nets, such that all nets have an equal probability of being affected by mutations. This is the default. However, if the box is unchecked: The user can directly determine the relative probabilities of mutations affecting the global or local nets. The RandomNet field does not control a gene, or gene group, but rather the probability of a certain kind of genetic operation: completely randomizing a neural net. Just as the first step in the genetic specification of the body is to determine the number of boxes, the first step in the genetic specification of a neural net is the specification of the number of neurons. The NumNeurons field controls the probability of mutating the number of neurons in a net, and the range of random values that mutations can generate. When determing the number of neurons in a global net, the range of values is set relative to the range of values specified in NumNeurons. The global net is allowed to have a wider range of values than the local nets. The first field of the GlobalMultiplier parameter determines the minimum number of neurons allowed in a global net, as a factor of the minimum allowed in a local net. The default is 0.5, indicating that a global net could be as small as half the size of the smallest local net. The second field shows the maximum number of neurons allowed in a global net, as a factor of the maximum number allowed in a local net. The default is 8, indicating that a global net could have as many as eight times as many neurons as the largest number allowed in a local net. The Neuron field controls the probability of mutations affecting the Neuron gene group: 21 I will explain each of the components of this group of controls. The individual neurons have been divided into three classes based on how many inputs they receive from other neurons. These groups are referred to as the OpClass. The three groups are Leaf, which takes no inputs from any other neuron, UnOp which takes one input from another neuron, and BinOp which takes inputs from two other neurons. The OpClass field determines the probability of mutations affecting the OpClass, relative to the other parameters at the same level of indentation (OpCode, Constant, Synapse). 22 If mutation will affect the OpClass group, then one of the three groups must be chosen. The Leaf, UnOp, and BinOp fields present the relative probabilities of mutations affecting these three groups. The default values of these three probabilities have been set to the number of different types of neurons that have been defined in each group, with the result that all types of neurons have an equal probability of being generated by a mutation of the OpClass. It should be understood that the three probabilities, Leaf, UnOp, and BinOp, have no affect on what neuron is chosen for mutation, but rather affect what OpClass will result from a mutation of the OpClass of whatever neuron is chosen. Each of the three OpClass groups has an associated button: Adjust Leaf Parameters, Adjust UnOp Parameters, and Adjust BinOp Parameters. These three buttons open additional dialogs that specify the relative probabilities for mutation to generate the different kinds of neurons in each OpClass. The Leaf Mutation Parameters dialog lists the twenty-five kinds of Leaf neurons. These include the twenty-two kinds of sensors, as well as neurons that output random values, constant values, and oscillating values. The value in the edit field by each kind of neuron indicates the relative probability of that kind of neuron being generated by a mutation. 23 The UnOp Mutation Parameters dialog lists the thirty-four kinds of UnOp neurons. Each of these neurons takes one input, performs some operation on the input (such as taking the log or the absolute value), then outputs the result. The value in the edit field by each kind of neuron indicates the relative probability of that kind of neuron being generated by a mutation. 24 The BinOp Mutation Parameters dialog lists the twenty-seven kinds of BinOp neurons. Each of these neurons takes two inputs, performs some operation on the inputs (such as adding or multiplying the two values), then outputs the result. The value in the edit field by each kind of neuron indicates the relative probability of that kind of neuron being generated by a mutation. The OpCode field specifies the probability of mutations affecting the OpCode, relative to other parameters at the same level of indentation. When OpCode is mutated, the OpClass does not change, but the OpCode changes to one of the other neuron types in the same OpClass. The Leaf Mutation Parameters, UnOp Mutation Parameters, and BinOp Mutation Parameters dialogs list the many different neuron classes (OpCodes) for each of the three OpClass groups (25, 34, and 27 respectively). Each neuron has a floating point Constant associated with it. At present, this constant is only used to provide the initial result value that a neuron outputs before it processed its first inputs. The first Constant field determines the relative probability of mutating this gene, and the next two fields determine the minimum and maximum values of the constant. The Synapse group contains all the parameters that control mutations that affect the connections between neurons. Each neuron specifies where its inputs come from. Neurons do not specify where their outputs go to. In order to specify the source of an input, we must determine which neural net, and which neuron within the neural net. Each box in the body contains a neural net, and there is one “global” net not associated with any box. In practice, inputs to neurons can come from one of four pools: the same net, the global net, the net in the parent box, and the net in one of the child boxes. Neurons can connect only to neurons in their same box, or neurons in boxes to which their box makes a connection (joint) with. The exception to this rule is that the global neurons can make connections to any neuron anywhere. 25 The NeuronIndex field determines the relative probability of mutating which neuron in the source net is used as input. When the NeuronIndex is mutated, all neurons in the source net have an equal probability of being chosen for connection. In the case that the net that provides the source of a connection is in a child box, there may be a need to specify which child box, because there can be more than one child box. The ChildSegmentIndex field determines the probability of mutating which child box is used for connection. When this parameter is mutated, all child boxes have an equal probability of being selected for the connection. If there are one or zero child boxes this gene has no effect. The ConnectToPool field determines the probability that mutation will switch a connection between the four source pools: Global, Child, Parent, and Self. When mutation affects the source pool, the relative probability that each of the four will be selected for the connection is determined by the field next to each of the four. Body Shape – The 1999 version rendered all body parts as rectangular boxes. The 2000 version introduces the possibility to render the rectangular Boxes as Ellipsoids of the same dimensions. In many cases the Ellipsoid rendering gives a more organic and beautiful appearance. However, the Ellipsoid renders more slowly, so Box is the default setting. The choice of Body Shape does not affect the fluid dynamics or any aspect of the physics of the system, it is only a difference in the rendering. 26 Genetic Algorithm A genetic algorithm has been implemented to select for the ability to follow a ball that moves at random with respect to the creature. Creatures that have been evolved with the GA show “purposeful” behavior, which enhances their empathetic appeal. The ball following task was chosen, because the resulting creatures appear to be “attracted” by the ball. We can imagine that the ball could be replaced by another creature, such that creatures exhibit an attraction for one another. Or the ball could be replaced by the user’s avatar so that the creatures would exhibit an attraction for the user. This could lead to the evolution of virtual pets that show affection for the user. The Genetic Algorithm dialog provides all the controls needed to use the GA. We will introduce and explain each control available through the Genetic Algorithm dialog. 27 The Start With Creature radio-button group provides four different methods to start the GA. The default setting is Random. With this setting, the GA will generate and evaluate the number of genomes specified by the Population Size (default to 512) field. Each genome will be evaluated for the number of time steps specified in the Time Steps field (default to 4800). During this evaluation period, the ball will move into the number of different positions specified by the Number of Positions field (default to 6). After all (Population Size) of the genomes have been evaluated, they will be ranked by fitness, and the least-fit half will be discarded. The remaining half will be reevaluated for the same number of Time Steps as before. The newly computed fitness value will be averaged with the previously computed fitness value(s). Then the remaining half will be ranked by their average fitness values, and the least-fit half will be discarded again. This cycle will be repeated until the population has been reduced to the size specified in the Number Selected field (default to 16). If Population Size is set at 512 and Number Selected at 16, this will result in the final sixteen genomes each having been evaluated five times (by default, each of the five evaluations would involve six ball positions over 4800 Time Steps, for a total of thirty ball positions over 24,000 time steps). These (sixteen by default) genomes form the seed population for the evolution of the GA. When the Start With Creature radio-button is set to Current, the creature currently displayed in the render window will provide the seed genome for the GA. This seed genome will be replicated Number Selected – 1 times, to form the seed population of Number Selected genomes (the seed genome is retained in the seed population). The Num Mutations field (default to 8) specifies the number of mutations introduced into the genome in each reproduction. Each of the Number Selected genomes in the seed population will be evaluated the number of times specified in the Num Evaluations field (default to 5). When the Start With Creatures radio-button is set to All, all of the genomes currently stored in memory will be used in the seed population. Each genome will be evaluated the number of times specified in the Num Evaluations field. When the Start With Creatures radio-button is set to Restart, the GA will read a log file saved in a previous run, and will continue that run. When the user clicks the Run button, they will be prompted to select the log file to use in restarting the run. The Termination By control group determines when the GA will terminate automatically. By default, the Cumulative Number radio-button is selected, which causes the GA to terminate when the number of genomes specified in the edit box have 28 been evaluated (exploding genomes are not counted). If the Generations radio-button is selected, the GA will terminate after the specified number of generations. Generations are not discrete in this GA, so a generation is counted when Number Selected new genomes have been recruited into the population (recruitment is explained elsewhere). The green ball is used to select for the ability to be attracted (to follow). The green ball moves at random with respect to the creature. The Object Movement radio-button group controls one aspect of the movement of the ball. The default setting is Random, which means that the x, y, and z coordinates of the ball are all chosen completely at random each time the ball moves. In this mode, the position of the ball on the three principal axes are determined independently. The position of the ball on each axis can range from minus Object Distance (default to 6) to plus Object Distance. However, the ball is excluded from the –1 to + 1 range in each axis. In fact the ball position is set by choosing a uniform random variate between 1 and Object Distance, then randomly choosing between positive or negative values. The same method is used to set the position on each of the three axes. When the Object Movement radio-button is set to Random Six, the ball will move randomly to positions on each of the six principal axes (+x, -x, +y, -y, +z, -z). The position on the axis is determined by generating a random number between 1 and Object Distance. In every six ball positions, all six principal axes are guaranteed to be visited, but the order of visitation is random. When the ball moves, the maximum position that it can occupy on each axis is determined by the Object Distance field (default to 6). The fitness evaluation takes place over a period of time specified by the Time Steps field. During this period of time, the ball will move so that it occupies the number of random positions specified by the Number of Positions field (default to 6). The evaluation interval will be divided evenly so that the ball spends approximately equal amounts of time at each position. Population Size determines the initial number of random genomes to be generated and evaluated in the case that the Start With Creature radio-button is set to Random (default to 512). 29 Num Mutations determines the number of mutations that are applied to each daughter genome produced by the GA (default to 8). The MinNumSegments field sets a lower limit on the number of boxes that are allowed in the phenotypic bodies of the creatures (default to 8). If a creature is generated with fewer boxes, it will be rejected. The MaxNumSegments field sets an upper limit on the number of boxes that are allowed in the phenotypic bodies of the creatures (default to 16). If a creature is generated with more boxes, it will be rejected. During the fitness evaluation, the creature gets positive points for moving towards the ball and negative points for moving away from the ball. However, the Minimum Approach field allows the user to specify a minimum distance threshold for assigning positive fitness points (default to 0.0001). This prevents creatures from accumulating fitness when their positive movements are infinitesimally small. The Leaf class of neurons includes three separate types of neurons that are able to sense the position of the ball. The three classes of neuron are listed in the lower right of the Leaf Mutation Parameters dialog window: AttractorX, AttractorY, and AttractorZ. The probability that mutation of a Leaf neuron will result in one of these neurons which can sense the ball are specified in the Leaf Mutation Parameters dialog. However, it is recognized that in order to follow the ball, the creatures presumably need these neurons. Therefore, the GA dialog provides the Sensor Prob field as an easy way to increase the relative probability of generating the ball-sensing neurons through mutation. This default value is eight, which causes the probability of each of the three ball-sensor neurons to be set to that value. This function can be confirmed during the running of the GA by opening the Leaf Mutation Parameters dialog. The values show in the fields associated with AttractorX, AttractorY, and AttractorZ should match the value in the Sensor Prob field. 30 The Number Selected field determines the size of the population that is maintained for the duration of the GA (default to 16). The Time Steps field determines the number of time steps over which the fitness is evaluated (default to 4800). While the duration of each fitness evaluation is determined by the Time Steps field, before a creature can be recruited into the population (of Number Selected genomes), it must be evaluated Num Evaluations times (default to 5). The fitness is independently calculated Num Evaluations times, and then averaged. In order to be recruited into the population, the average fitness must be greater that the fitness of the least fit genome in the current population. In that case, the least fit genome will be replaced by the newly recruited genome. The initial parameters of the GA (as set in the Genetic Algorithm dialog) are recorded in a file of the name indicated in the Name: field, with the .log extension. The .log extension is automatically added and should not be included in this edit box. This file will also contain a log of all the genomes recruited into the population. The Time – Generation – Distance output fields monitor the progress of the GA. The Time: field indicates how many time steps have elapsed in the current fitness evaluation. The Generation: field indicates how many generations have elapsed in this GA run (a generation is counted when Number Selected genomes have been recruited). The Dist: field indicates the current distance between the ball and the center of mass of the creature. This is the distance by which the fitness is calculated. The Fitness output fields monitor the progress of fitness during the run of the GA. The Max: field shows the maximum fitness value achieved by any genome during the run. The Min: field show the lowest fitness of the Number Selected genomes in the current population. The Current: field shows the moment-to-moment fitness of the 31 genome currently being evaluated. The Current: field is recalculated and updated after each time step. The Number output fields monitor aspects of the number of genomes evaluated. The Cumulative: field reports the total number of genomes evaluated in this run of the GA (exploded genomes are not counted). The This Gen: field reports the number of genomes evaluated in this generation (where generations are counted when Number Selected genomes have been recruited). The Recruited: field reports the number of genomes recruited so far in this generation. The Run button starts the GA running, with the parameters set in the Genetic Algorithm dialog. The GA typically runs for long periods of time. Most of the time, the user will not be watching, so rendering will not be necessary. The Rendering button toggles the rendering on and off. Turning off of rendering greatly increases the speed of the GA. After the GA has run, it is fun to read the evolved genomes from the Zoo and watch them follow the ball. Therefore there needs to be a way of introducing the ball even when the GA is not running. The Object button will cause the ball to appear in the render window. Used in this way, the ball has no connection to the GA. However, the Object button has been placed in the Genetic Algorithm dialog because the behavior of the ball will be affected by the Object Movement radio-buttons, and by the ratio of the Time Steps and the Number of Positions fields, and by the Object Distance field. The Cancel button allows the user to exit from the Genetic Algorithm dialog without running the GA. The File menu of the GA is currently not used. 32 The View menu of the Genetic Algorithm dialog provides access to five tools that aid in the post-mortem analysis of the results of the GA run. The analysis provided by each of these tools will be explained and illustrated below: The Fitness tool generated a file which contains a line of data for each genome that was recruited into the population. There are two data columns. The left column indicates the count of genomes evaluated, and the right column contains the fitness of that genome. The graph above illustrates how the data looks when it is plotted as a scatter diagram in Excell. This show how fitness changes over time during the run. Note that time is plotted on a logarithmic axis. When the fitness tool is selected, the user will be prompted to select the input file, which should be a .log file containing the history of a GA run. 33 The Activity tool utilizes an analytical technique developed by Mark Bedau to visualize waves of adaptive activity during evolution. The tool writes a file to disk, and also generates a visualization of the data. During the GA, each gene in each genome of each creature is marked with a counter. When the creature reproduces, the counters are copied from mother to daughter, unless the genes are mutated. Mutated genes are assigned new unique counters. The visualization shows the integral of gene frequencies over time. The Activity visualization window includes three buttons and thrity-five check boxes in the upper-left corner. 34 The thirty-five check boxes correspond to the thirty-five classes of genes that make up the genomes of the creatures. Each class of genes is displayed in a different color, and each class can be turned on or off. In addition, the three buttons permit the clearing or resetting (turning off and on) of all classes of genes, or only those of the brain or the body. The three buttons can be combined with the thirty-five check boxes to determine which sub-set of genes to view. The close-up of the buttons and check boxes illustrates the use of the Clear Body button which turns off the display of all genes affecting the body, and facilitates the viewing of only those genes that affect the brain. The Activity visualization above illustrates the use of the individual check boxes, which permits the viewing of the evolutionary activity patterns of selected genes. In this example we are visualizing only those three genes that affect connections between neurons. When the user selects the Activity tool, they will be prompted to specify the name of an input file. The Open file selection dialog will default to looking only at files with the .txt extension. Initially, the user should use the Files of type: drop down to select the .log extension, and select the log file of the GA run that they wish to analyze. The user will also be prompted for the name of a file in which the Activity output will be saved. The Activity file will have a .txt extension, and later the user can select this file to more rapidly view the Activity statistics. 35 The Convergence tool looks back thirty-two recruited genomes, and determines how many ancestral genomes there are for the current population of Number Selected genomes. The maximum convergence is the case in which there is only a single genome ancestral to the entire current population. The minimum convergence is the case that every genome in the current population has a different ancestral genome. A high convergence (few ancestors) is an indication of high evolutionary activity. Genomes that contain innovations that bestow a relatively high fitness will take over the population. The convergence data is displayed in red above, on a plot of fitness data. 36 The Ancestry tool finds the last recruited genome in a GA run, and traces its ancestry. It then writes a file that contains a list of the genomes in the ancestry, and it loads all of those genomes into memory so that the evolutionary sequence can be viewed in the render window. The figure above highlights the ancestry in red, in a plot of fitness data. 37 The Fitness Change tool examines the recent ancestry of each genome that is recruited, and outputs a file that lists the change in fitness between the new recruit and its parent, grand-parent, and great-grand-parent. The fitness change data is displayed above in red, together with the fitness data in blue. The GA includes an option to run a Null Model. In the Null Model, there is no selection. Creatures are chosen for reproduction at random, every genome evaluated is recruited, and the genome to be replaced by a recruited genome is chosen at random. The Null Model is used to help in distinguishing evolutionary patterns due to selection from patterns due to random effects. 38 Miscellaneous The miscellaneous dialog provides control of a mix of features, which will be detailed below. Control of Gravity – By default, The Strength of Gravity is: –0.1, which indicates a weak downward force. The The Strength of Gravity is: field of the Miscellaneous menu provides the opportunity to experiment with different values of gravity. Control of Viscosity – The simple fluid dynamics algorithm provides an opposing force on surfaces moving against the simulated water. The opposing force is normal to the surface, and proportional to the normal velocity vector and the area of the surface. The Viscosity of Water is: implemented through a constant that is multiplied by the surface area and its velocity vector. By default The Viscosity of Water is: 1, and this value can be changed through the Miscellaneous menu. Control of the Number of Creatures Held in Memory – By default, The memory can hold 16 Creatures. The simulation will store up to the last sixteen creatures that have appeared in the render window. The number of creatures that can be stored in memory is adjustable through the The memory can hold field of the Miscellaneous menu. 39 Control of Rendering – If there is no need to view the creatures during a run, such as when a GA is used, the rendering system can be completely avoided by the use of the Rendering check box in the Miscellaneous menu. This setting should be made before the run is begun, to avoid initiation of the rendering system. Control of Neural Weights – At the time of the writing of this report, a method of implementing Neural Weights has been provisionally implemented as an experiment. The Neural Weights field of the Miscellaneous menu provides a way to turn this option on and off. Control of the Sound – By default, a notification sound is made when a creature is about to be recruited by the GA. The sound option can be turned off, and the specific sound can be changed through the Sound control group of the Miscellaneous menu. 40 Log Data The Log Data dialog permits a variety of ways to log data to files on disk, either on the dynamic activity of the running simulation, or the structure of the genotypes and phenotypes. The Log Data dialog includes several independent groups of controls that will be described below. 41 The Log Dynamic Data control group permits data on the position of boxes, and/or joint angles of the creature that is currently active in the render window, to be written to disk at each time step. Alternatively, the tool permits the time to be written to disk at intervals determined by the Time Interval field. In order for any of these logging functions to be activated, the Log Data box must be checked. The dynamic data logging functions take place over a time interval (measured in simulator time steps) specified by the Start Tick: and Stop Tick: fields. The dynamic data logging has two mutually exclusive functions: logging of positions and joint angles, or a timer. The control groups do not currently enforce the either or logic, so the user should be cautious to avoid attempting to utilize both the timer and position/angle logging functions simultaneously. The logging of position and joint angle data has three options, each of which can independently be turned on or off. The Centroid Position check box controls logging of the centroid position of the entire body of the creature. The Segment Positions check box controls logging of the positions of each box in the body. The Segment Joint Angles check box controls logging of the yaw, pitch, and roll angles of all of the joints connecting all the boxes of the body. The Log Neural Nets control group supports the generation of a file on disk that contains a complete description of the neural circuitry of the creature in the render window. The Log Genome and Log Phenotype check boxes should be implemented as radio-buttons, because they are mutually exclusive. The Log Phenotype check box controls the generation of a file that lists all the neurons in all the segments of the body, and their connections to other neurons. This reveals the complete neural circuitry of a creature. 42 The Log Genome check box controls the generation of a file that attempts to do the same for the genotype rather than the phenotype. However, this function has proved unsatisfactory, because the relationship between the neural genotype and the neural phenotype is too complex. The structure of the neural net is not fully specified in the genotype, and thus it is not practical to attempt to view the structure of the neural net at the genotypic level. The Actuator Only check box determines if the listing of the neural net includes all neurons that are used, or only those that are used in controlling the actuator joints. The Log Entire Genome control group provides a facility to generate a file on disk with a complete listing of every gene in the genome. The Used Only check box will limit the output to those genes that are “used”, in the sense that they are expressed in the phenotype. Used genes are essentially exons, while unused genes are essentially introns. The Log Actuator Inputs control permits the generation of a file in which the neural inputs to the joint actuators are completely traced and reported. While the data is normally generated for the creature that is currently active in the render window, the Find Input File List button provides a facility to apply the logging function to a list of genome files (.gen extension). The OK button starts the logging function, while the Cancel button allows the exit of the Log Data dialog without causing the logging function. 43 Network The Network dialog provides a networked version of the aesthetic selection model. Experience showed that it was possible to evolve creatures with aesthetic selection on a single computer, by viewing and evaluating one creature at a time. However, the process was somewhat tedious. Therefore a networked version was implemented to permit the simultaneous use of any number of computers to present genetically related creatures for selection. This greatly accelerates and facilitates the aesthetic selection process. The image above show a user interacting with an eight-machine network. The Find IPMap File button provides the first step in using the network version. This button will open an Open File-Selection dialog restricted to files with the .map extension. You will need a file of this kind that lists the IP addresses of the computer that will be used in your networked implementation. After the IPMap.map file has been selected, the Run As Network check box will be activated: 44 If the user wishes to start the networked version, they should check the Run As Network check box, and then click the OK button. If the user clicks the Cancel button, the Network dialog will exit without starting the network version. The user will need to use the Network dialog to activate the network mode on each machine that will participate in the network Diff Genomes The Diff Genomes dialog provides access to a tool that will examine two genomes and write a file that lists the differences between the two. The Genome 1 and Genome 2 buttons will open Open File-Selection dialogs restricted to reading genome files (with the .gen extension). In this way the user can select the two genomes to be compared. However, it is possible to use Genome 1 button, in conjuction with the Files of type: drop-down of the Open File – Selection dialog, which allows a choice between .gen files and .txt files, to open a file containing a list of genome files. Currently, the tool can only properly interpret file lists generated by the Genetic Algorithm – Ancestry tool. In this mode, the Diff Genomes tool will generate a listing of the differences between all the successive genomes in an ancestry. The Help Menu The Help menu provides the same text that has been presented in the Software Documentation section of this report, as well as a few other items that will be presented here. 45 Help-Important!!! Important Hot Keys: It is essential to know how to use a few Hot Keys to control the view of the render window. These keys allow you to switch to full screen view, to change the camera position, to view the inner structure of the creatures, and to touch the creatures. There are also Hot Key that replace the functions of the buttons. These are especially useful when you view the creature in full screen mode. Active keys set by the renderer: Arrow keys - tilt and rotate the camera position + - zoom in - - zoom out F2 - toggle between smooth, flat, and wireframe rendering F4 - toggle showing of axes through the Newtonian Reference Frame, and the individual body reference frames F5 - toggle showing of a line from the light source through the origin F9 - toggle between window and full-screen viewing modes t - toggle between window and full-screen viewing modes Ctrl-Arrow keys - move the light source around Active keys set by the application: Enter - reset the creature to its initial position x - pull the creature in the positive x direction by the first and last segments a - pull the creature in the negative x direction by the first and last segments y - pull the creature in the positive y direction by the first and last segments b - pull the creature in the negative y direction by the first and last segments z - pull the creature in the positive z direction by the first and last segments 46 c - pull the creature in the negative z direction by the first and last segments g - toggle the ground plane between visible and invisible k - toggle the color effector between none, neuron, and joint r - reproduce (either random, or reproduce the selection if any) s - select the current creature for reproduction d - delete the current creature 1 - pull the first segment in a random direction 2 - pull the second segment in a random direction 3 - pull the third segment in a random direction 4 - pull the fourth segment in a random direction 5 - pull the fifth segment in a random direction 6 - pull the sixth segment in a random direction 7 - pull the seventh segment in a random direction 8 - pull the eighth segment in a random direction 9 - pull the ninth segment in a random direction 0 - pull the tenth segment in a random direction e - increase the time step p - decrease the time step The following keys are valid only if the camera is not following the creature: u - move the camera in the positive y direction n - move the camera in the negative y direction h - move the camera in the positive x direction l - move the camera in the negative x direction i - move the camera in the positive z direction 47 o - move the camera in the negative z direction The Zoo Keeping the Zoo: This program comes with a Zoo of creatures that have been previously created. You can visit the Zoo by using the File-Read menu item. This will pop up a window that shows a large number of genome files with names like "BaitFish.gen". Just select any one of these genomes and the creature will appear in the render window. You can evolve them into something else if you like! If you have created a creature that you would like to add to the Zoo, you can save it by using the File-Save menu item, and giving the creature a name. Now you can view it again later when visiting the Zoo. Evolution If you find a creature that you like, you can evolve it into something even better! Press the Select button while your chosen creature is displayed. Notice that the radiobuttons next to the Reproduce button change from Random to Selection. Now, when you press the Reproduce button again, you will make children from your selected creature, with genetic variations! If you see a variation that you like even better, press the Select button again, and your new favorite creature will become the parent of the next generation. Genetic variations affect both the form of the body, and the form of the nervous system. So there will be variations in both form and behavior. You can select for more interesting behaviors, as well as more interesting forms. You might want to add your favorite evolved creatures to the Zoo by using the FileSave menu selection. You might also want to use creatures in the Zoo as the starting point for evolution. If you want to make random creatures again, just click the radio-button labeled Random. As long as the Random radio-button is selected, all creatures will be created at random. As long as the Selection radio-button is selected, all creatures will be the children of the last creature you selected. 48 The Circuit Tool: The Circuit tool currently exists as a separate, free-standing software. This is a temporary status during the development of this new tool. As soon as the tool is perfected, it will be integrated into the VirtualLife software. It is included with this distribution as a Circuit.exe file. The circuit dialog prompts the user to Choose a Genome for analysis. This button will open an Open File – Selection dialog restricted to files with the .log extension. The user should select a file that was generated through the Options – Log Data – Log Neural Nets – Log Phenotype facility of the Virtual Life software. After the user has chosen a log-phenotype-neural-net-file for analysis, the dialog will display the name of the file, and tell us if the creature has a global net, and tell us how many local nets exist in the body. The user is prompted to use the edit box to enter a number corresponding to the specific net that they wish to analyze. In the example above, there are 7 local nets and a global net. Therefore the user could enter values ranging from 0 to 6 to choose a local net, or a value greater than 100 (e.g. 101) to choose the global net. Once the user has specified a specific net for analysis, they can click the Create Circuit button to generate a diagram of the circuit: 49 The image above is the circuit diagram resulting from selecting circuit 0 the Ja290828 genome. In the example above, the user selects net 4 of the Ja290828 genome, and the resulting circuit is displayed below: 50 Make Darwin proud! 51 Related Publications, Web Pages, and Events Karl Sims This project is based on the work of Karl Sims, whose web page is: http://www.genarts.com/karl/. His original work with Evolved Virtual Creatures is described in two publications: "Evolving Virtual Creatures", Proceedings), July 1994, pp.15-22. K.Sims, Computer Graphics (Siggraph '94 "Evolving 3D Morphology and Behavior by Competition", K.Sims, Artificial Life IV Proceedings, ed.by Brooks & Maes, MIT Press, 1994, pp.28-39. Math Engine This project uses the MathEngine physics libraries. The main MathEngine web site is: http://www.mathengine.com, Japanese site: http://www.jp.mathengine.com/ The MathEngine site includes online documentation at: http://dev.mathengine.com. The MathEngine developer’s site includes the following documents: User Manual: http://dev.mathengine.com/Developers/SDK/FastDynamics/Docs/UserManual/index.htm Reference Manual: http://dev.mathengine.com/Developers/SDK/FastDynamics/Docs/ReferenceManual/inde x.html Physics Notes: http://dev.mathengine.com/Developers/SDK/FastDynamics/Docs/PhysicsNotes/index.ht ml Code Book: http://dev.mathengine.com/Developers/CodeBook.htm Fast Dynamics Examples: http://dev.mathengine.com/Developers/SDK/FastDynamics/Docs/UserManual/Examples. html 52 Open Source Demo: http://dev.mathengine.com/Developers/open_source_demo.htm Misc. Downloads: http://dev.mathengine.com/Developers/downloads.htm Bug Reports: http://dev.mathengine.com/Developers/bug.htm FAQ: http://dev.mathengine.com/Developers/faq_main.htm Newsgroup: http://dev.mathengine.com/Developers/newsgroup.htm Workshop on the Coevolution of Brains and Bodies http://computing.tay.ac.uk/timtaylor/cobb/ http://alife7.alife.org/workshops.shtml#Coevolution of Brains and Bodies Tim Taylor, John Hallam, Hod Lipson and Tom Ray contact:[email protected] Aim: This workshop aims to bring together researchers working on the co-evolution of brains and bodies for physically- or virtually-embodied creatures. The best known work in this field is still the seminal research by Karl Sims with his "blockies"; however, a number of research groups have (at last) now started to emulate and extend Sims' work, and the aim of this workshop is to provide the opportunity for these groups to discuss their research with others working on similar topics. The organisers also encourage the attendance of those working on the evolution of controllers for fixed-morphology and parametric-morphology creatures, to promote the discussion of the relative merits of both approaches. The main objective of the workshop is to identify the major theoretical and technological issues facing research of this nature, and to discuss possible resolutions of these issues. Theoretical issues include the genetic representation of morphologies and controllers, the sorts of controllers best suited for such systems, and the kind of evolutionary algorithm employed. Technological issues include, for virtual embodiment, the choice of physics engine, and, for physical embodiment, methods for automatically generating real robots with variable morphologies. 53 Location, Dates and Format: This workshop is part of the International Conference on Artificial Life (ALIFE7), taking place at Reed College, Portland, Oregon over 1-6 August 2000. The workshop itself will be split into two 3-hour sessions, on 2 and 3 August. The organizers wish to promote group discussion during these sessions, and to this end the time given to individual presentations (invited or submitted) will be limited. The number of participants will be limited to 30. To encourage group discussions, a list of questions for discussion will be distributed to all attendees some weeks before the workshop 54 55