Finding Juggling Pattern Transitions with Smart
Total Page:16
File Type:pdf, Size:1020Kb
Finding Juggling Transitions with Smart Engineering Systems by Curtis Miller EMgt 390 Dr. Cihan H. Dagli May 1997 Table of contents I. INTRODUCTION TO SITESWAP 3 II. PATTERN TRANSITIONS – THE PROBLEM 5 III. NEURAL NETWORK APPROACH 6 IV. GENETIC ALGORITHMS 7 A. THE INITIAL GENE POOL 7 B. THE NEXT GENERATION AND FITNESS 8 C. MATING AND MUTATION 8 V. SEARCH RESULTS 10 VI. MULTI-HAND NOTATION (MHN) 13 VII. NEURAL NETWORK SIMULATION 15 VIII. REFERENCES 17 2 I. Introduction to Siteswap Juggling has been around for many centuries as an art form. It has only been within the past fifteen years that juggling has become the interest of both scientist and mathematicians alike. It has been during this past decade that various numerical systems have developed in order to ease the explanation of various patterns to jugglers across the world. The most widely accepted notation, siteswap, was developed in 1985 by three independent people: Bruce Tiemann, Caltech; Paul Klimek, Santa Cruz; and Mike Day, Cambridge. The work of these three men eventually laid the foundation of much more mathematical formulation of the juggling time and space. The use of siteswap notation has become quite popular over recent years because of the ease of use. While it does not define more complex problems and patterns in it’s basic forms, extensions have been developed to add more robustness to the system. Patterns are first displayed using a string of integer numbers. These numbers display the number of throws necessary before that particular object will be thrown again. Each throw instance in the pattern represents an alternating hand sequence also. By using this idea, the basic three ball cascade would be denoted by: 3 3 3 3 3 3 3 3 3 3 3 3 L R L R L R L R L R L R However, to ease the use even more, one is able to only report the first period of any pattern. This would make the above pattern become [3]. The basic pattern here for N number of objects can easily be displayed by the vector [N]. This allows you to easily see how many objects are within a pattern. Patterns that are more complex and have a period greater than one (L>1), can still be easily 3 checked for object number. A simple act of finding the mean of the individual throw values will display the number of objects. A pattern that does not have an integer value for the number of objects is not feasible within the discussion of this project. While a non-integer value is sufficient for refusal, an integer value is not sufficient for acceptance. This can be seen by using the patterns [5 4 3] and [3 4 5]. While both of these have a mean of four, only the second one is a possible pattern. By finding a landing schedule for each object (a time N throws in the future), one sees that the first three objects in pattern one will land simultaneously. Without the ability to catch and throw more than one object at a time (multiplexing), this could not work. While that is possible, but not discussed here, the pattern would have to be extended to display that time instance. From this very basic introduction to siteswap, one can see the ease of use. While there are some complex mathematical roots, it is a system that requires very little math skills to use. That has been a major factor in it’s rise of popularity over the past ten years. While other systems, such as state diagrams and ladders, have been developed, they have seen little use because of the complexity and the difficulty in transferring information in those formats. 4 II . Pattern Transitions – The Problem For the past several years, it has come into question about how to find transitions between two patterns. This pursuit has led to more of a mental exercise for most jugglers. There has not been found a suitable and effective way in order to find transitions. There is currently one computer program available over the internet that will demonstrate various transitions. One drawback from the program is that the transitions are done without the user know what they are. Also, they are often not transitions that are simple or “juggler friendly.” For this project, I wanted to develop a “smart” transition engine. I was looking for something that could give the user an array of transitions. In order to ease the initial robustness problem, I decided to focus only on patterns that use the same number of objects and where no more than one can land at any given time. Another limitation that I used was that of a maximum throw value of nine. In actual juggling practice, there are few people in the world that can consistently make throws of values larger than that. There are some combinations of patterns that can be considered “steady state.” This implies that there is no transition needed. While no transition may be necessary, I felt it would be of interest to find other transitions. By doing this, one can make the pattern transitions more flashy and, hopefully, crowd pleasing. 5 III. Neural Network Approach My original approach to the transition solution was to use a neural network. I chose this for two reasons. One was that I am relatively familiar with the neural network theories. The other reason was the ability of neural networks to learn patterns and optimize solutions. From the beginning I realized this approach would require quite a lot of work. The first problem I noticed was that juggling patterns don’t all have the same periodicity. Because of that, there was no sure size for the input vectors. Even by using the concept of “dead” or inactive neurons, the system would not reach the robustness I had hoped for. A reason for that is the uncertainty in the length of the desired output vector. Since there is always more than one possible transition for two patterns, the length of the output is very crucial. For an initial pattern of period L and transition of length n, there is always a transition of length L+n. I was looking for a system that could find transitions of varying lengths in a simple and quick fashion. In an attempt to overcome this latest problem, I ventured into the workings of modular networks. These would allow me to have several smaller networks each finding a transition of a particular length. While I still feel this approach could produce sufficient results, I found myself looking into the field of genetic search algorithms. 6 IV. Genetic Algorithms The field of genetic algorithms was a new field for me, but upon some initial reading, I felt it could produce the results I was hoping to obtain. I was encouraged by the ability to create a search that does not need to be exhaustive. I had considered doing some sort of search early, but discarded the idea because of the amount of search time needed. Because I am searching for transitions from a length of zero up to the number of balls in the pattern, the searches became exponentially larger. For each search, there are 1Ex possibilities (x is the transition length), because possible throw values range from zero to nine. While these times are short for lengths of zero and one, the times for longer lengths are costly in time. A. The Initial Gene Pool The genetic search begins with a generation of transitions that are random integers in the given length. The size of the generation effects the search time in two ways. First, a small generation will shorten the search time, but not require more generations to cover the set. Second, a larger generation increases search time, but covers a larger range of transitions faster. Immediately each of these first generation transitions are tested to see if they work with the two patterns entered. If one of these work, the value will be returned to the program and the search will be called again for the next search length. If there are none of the first generation transitions that work, we will need to create the next generation. 7 B. The Next Generation and Fitness Each consecutive generation goes through what is called a mating process. During this time, the previous generation is given a fitness value that is used to select which transitions will be used to mate. The fitness function quickly became an interesting problem within itself. Here is where I put down the books and picked up my juggling balls. I quickly went through several of the tricks that I knew to try and see what transitions I use. Next, I sat down with a large list of patterns and tried to find a couple of transitions on my own. From doing this I noticed that most transitions have throw values that are close to that of the number of objects within the pattern. I used this observation to construct a discrete probability function for each throw value and object number being used. The values used for the fitness function can be seen below in the search results section. After calculating the fitness values for the previous generation, the values are normalized so they sum to one. Next, random numbers are selected and the transition that had it’s value in that range was chosen for mating. After the next generation size is complete, the mating of transitions actually occur. C. Mating and Mutation The mating function uses two separate random vectors.